为了账号安全,请及时绑定邮箱和手机立即绑定

通过login.action访问,并输入了正确的用户名和密码也被拦截了

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";
        }
        
    }


正在回答

4 回答

如果您那些基本配置,已经Action类中的set/get方法都正确的话.我实在看不出您的代码有那些错误!

几点建议,你可以调下试试:1:把你配的拦截器放在跳转上面,即 

 <interceptor-ref name="myStack"></interceptor-ref>

<result name="login">/login.jsp</result>

2:   return 建议加引号 SUCCESS;虽然hibernate内置有返回对象了,但是保险点.        

0 回复 有任何疑惑可以回复我~
#1

知音1005 提问者

我调试了一下,发现用户名和密码都是 null 为什么没有获得用户名和密码呢,我set和get方法都有啊
2017-03-05 回复 有任何疑惑可以回复我~

问题已解决,是因为login.jsp页面的input元素忘记写name属性l,我也是在换域模型方法传参数想在name的属性加上对象名才发现根本没有name属性的,哎,最近注重逻辑代码的编写,竟然犯了这种低级错误,真是汗颜啊

0 回复 有任何疑惑可以回复我~

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方法都有啊

0 回复 有任何疑惑可以回复我~

哎,我也不知道出什么问题了,你的办法我也都试过了,好像就是判断不对,把else{
        session.put("login_error", "用户名或密码不正确");
        return "login";
    }的返回值改成 SUCCESS它又能正常跳转到manager.jsp页面啊,当然了,通过athu.action也不能跳转成功,说明就是判断不成功,session里没有username属性,难道编译器出问题了。。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

通过login.action访问,并输入了正确的用户名和密码也被拦截了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信