我只想用Struts2 拦截器 完成用户没有登录就返回登录页面的操作
配置文件<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();
}
}
}
--------------------编程问答--------------------
然后呢... --------------------编程问答--------------------
<!-- <interceptor-stack name="myDefaultStack"> --> <!-- 定义拦截器中拦截的方法 --> <!-- <interceptor-ref name="userInterceptor"> --> <!-- <param name="includeMethod">login</param> --> <!-- </interceptor-ref> --> <!-- <interceptor-ref name="defaultStack"/> --> <!-- </interceptor-stack> -->
这里的 param 什么作用? --------------------编程问答-------------------- 登陆的时候有把用户加到同一个session里面么? --------------------编程问答-------------------- 加了 --------------------编程问答-------------------- 能起到拦截的作用 但是 好像每个操作都拦截 就连JS里面的操作都拦截 --------------------编程问答-------------------- 没进拦截器还是取不到值? --------------------编程问答-------------------- 定义拦截方法的时候 里面的param 中的内容有什么作用? --------------------编程问答-------------------- 用这个拦截之后 其它JS 验证什么的都不好使了 登录程序也登录不上去 --------------------编程问答-------------------- <param name="includeMethod">login</param>这行代码 什么作用? --------------------编程问答--------------------
<!-- <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:需要被拦截的方法,如果有多个以逗号分隔。 --------------------编程问答--------------------
<!-- <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:需要被拦截的方法,如果有多个以逗号分隔。
用这个拦截之后 其它JS 验证什么的都不好使了 登录程序也登录不上去
没进拦截器还是取不到值?
这么神奇?拦截器应该不会强大到影响js验证吧?在里面打个断点看看呗,如果能进入拦截器的话
就看看session里面是不是有值,是不是成功return到指定的result里? --------------------编程问答--------------------
用这个拦截之后 其它JS 验证什么的都不好使了 登录程序也登录不上去
没进拦截器还是取不到值?
这么神奇?拦截器应该不会强大到影响js验证吧?在里面打个断点看看呗,如果能进入拦截器的话
就看看session里面是不是有值,是不是成功return到指定的result里?
补充:Java , Java相关