Struts2的拦截器使用
来源:互联网 发布:c语言调用cmd命令 编辑:程序博客网 时间:2024/04/29 21:31
在struts.xml文件里,配置拦截器使用如下:
<package name="default-dgpartybuild" extends="default"> <!-- 校验当前用户是否加入党建系统 --> <interceptors><interceptor name="dgpartybuildAuthor"class="net.zdsoft.dgpartybuild.interceptor.AuthorizationIntegerceptor" /><interceptor-stack name="isPartyMemberStack"><interceptor-ref name="permissioncheckStack" /><interceptor-ref name="dgpartybuildAuthor" /></interceptor-stack></interceptors><default-interceptor-ref name="isPartyMemberStack" /> <global-results> <result name="noauthority" type="freemarker">/dgpartybuild/common/nopermission.ftl</result></global-results></package>
在AuthorizationIntegerceptor拦截器类中使用如下:
public class AuthorizationIntegerceptor extends AbstractInterceptor {/** * */private static final long serialVersionUID = -7438527351428709633L;private DgPbMemberInfoService dgPbMemberInfoService;@Overridepublic String intercept(ActionInvocation arg0) throws Exception {LoginInfo loginInfo = (LoginInfo) ActionContext.getContext().getSession().get(BaseConstant.SESSION_LOGININFO);DgPbMemberInfo dgPbMemberInfo = dgPbMemberInfoService.getDgPbMemberInfoById(loginInfo.getUser().getTeacherid());if(dgPbMemberInfo == null || (!dgPbMemberInfo.getPartyApplicationState().equals(DgPartyBuildConstant.APPLACTION_STATUS_PROBATIONARY) && !dgPbMemberInfo.getPartyApplicationState().equals(DgPartyBuildConstant.APPLACTION_STATUS_FORMAL))) {return "noauthority";}return arg0.invoke();}public void setDgPbMemberInfoService(DgPbMemberInfoService dgPbMemberInfoService) {this.dgPbMemberInfoService = dgPbMemberInfoService;}}
使用这个拦截器时,只有继承这个就行了,如下:
<!--入党申请人员管理 --><package name="dgpartybuild-joinparty" extends="default-dgpartybuild" namespace="/dgpartybuild/joinparty"> <!-- 推优登记 --> <action name="memberPushExcellect" class="net.zdsoft.dgpartybuild.action.DgPbPushExcellectAction"> <result name="success" type="freemarker">memberPushExcellectAdmin.ftl</result> </action></package>
拦截器的其它总结:
一、编写拦截器
1、 实现接口com.opensymphony.xwork2.Intercepter(或继承com.opensymphony.xwork2.AbstractInterceptor)
2、 在interceptor方法中加入如下代码:
public String intercept(ActionInvocation arg0)throws Exception {
System.out.println("Before"); //在Action之前调用
String result = arg0.invoke(); //如果此拦截器之后还有拦截器,则调用下个拦截器的intercept方法
//如果之后没有了拦截器,则调用Action的execute方法
System.out.println("After");
return result;
}
二、在Struts.xml中配置拦截器
1、 在struts.xml中声明拦截器和拦截器Stack,拦截器Stack可以包括多个拦截器和其他Stack。
<interceptors>
<!-- 拦截器 -->
<interceptorname="MyInterceptor"class="com.test.interceptor.MyInterceptor"></interceptor>
<!-- 拦截器Stack -->
<interceptor-stackname="validationWorkflowStack">
<interceptor-refname="basicStack"/>
<interceptor-refname="validation"/>
<interceptor-refname="workflow"/>
</interceptor-stack>
</interceptors>
2、 将拦截器配置到单个Action中,只拦截此Action中的execute方法。
<actionname="register"class="com.test.action.RegisterAction"method="test">
<resultname="success">/success.jsp</result>
<resultname="input">/register2.jsp</result>
<interceptor-refname="MyInterceptor"></interceptor-ref>
</action>
3、 将拦截器配置到所有Action中,拦截所有Action中的execute方法。
<default-interceptor-refname="MyInterceptor"></default-interceptor-ref>
对已经单独配置了拦截器的Action不起作用
三、拦截Action中指定的方法
1、 继承com.opensymphony.xwork2.interceptor.MethodFilterInterceptor。
2、 因为是针对某个Action的方法,所以只能配置在Action内部
<actionname="register"class="com.test.action.RegisterAction"method="test">
<resultname="success">/success.jsp</result>
<resultname="input">/register2.jsp</result>
<interceptor-refname="MyInterceptor">
<param name="includeMethod">test,execute</param><!--拦截text和execute方法,方法间用逗号分隔 -->
<paramname="excludeMethod">myfun</param><!--不拦截myfun方法 -->
</interceptor-ref>
</action>
四、struts2拦截器的interceptor方法中,参数ActionInvocation可用来获取页面用户输入的信息。
public String intercept(ActionInvocation arg0) throws Exception {
Map map = arg0.getInvocationContext().getSession();
if(map.get("user") == null) {
return Action.LOGIN;
} else {
return arg0.invoke();
}
}
- Struts2拦截器的使用
- Struts2拦截器的使用
- struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2的拦截器使用
- struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- STRUTS2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用
- Android游戏开发之多线程的操作方式(二十六)
- 黑马程序员——C语言内存剖析
- Kaggle Titanic: Machine Learning from Disaster
- Ubuntu 12.04 64 位版本运行32位可执行文件
- 运行Spring-security自带的示例
- Struts2的拦截器使用
- http请求使用protobuf通信
- Invoke和BeginInvoke 区别,InvokeRequired和Invoke
- CentOS 7 sshd 链接被拒绝问题,端口改变成2200
- C/C++求职宝典21个重点笔记(常考笔试面试点)
- 防止ViewPager中的Fragment被销毁的方法
- VC连接SQL server2005
- 查询Oracle数据库用户表信息
- git常用命令及常见问题的解决方法