AOP:面向切面编程(通过配置文件来指定作用到目标对象)
OOP:面向对象编程
AOP具有很好的可插拔特性,很灵活。
可用于封装共通的业务处理,之后可以通过配置作用到Action组件上。
共通的业务处理有:登录检查,日志记录,性能检测,事务处理。
1、拦截器规范
(1)必须实现Intercepter接口,实现interceptor方法。
(2)拦截器组件可以继承AbstractIntercepter类(实现了Intercepter接口)。
(3)拦截器组件可以继承MethodFilterIntercepter类(继承自AbstractIntercepter),增加了方法过滤功能(上面两种方式是拦截所有方法,这个方法可以拦截指定方法)。
2、拦截器相关配置(可参考struts-default.xml中的配置)
(1)声明
<interceptor name="拦截器名" class="包名.类名"/>
(2)引用
<interceptor-ref name="拦截器名或拦截器栈名"/>
(3)注意:当为Action组件引用了拦截器后,需要将默认的defaultStack拦截器显式引入。
3、示例
(1)示例一:记录操作日志
package xsyu.intercepter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class LoggerIntercepter extends AbstractInterceptor{
public String intercept(ActionInvocation invocation) throws Exception {
String result = invocation.invoke(); //调用后续的拦截器或者action业务方法
//记录用户操作
Map<String, Object> session = (Map<String, Object>) invocation.getInvocationContext().getSession();
//获取action名称
String actionName = invocation.getProxy().getActionName();
//获取类名
String clasName = invocation.getProxy().getAction().toString();
//获取方法名称
String methodName = invocation.getProxy().getMethod();
String user = "大碗干拌";
String msg = "用户" + user + "在" + new Date() + "执行了" + actionName + "中" + methodName + "方法";
FileWriter fw = new FileWriter("D:\\demo.log", true);
PrintWriter pw = new PrintWriter(fw);
pw.println(msg);
pw.close();
return result;
}
}
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="pack1" extends="struts-default">
<interceptors>
<interceptor name="mylogger" class="xsyu.intercepter.LoggerIntercepter"/>
</interceptors>
<global-results>
<result name="fail">/fail.jsp</result>
</global-results>
<action name="index">
<result name="success" type="redirect">/add.jsp</result>
</action>
<action name="person" class="xsyu.action.PersonAction">
<interceptor-ref name="mylogger"/>
<interceptor-ref name="defaultStack"/>
<result name="list">/index.jsp</result>
<result name="init">/update.jsp</result>
<result name="view">/view.jsp</result>
</action>
<action name="list" class="xsyu.action.ListAction">
<result name="success">/list.jsp</result>
</action>
</package>
</struts>
注意:要添加默认拦截器。
一般是写两个拦截器,第一个拦截器先判断登录,第二个拦截器再记录日志。
分享到:
相关推荐
Struts2的拦截器——Struts2拦截器的基础知识
该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
struts2——docs部分
Struts2拦截器的实现原理(csdn)————程序
struts2.X 拦截器源码
一个Struts2的核心拦截器例子教你如何在项目中怎样去使用Struts2的核心技术拦截器...
Struts2教程 Struts2教程 Struts2教程
运用struts2的拦截器技术实现的页面检测拦截非法用户饿坏指定用户注册。。。
NULL 博文链接:https://wang4717.iteye.com/blog/796941
解决Struts2中的中文乱码。该代码是用作Struts2的拦截器中
struts2常用拦截器,struts2经常用到的拦截器,熟悉熟悉
Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt
创建自己struts2拦截器,手工创建自己的拦截器实现
Struts2拦截器源程序 Struts2拦截器源程序 Struts2拦截器源程序 Struts2拦截器源程序 Struts2拦截器源程序
这是一个关于struts2的类型转换 以及 拦截器 还有校验的例子
struts2主要的几个包
struts2上传单个文件及多个文件,strus2拦截器的使用,里面有个user用户,先执行user.jsp即登陆,可以执行上传文件的操作,反之,不能,有个exit.jsp,退出之后不能执行。里面含有jar文件,导入myeclipse可以执行...
Struts拦截器的案例,没有使用Hibernate,使用的是JDBC,该代码的核心实现是拦截器,至于数据库可根据个人需求进行修改。
struts2,Interceptor struts2拦截器实例,两套实例,一套是针对单个的action配置的,另一套实例是针对全局的action配置的拦截器interceptor