关于Struts2拦截器的使用,有点问题,帮我看一看!!我的自定义拦截器类是这样写的public class SoougoIntercepte extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception {
Map session = ActionContext.getContext().getSession();
Users user = (Users) session.get("nonceuser");
if (user == null) {
return "login";
} else {
return invocation.invoke();
}
}
}我在struts.xml这样配置拦截器
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="industryinfo" extends="struts-default">
<interceptors>
<interceptor name="checkLogin" class="soougo.com.web.intercepte.SoougoIntercepte" />
<interceptor-stack name="mystack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="checkLogin" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mystack" />
<global-results>
<result name="login">/consumerdirectory/userfunction/UserLogin.jsp</result>
</global-results>
<!---以下这个action是我用来处理登录的------------------->
<action name="ActionUserLogins" class="soougo.com.web.user.ActionUserLogin">
<result name="success" type="redirect">/consumerdirectory/userfunction/UserWelcome.jsp</result>
<result name="error" type="redirect">/consumerdirectory/userfunction/UserLogin.jsp</result>
<param name="savepathid">1</param>
<interceptor-ref name="defaultStack"/>
</action>
<!------------------其它Action配置类似以下------------------------------->
<action name="RequisitionBrowses" class="soougo.com.web.requisition.RequisitionBrowse">
<result name="success" type="redirect">/consumerdirectory/adispose/RequisitionBrowse.jsp?pageindex=${pageindex}</result>
<result name="error" type="redirect">/supervisordirectory/industrymanager/errorinfo.jsp</result>
<param name="cpageindex">0</param>
<param name="maxrows">8</param>
</action>
<action name="ImageshowBrowses" class="soougo.com.web.requisition.ImageshowBrowse">
<result name="success" type="redirect">/consumerdirectory/adispose/ImageshowListbrowse.jsp?cpageindex=${cpageindex}&pageindexs=${pageindexs}&adkey=${adkey}</result>
<result name="error" type="redirect">/supervisordirectory/industrymanager/errorinfo.jsp</result>
<param name="cpageindex">0</param>
<param name="maxrows">8</param>
</action>
<action........></action> <action........></action> <action........></action> <action........></action> ...................
</package>
</struts>我的目标是,当用户Session为空,也就是说没有登录时,系统总是重新定向到登录界面,但是现在我的问题是,系统不能完成重定向到登录界面,也就是ActionUserLogins,如果不配置其使用struts2默认的拦截器也像能起到拦截的作用,高手帮我看一看,我的xml应该怎么配置
Map session = ActionContext.getContext().getSession();
Users user = (Users) session.get("nonceuser");
if (user == null) {
return "login";
} else {
return invocation.invoke();
}
}
}我在struts.xml这样配置拦截器
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="industryinfo" extends="struts-default">
<interceptors>
<interceptor name="checkLogin" class="soougo.com.web.intercepte.SoougoIntercepte" />
<interceptor-stack name="mystack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="checkLogin" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mystack" />
<global-results>
<result name="login">/consumerdirectory/userfunction/UserLogin.jsp</result>
</global-results>
<!---以下这个action是我用来处理登录的------------------->
<action name="ActionUserLogins" class="soougo.com.web.user.ActionUserLogin">
<result name="success" type="redirect">/consumerdirectory/userfunction/UserWelcome.jsp</result>
<result name="error" type="redirect">/consumerdirectory/userfunction/UserLogin.jsp</result>
<param name="savepathid">1</param>
<interceptor-ref name="defaultStack"/>
</action>
<!------------------其它Action配置类似以下------------------------------->
<action name="RequisitionBrowses" class="soougo.com.web.requisition.RequisitionBrowse">
<result name="success" type="redirect">/consumerdirectory/adispose/RequisitionBrowse.jsp?pageindex=${pageindex}</result>
<result name="error" type="redirect">/supervisordirectory/industrymanager/errorinfo.jsp</result>
<param name="cpageindex">0</param>
<param name="maxrows">8</param>
</action>
<action name="ImageshowBrowses" class="soougo.com.web.requisition.ImageshowBrowse">
<result name="success" type="redirect">/consumerdirectory/adispose/ImageshowListbrowse.jsp?cpageindex=${cpageindex}&pageindexs=${pageindexs}&adkey=${adkey}</result>
<result name="error" type="redirect">/supervisordirectory/industrymanager/errorinfo.jsp</result>
<param name="cpageindex">0</param>
<param name="maxrows">8</param>
</action>
<action........></action> <action........></action> <action........></action> <action........></action> ...................
</package>
</struts>我的目标是,当用户Session为空,也就是说没有登录时,系统总是重新定向到登录界面,但是现在我的问题是,系统不能完成重定向到登录界面,也就是ActionUserLogins,如果不配置其使用struts2默认的拦截器也像能起到拦截的作用,高手帮我看一看,我的xml应该怎么配置
解决方案 »
- 怎么让eclipse运行到短点时自动调试
- 一句sql语句能实现这种功能吗?急
- 关于tomcat context.xml配置问题
- 大家有谁知道关于com.ms.com.IUnknown的问题?
- 请问:谁有用java写的根据逻辑关系生成图形的例子!!!
- tomcat下面的jsp页面不报错误,对于错误的jsp代码,在页面上没有任何错误提示,显示空白页面
- 急!!在Tomcat中连接Access2000,是否要将access的*.jar驱动放到lib文件夹下啊???
- 如何访问LINUX下的Oracle数据库
- 在jsp中可以调用ActiveX组件吗?
- sonatype nexus问题。。求助
- iBatis 动态查询遇到问题~
- java从Oracle中查出的数据转换成Excel显示的问题
或者(我记得)直接取得请求的struts类的name就是action name="ActionUserLogins"
硬编码判断下是否是登陆请求,是的话不执行拦截器后续逻辑,
这个问题以前遇到过,手头现在没源码贴给lz了,没用自己的本。
public class AuthorityInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx=invocation.getInvocationContext();
User user=(User)ctx.getSession().get("userInfo");
if(user==null){
return "notLogin";
}
return invocation.invoke();
}
}
把这句<default-interceptor-ref name="mystack" /> 去掉吧。