1.创建类实现interceptor接口或者继承abstractinter~~~类
package com.mi.intercepter; import java.util.Date; import com.mi.action.LoginAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; public class Intercep implements Interceptor{ private static final long serialVersionUID = 1L; private String name;
@Override
public void destroy() {
System.out.println("destroy is run************");
} @Override
public void init() {
System.out.println("init is run************");
} @Override
public String intercept(ActionInvocation invocation) throws Exception {
LoginAction loginAction = (LoginAction) invocation.getAction(); System.out.println(getName()+"the***starttime is*** "+new Date());
long start = System.currentTimeMillis();
String result = invocation.invoke(); System.out.println("the endtime*** "+new Date());
long end = System.currentTimeMillis(); System.out.println(getName()+"the costtime is *** "+(end-start)+"毫秒");
System.out.println("result s result*** "+result);
return result;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
2.在struts.xml文件中配置已经创建的拦截器,并且配置要拦截诶的action
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8" /> <package name="lee" extends="struts-default"> <interceptors>
<interceptor name="simple" class="com.mi.intercepter.Intercep">
<param name="name">简单拦截器</param>
</interceptor>
</interceptors> <!-- 用户注册的Action -->
<action name="regist" class="com.mi.action.RegistAction">
<!-- 类型转换失败、输入校验失败,转入input对应的视图 -->
<result name="input">/content/registForm.jsp</result>
<result>/content/show.jsp</result>
</action> <action name="login" class="com.mi.action.LoginAction">
<result name="error">/content/error.jsp</result>
<result name="success">/content/welcome.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="simple">
<param name="name">改名后的拦截器</param>
</interceptor-ref>
</action>
<action name="*">
<result>/content/{1}.jsp</result>
</action> </package>
</struts>
3.我的loginAction
package com.mi.action; import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String username;
private String password; // usernameオトsetterコヘgetterキスキィ
public void setUsername(String username) {
this.username = username;
} public String getUsername() {
return username;
} // passwordオトsetterコヘgetterキスキィ
public void setPassword(String password) {
this.password = password;
} public String getPassword() {
return password;
} public String execute() throws Exception {
System.out.println("ス�executeキスキィヨエミミフ�..........");
Thread.sleep(1500);
if (getUsername().equals("tangxiujuan") && getPassword().equals("tangxiujuan")) {
return SUCCESS;
}
return ERROR;
}
}
4.此时控制台会打印出如下内容,请忽略乱码!!!重点在于拦截器!