dcs206 2016-05-16 03:27 采纳率: 0%
浏览 1210

struts实现拦截登录问题

ajax提交数据到后台---》struts分配请求映射到具体的action--》action返回result json字符串并且设置session--》ajax的success解析json 成功就跳转到拦截action去获取session--》用户名密码正确就返回“login”跳转到main.html的路径

这里可以实现跳转。。。但是以上的流程在拦截器里面获取不到session,但是我自己写一个简单的跳转action到具体页面后,在去进入这个action方法是可以获取到这个session 的

请问各位大神,我这样实现这个拦截有什么问题吗,还是session 的设置必须是完成一个完整的会话,我想不经过拦截器直接跳转到action,但是这样不是和直接访问一个jsp资源是一样的吗,拦截器不就没啥用处了吗大神来解答解答。。。

login.java

if(password.equals(user.getPwd())){
ActionContext.getContext().getSession().put("userName", userName);
ActionContext.getContext().getSession().put("passWord", password);
map.put("result", "success");
JSONObject json = JSONObject.fromObject(map);
result=json.toString();
System.out.println("成功返回数据");
return "success";
}

                ajax的success

                var result = d.result;
            //返回success则自动跳转到主界面
            if (result == "success") {
                location.href = "login";
            }
        }

        srtuts的跳转
        <package name=""  namespace="/" extends="default">
<action name="login" class="com.zjm.interceptor.testLogin">
<interceptor-ref name="sessionCheckStack"/>
</action>
拦截器
<global-results>
<!-- 配置tocken的invalid.tocken的返回试图,即当页面重复提交,页面将自动转到error.jsp -->
<result name="invalid.token">/error.jsp</result>
<result name="backhome"  type="redirectAction">IndexAction</result>
<result name="login">/WEB-INF/main.html</result>
<result name="noLogin">/login.html</result>
</global-results>

        拦截器内获取session代码
            String userName=(String)session.get("userName");
    String passWord=(String)session.get("passWord");
    System.out.println(userName+"  "+passWord);
    if(userName!=null&&passWord!=null){
        User user=sysUserService.findOneUser(userName);
        String result=user!=null?(passWord.equals(user.getPwd())?Action.LOGIN:"noLogin"):"noLogin";
        return result;
        }

这一套流程下来输出的session为null

我简单写了一个action跳转到一个空页面,在action里面设置了sessio,在成功跳转到一个页面以后再去调用这个拦截器里面的方法是可以输出这个session里面的内容

  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-07 17:07
    关注

    拦截登录问题
    ajax提交数据到后台---》struts分配请求映射到具体的action--》action返回result json字符串并且设置session--》ajax的success解析json 成功就跳转到拦截action去获取session--》用户名密码正确就返回“login”跳转到main.html的路径
    这里可以实现跳转。。。但是以上的流程在拦截器里面获取不到session,但是我自己写一个简单的跳转action到具体页面后,在去进入这个action方法是可以获取到这个session 的
    请问各位大神,我这样实现这个拦截有什么问题吗,还是session 的设置必须是完成一个完整的会话,我想不经过拦截器直接跳转到action,但是这样不是和直接访问一个jsp资源是一样的吗,拦截器不就没啥用处了吗大神来解答解答。。。
    login.java
    if(password.equals(user.getPwd())){
    ActionContext.getContext().getSession().put("userName", userName);
    ActionContext.getContext().getSession().put("passWord", password);
    map.put("result", "success");
    JSONObject json = JSONObject.fromObject(map);
    result=json.toString();
    System.out.println("成功返回数据");
    return "success";
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?