知音1005
2017-03-04 13:20
struts中只有名为athu的action引用了拦截器,
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 声明包 -->
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="athu" class="com.zzy.interceptor.AthuInterceptor"></interceptor>
<interceptor-stack name="myStack">
<interceptor-ref name="athu"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="athu">
<result name="success">/WEB-INF/pages/manager.jsp</result>
<result name="login">/login.jsp</result>
<interceptor-ref name="myStack"></interceptor-ref>
</action>
<action name="login" class="com.zzy.action.UserAction" method="login">
<result name="success">/WEB-INF/pages/manager.jsp</result>
<result name="login">/login.jsp</result>
</action>
</package>
</struts>
public String login(){
if("admin".equals(username)&&"admin".equals(password)){
session.put("username",username);
return SUCCESS;
}else{
session.put("login_error", "用户名或密码不正确");
return "login";
}
}
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext actionContext=ActionContext.getContext();
Map<String, Object> session=actionContext.getSession();
if(session.get("username")!=null){
String result=invocation.invoke();
return result;
}else{
return "login";
}
}
如果您那些基本配置,已经Action类中的set/get方法都正确的话.我实在看不出您的代码有那些错误!
几点建议,你可以调下试试:1:把你配的拦截器放在跳转上面,即
<interceptor-ref name="myStack"></interceptor-ref>
<result name="login">/login.jsp</result>
2: return 建议加引号 SUCCESS;虽然hibernate内置有返回对象了,但是保险点.
问题已解决,是因为login.jsp页面的input元素忘记写name属性l,我也是在换域模型方法传参数想在name的属性加上对象名才发现根本没有name属性的,哎,最近注重逻辑代码的编写,竟然犯了这种低级错误,真是汗颜啊
public String login(){
System.out.println(username);
System.out.println(password);
if("admin".equals(username)&&"admin".equals(password)){
session.put("username",username);
System.out.println(session.get("username"));
return "success";
}else{
session.put("login_error", "用户名或密码不正确");
System.out.println(session.get("login_error"));
return "login";
}
这是我的调试过程,输出结果竟然是这样的
null
null
用户名或密码不正确
为什么没有获得用户名和密码呢,我set和get方法都有啊
哎,我也不知道出什么问题了,你的办法我也都试过了,好像就是判断不对,把else{
session.put("login_error", "用户名或密码不正确");
return "login";
}的返回值改成 SUCCESS它又能正常跳转到manager.jsp页面啊,当然了,通过athu.action也不能跳转成功,说明就是判断不成功,session里没有username属性,难道编译器出问题了。。。
Struts2拦截器浅析
37975 学习 · 121 问题
相似问题