Struts2 拦截器—拦截action
对于拦截器的基本使用这里我就懒得打字了,我这里就讲下如何用 Struts2 拦截器 拦截action。这是我个人的想法,如果有什么不对的,或者你们有什么更好的方法。请多多留言!
拦截器的默认拦截的方法参数是:includeMethods(要拦截的方法) 和 excludeMethods(不需要拦截的方法),多个的时候,用逗号分开;
但,现实中,有些时候。我们还是需要设置有3 个类的所有方法都不需要拦截和4个方法不需要拦截,那么如果使用excludeMethods 的话,就得把 3 个类中的所有方法都列出来。当然如果少就列列就算了,如果多呢。不就麻烦了。所以。下面我们将讨论如何拦截 类 这个级别的请求。
一、在配置文件中修改下:
- <interceptors>
- <interceptor name="mainSession" class="net.zy.interceptor.MainSessionInterceptor"></interceptor>
- <interceptor-stack name="mainSessionStack">
- <interceptor-ref name="mainSession">
- <param name="excludeMethods">login,logOut</param>
- <!-- 自定义参数 excludeActions -->
- <param name="excludeActions">sms_,main_</param>
- </interceptor-ref>
- <!-- 默认拦截器 -->
- <interceptor-ref name="defaultStack"></interceptor-ref>
- </interceptor-stack>
- </interceptors>
- <!-- 设置未默认的拦截器 -->
- <default-interceptor-ref name="mainSessionStack"></default-interceptor-ref>
<interceptors>
<interceptor name="mainSession" class="net.zy.interceptor.MainSessionInterceptor"></interceptor>
<interceptor-stack name="mainSessionStack">
<interceptor-ref name="mainSession">
<param name="excludeMethods">login,logOut</param>
<!-- 自定义参数 excludeActions -->
<param name="excludeActions">sms_,main_</param>
</interceptor-ref>
<!-- 默认拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 设置未默认的拦截器 -->
<default-interceptor-ref name="mainSessionStack"></default-interceptor-ref>
在配置文件中,添加自定义参数。excludeActions
二、在拦截器类中,添加 excludeActions 成员变量,并且提供get,set方法,struts2会自定给我们set参数进来。
- package net.zy.interceptor;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import net.zy.models.SysUsers;
- import net.zy.models.VipBean;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionInvocation;
- import com.opensymphony.xwork2.interceptor.Interceptor;
- /**
- * 拦截器
- *
- * @author 妞见妞爱
- */
- public class MainSessionInterceptor implements Interceptor{
- private String excludeActions;
- private String excludeMethods;
- public String getExcludeMethods() {
- return excludeMethods;
- }
- public void setExcludeMethods(String excludeMethods) {
- this.excludeMethods = excludeMethods;
- }
- public String getExcludeActions() {
- return excludeActions;
- }
- public void setExcludeActions(String excludeActions) {
- this.excludeActions = excludeActions;
- }
- public void destroy() {
- // TODO Auto-generated method stub
- }
- public void init() {
- // TODO Auto-generated method stub
- }
- public String intercept(ActionInvocation invocation) throws Exception {
- HttpServletRequest request = ServletActionContext.getRequest();
- HttpSession session = request.getSession();
- // 获取请求的action名称
- String actionName = invocation.getInvocationContext().getName();
- // 获取action后附带参数
- //Map parameters = invocation.getInvocationContext().getParameters();
- //配置文件中 排除的 action
- String [] excludeAction = excludeActions.split(",");
- for (int i = 0; i < excludeAction.length; i++) {
- if (actionName.startsWith(excludeAction[i])) {
- return invocation.invoke();
- }
- }
- //配置文件中 排除的 Method
- String [] excludeMethod = excludeMethods.split(",");
- for (int i = 0; i < excludeMethod.length; i++) {
- if (actionName.endsWith(excludeMethod[i])) {
- return invocation.invoke();
- }
- }
- SysUsers users = (SysUsers) session.getAttribute("user");
- if (users != null) {
- return invocation.invoke();
- }
- return "Timeout";
- }
- }
package net.zy.interceptor; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import net.zy.models.SysUsers;
import net.zy.models.VipBean;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; /**
* 拦截器
*
* @author 妞见妞爱
*/
public class MainSessionInterceptor implements Interceptor{ private String excludeActions;
private String excludeMethods; public String getExcludeMethods() {
return excludeMethods;
} public void setExcludeMethods(String excludeMethods) {
this.excludeMethods = excludeMethods;
} public String getExcludeActions() {
return excludeActions;
} public void setExcludeActions(String excludeActions) {
this.excludeActions = excludeActions;
} public void destroy() {
// TODO Auto-generated method stub } public void init() {
// TODO Auto-generated method stub } public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(); // 获取请求的action名称
String actionName = invocation.getInvocationContext().getName();
// 获取action后附带参数
//Map parameters = invocation.getInvocationContext().getParameters(); //配置文件中 排除的 action
String [] excludeAction = excludeActions.split(",");
for (int i = 0; i < excludeAction.length; i++) {
if (actionName.startsWith(excludeAction[i])) {
return invocation.invoke();
}
} //配置文件中 排除的 Method
String [] excludeMethod = excludeMethods.split(",");
for (int i = 0; i < excludeMethod.length; i++) {
if (actionName.endsWith(excludeMethod[i])) {
return invocation.invoke();
}
} SysUsers users = (SysUsers) session.getAttribute("user");
if (users != null) {
return invocation.invoke();
} return "Timeout";
} }
嘿嘿。。。就这样了....简单点。。。。。
Struts2 拦截器—拦截action的更多相关文章
- Struts自定义拦截器&拦截器工作原理
0.拦截器的调用原理: 拦截器是一个继承了序列化接口的普通接口.其工作原理是讲需要被拦截的对象作为参数传到intercept()方法内,在方法内部对此对象进行处理之后再执行原方法.intercept( ...
- 防止SpringMVC拦截器拦截js等静态资源文件
SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决: 方案一.拦截器中增加针对静 ...
- Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断
项目登录流程如下 用户进入前端登录界面,输入账号密码等,输入完成之后前端发送请求到后端(拦截器不会拦截登录请求),后端验证账号密码等成功之后生成Token并存储到数据库,数据库中包含该Token过期时 ...
- Springboot通过拦截器拦截请求信息收集到日志
1.需求 最近在工作中遇到的一个需求,将请求中的客户端类型.操作系统类型.ip.port.请求方式.URI以及请求参数值收集到日志中,网上找资料说用拦截器拦截所有请求然后收集信息,于是就开始了操作: ...
- Struts2使用自定义拦截器导致Action注入参数丢失、url参数
写struts2项目时发现前台超链接中的参数无法传到action, 所有带有传递参数的均无法正常使用了,在Action中所有的参数无法被注入. 后来经过debug发现其中的页面都要先经过拦截器,而后再 ...
- Struts2 自定义拦截器时Action无法接收到参数
问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultS ...
- struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证
struts2.xml 内容 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...
- struts2 权限拦截器 拦截没有登陆的请求
假设有这样的登陆: ActionContext.getContext().getSession().put("UserMsg", userMsg); 则可以这样判断是否登陆: im ...
- 在JSP中常见问题,防止SpringMVC拦截器拦截js等静态资源文件的解决方案
方案一.拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/* ...
随机推荐
- 存储管理(一):openfiler介绍及存储理解
openfiler是一个免费的.开源的基于浏览器的网络存储产品,支持基于文件的的网络连接存储(NAS)和基于块的存储区域网(SAN).支持的协议有smb,cifs,nfs,http/dev和ftp. ...
- oracle database 12c R1 安装文档
INSTALLORACLE DATABASE 12C 完整的安装文档下载地址: http://download.csdn.net/detail/royjj/5665869 OS:ORALCE LINU ...
- XP下採用DirectShow採集摄像头
转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家提出意见,一起讨论! 须要演示样例源代码的请独自联系我. 前提: 摄像头能正常工作.摄像头有创建di ...
- Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket
Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket 特征 ...
- 【NIO】dawn在buffer用法
网络编程,buffer它用于数据传输到网络上的集线器应用程序,不用说,一个重要的线.提到buffer我不能说什么零拷贝,buffer什么内存管理,在dawn在,基于directbuffer再次能够实现 ...
- WPF 数字小键盘Themes
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...
- POJ3279 Catch That Cow(BFS)
本文来源于:http://blog.csdn.net/svitter 意甲冠军:给你一个数字n, 一个数字k.分别代表主人的位置和奶牛的位置,主任能够移动的方案有x+1, x-1, 2*x.求主人找到 ...
- 算法战斗:给定一个号码与通配符问号W,问号代表一个随机数字。 给定的整数,得到X,和W它具有相同的长度。 问:多少整数协议W的形式和的比率X大?
如果说: 给定一个号码与通配符问号W,问号代表一个随机数字. 给定的整数,得到X,和W它具有相同的长度. 问:多少整数协议W的形式和的比率X大? 进格公式 数据的多组,两排各数据的,W,第二行是X.它 ...
- HDU 1420 Prepared for New Acmer【中国剩余定理】
/* 解决问题的思路:中国剩余定理,还要注意的是数据的类型,要使用__int64位 解决人:lingnichong 解决时间:2014-08-30 06:56:35 :简单题 */ Prepared ...
- .net 一些常用的工具来破解
在.net 我们经常提到破 Reflector\SimpleAssemblyExplorer和CFF Explore几个工具. 我们有一个非常简单的Windows Form方案,例如,说他们如何使用 ...