登录代码块
public String login(){
User existUser = userService.login(user);
if(existUser==null){
//登录失败
this.addActionError("登录失败:用户名密码错误或者用户未激活");
System.out.println("login");
return LOGIN;
}else{
//登录成功
// 将用户的信息存入session
ServletActionContext.getRequest().getSession()
.setAttribute("existUser", existUser);
//页面的跳转
return "loginSuccess";
}
}
Spring的action配置
<!--Action的配置 ======================================= -->
<bean id="indexAction" class="zjsr.zyf.shop.index.action.indexAction" ></bean>
<bean id="userAction" class="zjsr.zyf.shop.user.action.UserAction" >
<property name="userService" ref="userService"></property>
</bean>
原因:ServletActionContext.getRequest().getSession()
.setAttribute("existUser", existUser);
(输入做的用户名或密码时,会得到一个空对象,空对象保存在session中,只要页面不关,session中的空对象就一直会起作用)
Spring默认是单例模式
spring 默认scope 是单例模式
这样只会创建一个Action对象
每次访问都是同一个Action对象,数据不安全
struts2 是要求 每次次访问 都对应不同的Action
scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象
所以需要加scope="prototype"