在线等!关于struts2中拦截器权限控制的问题,没登录的时候一直不跳到登录页面!
struts.xml</package><packagename="p2"extends="struts-default"><interceptors><intercep...
struts.xml
</package>
<package name="p2" extends="struts-default">
<interceptors>
<interceptor name="mylogin" class="com.sun.struts2.Interceptor"/>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="mylogin"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault"/>
<global-results>
<result name="login">/Login.jsp</result>
</global-results>
<action name="applicat_*" class="com.sun.struts2.demo.ApplicationAction" method="{1}">
<result name="success">/MyJsp.jsp</result>
</action>
</package>
拦截器代码:
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
ActionContext ctx = invocation.getInvocationContext();
Map session = ctx.getSession();
String user = (String)session.get("uName");
System.out.println("user-----------------"+user);
if (user != null){
System.out.println(user+"已登录。。。。。。。。");
return invocation.invoke();
}
ctx.put("tip", "您还没有登录!");
return Action.LOGIN;
}
在运行中,会进入到拦截器里进行拦截,但应该返回Login.jsp还是会跳到MyJsp.jsp 展开
</package>
<package name="p2" extends="struts-default">
<interceptors>
<interceptor name="mylogin" class="com.sun.struts2.Interceptor"/>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="mylogin"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault"/>
<global-results>
<result name="login">/Login.jsp</result>
</global-results>
<action name="applicat_*" class="com.sun.struts2.demo.ApplicationAction" method="{1}">
<result name="success">/MyJsp.jsp</result>
</action>
</package>
拦截器代码:
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
ActionContext ctx = invocation.getInvocationContext();
Map session = ctx.getSession();
String user = (String)session.get("uName");
System.out.println("user-----------------"+user);
if (user != null){
System.out.println(user+"已登录。。。。。。。。");
return invocation.invoke();
}
ctx.put("tip", "您还没有登录!");
return Action.LOGIN;
}
在运行中,会进入到拦截器里进行拦截,但应该返回Login.jsp还是会跳到MyJsp.jsp 展开
4个回答
2011-07-27
展开全部
必然的啊,因为你在进入登陆的Action前执行的拦截器,而这时还没有执行你的登陆方法,因此取得的username为空.
登陆拦截是拦截登陆方法以外的Action,登陆的Action千万别拦截,否则永远没办法登陆了
另外,团IDC网上有许多产品团购,便宜有口碑
登陆拦截是拦截登陆方法以外的Action,登陆的Action千万别拦截,否则永远没办法登陆了
另外,团IDC网上有许多产品团购,便宜有口碑
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
2011-07-27
展开全部
必然的啊,因为你在进入登陆的Action前执行的拦截器,而这时还没有执行你的登陆方法,因此取得的username为空.
登陆拦截是拦截登陆方法以外的Action,登陆的Action千万别拦截,否则永远没办法登陆了
另外,虚机团上产品团购,超级便宜
登陆拦截是拦截登陆方法以外的Action,登陆的Action千万别拦截,否则永远没办法登陆了
另外,虚机团上产品团购,超级便宜
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
朋友,你DEBUG看一下呀,有没有执行到Action.LOGIN?
看你这个调试的方法不对,程序中用System.out.println来高度是属于最低级的调试
建议你看看怎么用DEBUG来调试吧,这样一是快,二是不会出错
看你这个调试的方法不对,程序中用System.out.println来高度是属于最低级的调试
建议你看看怎么用DEBUG来调试吧,这样一是快,二是不会出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你有几个package?
globel-results在哪?
globel-results在哪?
追问
就一个package
/Login.jsp
有写的
追答
如果拦截到,而且配置了global-results
是可以跳转的
或许跳转到登陆页面,仍然被拦截
这样就成死循环了
你需要判断下请求页面是不是login.jsp
如果是的话则invocation.invoke()
否则再 Action.LOGIN
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询