Struts2中拦截器的简单实现流程
jopen
11年前
struts.xml文件的设置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 配置常量使用国际化设置 --> <constant name="struts.custom.i18n.resources" value="mess" /> <!-- 设置该应用使用的解码集 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="front" namespace="/" extends="struts-default"> <interceptors> <!-- 配置拦截器,指向自定义的拦截器类interceptor.ActionInterceptorAbstract --> <interceptor name="ActionInterceptorAbstract" class="interceptor.ActionInterceptorAbstract"> <!-- 默认的区分的属性赋值 --> <param name="name">计时拦截器</param> </interceptor> </interceptors> <!-- 配置hello.action指向的action类action.HelloWord --> <action name="hello" class="action.HelloWordAction"> <!-- 配置在执行到result之前要执行的拦截器 --> <!-- 通过 name="ActionInterceptorAbstract"进行匹配 --> <interceptor-ref name="ActionInterceptorAbstract"> <!-- 为拦截器中的身份标识进行赋值 --> <param name="name">hello计时</param> </interceptor-ref> <!-- 执行完毕拦截器后根据拦截器返回的结果选择执行result --> <result>/index.jsp</result> </action> </package> </struts>
自定义拦截器的配置
package interceptor; import java.util.Date; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; //继承抽象的拦截器类 public class ActionInterceptorAbstract extends AbstractInterceptor { /** * */ private static final long serialVersionUID = 1L; // 定义身份区分标识,接收struts.xml中<param name="name">XXX</param>标签体的内容 private String name; // 接收配置文件传入的数据 public void setName(String name) { this.name = name; } @Override public String intercept(ActionInvocation invocation) throws Exception { // 记录执行action中excute方法前的时间 long start = System.currentTimeMillis(); System.out.println(name + "调用前:" + new Date()); // 调用excute方法 // 并接受excute返回的结果 String actionResult = invocation.invoke(); // 记录执行action中excute方法后的时间 long end = System.currentTimeMillis(); System.out.println(name + "调用后:" + new Date()); System.out.println(name + "执行用时:" + (end - start)); // 将excute执行结果返回给配置文件的result return actionResult; } }
action的配置
package action; import com.opensymphony.xwork2.ActionSupport; public class HelloWordAction extends ActionSupport { //定义一个字符串用例验证 private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public String execute() throws Exception { //赋值操作 message = "Helloworld"; System.out.println(message); return SUCCESS; } }
index.jsp页面显示的配置
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <!-- 从域中取出message --> ${message} </body> </html>
来自:http://blog.csdn.net/dong_martin/article/details/20285739