使用struts2拦截器后,获取不到表单数据
1.拦截器代码:
public String intercept(ActionInvocation invocation) throws Exception {
invocation.invoke();
ActionContext context =invocation.getInvocationContext();
//获得session
Map session = context.getContext().getSession();
String user_name = (String) session.get("user_name");
String user_password = (String) session.get("user_password");
//判断用户合法性
if(user_name == null || "".equals(user_name)) {
//返回用户登陆页面
return Action.ERROR;
} else if(user_password == null || "".equals(user_password)){
return Action.ERROR;
}
else{
//进行下一步操作,没有拦截
return invocation.invoke();
}
}
2.拦截器配置:
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="userInterceptor" class="com.mifs.interceptor.UserInterceptor"></interceptor>
</interceptors>
<action name="login" class="com.mifs.action.Login">
<result name="success" type="redirect">patientList.action</result>
<result name="error">/login.jsp</result>
<interceptor-ref name="userInterceptor"/>
</action>
</package>
3.login action代码:
public String execute() throws Exception{
UserService userService = UserServiceFactory.getServiceInstance();
User user = new User();
user.setUser_name(user_name);
user.setUser_password(user_password);
Map session = ActionContext.getContext().getSession();
session.put("user_name", user_name);
session.put("user_password", user_password);
if(userService.loginUser(user)){
return SUCCESS;
}
else{
return ERROR;
}
}
执行到login action中时,得到的user_name和user_password为null,去掉拦截器就可以得到正常值了