Struts2的拦截器
来源:互联网 发布:slmmsk软件下载 编辑:程序博客网 时间:2024/04/28 19:09
拦截器是Struts2中非常核心的功能,有很多常用的拦截器如:staticParam、params、servletConfig、modelDriven、conversionError、validation 等
struts-default.xml文档中有一个package叫做struts-default,其中定义了很多的拦截器,我们使用的默认是defaultStack中定义的那些。
明确:过滤器和拦截器。过滤器和拦截器实现的功能是类似的,只是概念上不同。一个是Servlet规范中,一个是Struts2框架中的。使用它们可以实现AOP的变成思想。
1. 拦截器的编码步骤
1.1 编写一个类,继承AbstractInterceptor或者实现Interceptor接口
public class Demo1Action extends AbstractInterceptor{ public String interceptor(ActionInvocation invocation)throws Exception{ System.out.println("Demo1拦截前") String rtValue = invocation.invoke(); System.out.println("Demo1拦截后"); return trValue; }}
1.2 声明拦截器后才能使用
在struts.xml文件中
<package name="p1" extends = "struts-default"> <!-- 声明自定义的拦截器 --> <interceptor name="demo1Interceptor" class="com.zzxb.Demo1Interceptor"> </interceptor> <action name="action1" class="com.zzxb.action.Demo1Action"> <!-- 使用拦截器:一旦在动作标签中使用了interceptor-ref标签,默认的拦截器将失效 --> <interceptor-ref name="demo1Interceptor"></interceptor-ref> </action></package>
2. 过滤拦截器:能够指定拦截哪些动作,不拦截哪些动作
//检测用户是否登陆的拦截器public class LoginCheckInterceptor extends MethodFilterInterceptor{ public String doInterceptor(ActionInvocation invocation){ //判断有没有登陆 HttpSession session = ServletActionContext.getRequest().getSession(); Object obj = session.getAttribute("user"); if(obj == null){ //没有登陆 return "login"; }else{ return invocation.invoke(); } }}
<package name="default" extends="struts-default"> <interceptors> <interceptor name="loginCheck" class="com.zzxb.interceptors.LoginCheckInterceptor"></interceptor> <!-- 定义拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="loginCheck"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 把自己的mydefault搞成默认拦截器栈 --> <default-interceptor-ref name="mydefault"/></package><package name="user" extends="default"> <action name="login" class="com.zzxb.action.UserAction" method="login"> <interceptor-ref name="mydefault"> <!-- 让loginCheck拦截器不要拦截的方法:多个值用逗号分隔 --> <param name="loginCheck.excludeMethods">login</param> </interceptor-ref> <result name="login">/login.jsp</result> <result type="redirect">/index.jsp</result> </action></package>
0 0
- Struts2的拦截器
- Struts2的拦截器
- Struts2的拦截器
- struts2的拦截器
- Struts2的拦截器
- struts2的拦截器
- Struts2的拦截器
- Struts2的拦截器
- struts2的拦截器
- struts2的拦截器
- struts2的拦截器
- Struts2的拦截器
- struts2的拦截器
- Struts2的拦截器
- Struts2的拦截器
- STRUTS2的拦截器
- Struts2的拦截器
- struts2的拦截器
- MVC设计模式
- poj 2152 Fire(树形dp)
- hdu4283 You Are the One 区间DP
- mediaPlayer的使用(内存卡与内存中读取资源)
- Java输入输出流
- Struts2的拦截器
- 写了个小东西
- 数组的表示
- 内容提供者之读取手机联系人
- 备忘mybatis使用
- 并发测试以及线程监控
- Unix系统操作指令汇总
- 无聊的时候研究下小知识
- SpringMVC-Model和ModelAndView的区别