struts2的拦截器(3):通过实现Interceptor接口定义自己的拦截器
来源:互联网 发布:最新抢火车票软件 编辑:程序博客网 时间:2024/06/05 05:42
虽然struts2框架提供了许多内建拦截器,这些内建拦截器实现了struts2的大部分功能,因此,大部分Web应用的通用功能,都可以通过直接使用这些拦截器来完成。但还有一些系统逻辑相关的通用功能,可以通过自定义拦截器来实现。struts2自定义拦截器有如下三种方法:
① 实现com.opensymphony.xwork2.interceptor.Interceptor接口,实现init,destroy,intercept方法。
② 继承com.opensymphony.xwork2.interceptor.AbstractInterceptor抽象类,实现抽象方法intercept。
③ 继承 com.opensymphony.xwork2.interceptor .MethodFilterInterceptor抽象类,实现抽象方法doIntercept方法。
实现Interceptor接口:
public interface Interceptor extends Serializable { void init(); void destroy(); String intercept(ActionInvocation invocation) throws Exception;}方法说明init在该拦截器执行拦截之前,系统将回调该方法。对于每个拦截器而言,init方法只执行一次。
该方法的方法体主要用于初始化资源,例如数据库连接等。destroy在该拦截器实例被销毁之前,系统将回调该拦截器的destroy方法。
该方法主要用于销毁在init方法里打开的资源等。intercept该方法是用户需要实现的拦截动作。就像Action的execute方法一样,intercept方法返回一个
字符串作为逻辑视图。如果该方法直接返回了一个字符串,系统将会跳转到该逻辑视图对应的
物理视图,不会调用被拦截的Action。该方法的ActionInvocation参数包含了被拦截的Action的
引用。调用invocation的invoke方法,将控制权转移给下一个拦截器,或转给Action。
login.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><s:form action="login"><s:textfield name="name" label="姓名"></s:textfield><s:password name="pass" label="密码"></s:password><s:submit value="确定"></s:submit></s:form></body></html>welcome.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%Object obj=session.getAttribute("name");if(obj==null){response.sendRedirect("login.jsp");}%>welcome ${name}...</body></html>
struts.xml :
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts> <package name="demo" extends="struts-default"> <interceptors> <interceptor name="simple" class="interceptor.SimpleInterceptor"> <param name="name">简单拦截器</param> </interceptor> </interceptors> <action name="login" class="action.LoginAction"> <result name="success">/welcome.jsp</result> <result name="error">/login.jsp</result> <interceptor-ref name="simple"> <param name="name">改名后的拦截器</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package></struts>LoginAction.java :
public class LoginAction extends ActionSupport {private String name;private String pass;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}public String execute(){if(getName().equals("scott")&& getPass().equals("tiger")){Map<String,Object> session=ActionContext.getContext().getSession();session.put("name",getName());return "success";}return "error";}}SimpleInterceptor.java :
public class SimpleInterceptor implements Interceptor{private String name;//简单拦截器的名字public void setName(String name) {this.name = name;}@Overridepublic void destroy() {System.out.println("没什么资源可关闭...");}@Overridepublic void init() {System.out.println("没什么资源可打开...");}@Overridepublic String intercept(ActionInvocation invocation) throws Exception {LoginAction loginaction=(LoginAction)invocation.getAction();System.out.println(name+"拦截器的动作------"+"开始执行登录Action的时间为:"+new Date());long start=System.currentTimeMillis();String result=invocation.invoke(); //要理解这行代码System.out.println(name+"拦截器的动作------"+"执行完登录Action的时间为:"+new Date());long end=System.currentTimeMillis();System.out.println("执行完该Action耗时:"+(end-start)+"毫秒");return result; //要理解这行代码}}
- struts2的拦截器(3):通过实现Interceptor接口定义自己的拦截器
- struts2的拦截器(Interceptor)
- Struts2的拦截器interceptor
- struts2的拦截器Interceptor
- struts2的拦截器(4):通过继承AbstractInterceptor抽象类定义自己的拦截器
- Struts2 拦截器的Interceptor接口与AbstractInterceptor抽象类
- 常用的struts2的Interceptor拦截器
- struts2开发时通过interceptor拦截器实现输入数据过滤前后空格的功能
- struts2开发时通过interceptor拦截器实现输入数据过滤前后空格的功能
- struts2开发时通过interceptor拦截器实现输入数据过滤前后空格的功能
- struts2的基石 拦截器 Interceptor
- Struts2中Interceptor拦截器的使用
- Struts2 Interceptor 拦截器的使用流程
- 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
- 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
- struts2使用Interceptor接口来实现拦截器
- Struts2拦截器(Interceptor)
- Struts2拦截器(Interceptor)
- POJ1151(求矩阵的并面积) 离散化
- Struts2.x中获取request,response,session的方式
- Poj 1556 The Doors
- C# 读取Excel文件
- ffmepg 指定网络连接模式UDP还是TCP
- struts2的拦截器(3):通过实现Interceptor接口定义自己的拦截器
- 分布式数据库 HBase
- 开始写点东西
- VLC搭建RTSP服务器的过程
- Hadoop - 你不得不了解的大数据工具
- 打造vim IDE环境,管理大型项目
- 【工作精华】 多表连接的 金额加减操作
- 如何查看当前Ubuntu的版本
- Charset 和 Encoding 的区别是什么?