我只想用Struts2 拦截器 完成用户没有登录就返回登录页面的操作

开灰机撞猪 2013-07-24 03:37:02
配置文件
<struts>
<package name="worker" extends="json-default">

<!-- <interceptors> -->
<!--定义权限检查拦截器 -->
<!-- <interceptor name="userInterceptor" class="yuan.interceptor.UserInterceptor"> -->
<!-- </interceptor> -->

<!-- 定义拦截器栈 -->
<!-- <interceptor-stack name="myDefaultStack"> -->
<!-- 定义拦截器中拦截的方法 -->
<!-- <interceptor-ref name="userInterceptor"> -->
<!-- <param name="includeMethod">login</param> -->
<!-- </interceptor-ref> -->
<!-- <interceptor-ref name="defaultStack"/> -->
<!-- </interceptor-stack> -->
<!-- </interceptors> -->

<!-- <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref> -->
<!-- <global-results> -->
<!-- <result name="login">/user/login.jsp</result> -->
<!-- </global-results> -->

<action name="workerAction" class="yuan.action.WorkerAction">
<!-- <interceptor-ref name="myDefaultStack"></interceptor-ref> -->
<result name="list" type ="redirectAction">workerAction!findAll</result>
<result name="success" >workerList.jsp</result>
<result name="update" >workerUpdate.jsp</result>
<result name="error">error.jsp</result>
</action>


<action name="userAction" class="yuan.action.UserAction">
<!-- <interceptor-ref name="myDefaultStack"></interceptor-ref> -->
<result name="login_ok" type="redirectAction">workerAction!findAll</result>
<result name="register_ok">../user/login.jsp</result>
<result name="check" type="json">
<param name="root">ok</param>
</result>
<result name="error">../user/login.jsp</result>
</action>


</package>
</struts>



拦截处理文件
public class UserInterceptor extends AbstractInterceptor{

@Override
public String intercept(ActionInvocation invocation) throws Exception {
//用拦截器的方法取得Session
Map map = invocation.getInvocationContext().getSession();

//判断session中是否存在用户登录的信息,如果没有就返回到登录页面
if(map.get("user") == null){
return "login";
}else{
return invocation.invoke();
}
}


}
帮我看一下那里设置的不对,需要怎么改进。谢谢。
...全文
419 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ca_hen0330 2016-02-29
  • 打赏
  • 举报
回复
怎么连登陆的页面也拦截了,,这样用户永远登不上
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
引用 12 楼 Bumpking 的回复:
引用 8 楼 hhwyyda 的回复:
[quote=引用 6 楼 Bumpking 的回复:] 没进拦截器还是取不到值?
用这个拦截之后 其它JS 验证什么的都不好使了 登录程序也登录不上去
这么神奇?拦截器应该不会强大到影响js验证吧?在里面打个断点看看呗,如果能进入拦截器的话 就看看session里面是不是有值,是不是成功return到指定的result里?[/quote]拦截去肯定能进去,但是我在注册的时候 JS有失去焦点的事件 当失去焦点的时候 页面就错位了 出现了 登录界面
Bumpking 2013-07-24
  • 打赏
  • 举报
回复
引用 8 楼 hhwyyda 的回复:
引用 6 楼 Bumpking 的回复:
没进拦截器还是取不到值?
用这个拦截之后 其它JS 验证什么的都不好使了 登录程序也登录不上去
这么神奇?拦截器应该不会强大到影响js验证吧?在里面打个断点看看呗,如果能进入拦截器的话 就看看session里面是不是有值,是不是成功return到指定的result里?
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
引用 10 楼 AA5279AA 的回复:
[quote=引用 2 楼 hhwyyda 的回复:]
<!--                 <interceptor-stack name="myDefaultStack"> -->                     <!-- 定义拦截器中拦截的方法 --> <!--                     <interceptor-ref name="userInterceptor"> --> <!--                         <param name="includeMethod">login</param> --> <!--                     </interceptor-ref> --> <!--                       <interceptor-ref name="defaultStack"/> --> <!--                 </interceptor-stack> --> 
这里的 param 什么作用?
<interceptor-ref name=" "> <param name="exculdeMethods"></param> <param name="includeMethods"></param> </interceptor-ref> exculdeMethods:是不被拦截的方法,如果有多个以逗号分隔。 includeMethods:需要被拦截的方法,如果有多个以逗号分隔。 [/quote]完成我的功能我需要拦截什么方法?
失落夏天 2013-07-24
  • 打赏
  • 举报
回复
引用 2 楼 hhwyyda 的回复:
<!--                 <interceptor-stack name="myDefaultStack"> -->                     <!-- 定义拦截器中拦截的方法 --> <!--                     <interceptor-ref name="userInterceptor"> --> <!--                         <param name="includeMethod">login</param> --> <!--                     </interceptor-ref> --> <!--                       <interceptor-ref name="defaultStack"/> --> <!--                 </interceptor-stack> --> 
这里的 param 什么作用?
<interceptor-ref name=" "> <param name="exculdeMethods"></param> <param name="includeMethods"></param> </interceptor-ref> exculdeMethods:是不被拦截的方法,如果有多个以逗号分隔。 includeMethods:需要被拦截的方法,如果有多个以逗号分隔。
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
引用 4 楼 hhwyyda 的回复:
引用 3 楼 AA5279AA 的回复:
登陆的时候有把用户加到同一个session里面么?
加了
<param name="includeMethod">login</param>这行代码 什么作用?
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
引用 6 楼 Bumpking 的回复:
没进拦截器还是取不到值?
用这个拦截之后 其它JS 验证什么的都不好使了 登录程序也登录不上去
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
引用 3 楼 AA5279AA 的回复:
登陆的时候有把用户加到同一个session里面么?
定义拦截方法的时候 里面的param 中的内容有什么作用?
Bumpking 2013-07-24
  • 打赏
  • 举报
回复
没进拦截器还是取不到值?
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
能起到拦截的作用 但是 好像每个操作都拦截 就连JS里面的操作都拦截
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
引用 3 楼 AA5279AA 的回复:
登陆的时候有把用户加到同一个session里面么?
加了
失落夏天 2013-07-24
  • 打赏
  • 举报
回复
登陆的时候有把用户加到同一个session里面么?
开灰机撞猪 2013-07-24
  • 打赏
  • 举报
回复
<!--                 <interceptor-stack name="myDefaultStack"> -->                     <!-- 定义拦截器中拦截的方法 --> <!--                     <interceptor-ref name="userInterceptor"> --> <!--                         <param name="includeMethod">login</param> --> <!--                     </interceptor-ref> --> <!--                       <interceptor-ref name="defaultStack"/> --> <!--                 </interceptor-stack> --> 
这里的 param 什么作用?
小丑哥_V5 2013-07-24
  • 打赏
  • 举报
回复
然后呢...

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧