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>