您的位置:首页 > 编程语言 > Java开发

struts2 拦截器

2016-03-05 22:04 337 查看
Struts2 拦截器背景:拦截器是struts中最强大的特性之一,可以使得在action和result之间进行一些处理,作用于页面传递请求,数据封装,国际化,类型转换,上传文件拦截器意义:AOP思想极大程度的解耦应用于权限控制,日志记录等领域struts2 通配符UserAction.java
package action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
/*version1.0 2.0 3.0*/
/*public String add() throws Exception {
System.out.println("进入到add");
return "success";
}
public String select() throws Exception {
System.out.println("进入到show");
return "success";
}
public String update() throws Exception {
System.out.println("进入到update");
return "success";
}
public String delete() throws Exception {
System.out.println("进入到delete");
return "success";
}*/
/*version 4.0*/
public String add() throws Exception {
System.out.println("进入到add");
return "User_add";
}
public String select() throws Exception {
System.out.println("进入到show");
return "User_select";
}
public String update() throws Exception {
System.out.println("进入到update");
return "User_update";
}
public String delete() throws Exception {
System.out.println("进入到delete");
return "User_delete";
}

}
NewsAction.java
package action;

import com.opensymphony.xwork2.ActionSupport;

public class NewsAction extends ActionSupport {
/*version 1.0 2.0 3.0 4.0*/
/*public String add() throws Exception{

System.out.println("news add");
return "success";
}
public String select() throws Exception{

System.out.println("news select");
return "success";
}
public String delete() throws Exception{

System.out.println("news delete");
return "success";
}
public String update() throws Exception{

System.out.println("news update");
return "success";
}*/
/*version 4.0*/
public String add() throws Exception {
System.out.println("进入到add");
return "News_add";
}
public String select() throws Exception {
System.out.println("进入到show");
return "News_select";
}
public String update() throws Exception {
System.out.println("进入到update");
return "News_update";
}
public String delete() throws Exception {
System.out.println("进入到delete");
return "News_delete";
}
}
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">struts.xml</span>
<?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>

<package name="action" extends="struts-default">
<!-- version 1.0 -->
<!-- <action name="userAction" class="action.UserAction" method="add">
<result name="success">/index.jsp</result>
</action>
<action name="userAction" class="action.UserAction" method="delete">
<result name="success">/index.jsp</result>
</action>
<action name="userAction" class="action.UserAction" method="update">
<result name="success">/index.jsp</result>
</action>
<action name="userAction" class="action.UserAction" method="select">
<result name="success">/index.jsp</result>
</action> -->

<!--version 2.0  -->
<!-- <action name="userAction" class="action.UserAction" method="{*}">
<result name="success">/index.jsp</result>
</action>
<action name="newsAction" class="action.NewsAction" method="{*}">
<result name="success">/index.jsp</result>
</action> -->
<!-- version 3.0 -->
<!-- <action name="*Action" class="action.{1}Action" method="{*}">
<result name="success">/index.jsp</result> -->

<!--version 4.0  -->
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="{1}_{2}">/{1}_{2}.jsp</result>

</action>

</package>
</struts>
拦截器的使用action.InterceptorAction.java
package action;

import com.opensymphony.xwork2.ActionSupport;

public class InterceptorAction extends ActionSupport {

@Override
public String execute() throws Exception {
System.out.println("进入InterceptorAction");
return "success";
}

}
interceptor.Interceptor1.java
package interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class Interceptor1 implements Interceptor {
String name;
@Override
public void destroy() {
// TODO Auto-generated method stub

}
@Override
public void init() {
System.out.println(name+"初始化拦截器");

}
@Override
public String intercept(ActionInvocation arg0) throws Exception {

//让到达拦截器的请求继续前进,到达想要访问的资源
//作用相当于一个中间件,继续完成请求
System.out.println("进入拦截器2");
String returnValue=arg0.invoke();
System.out.println("穿过拦截器2");
return returnValue;
}
}
interceptor.MethodInterceptor.javapackage interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;/** 方法拦截器,用于拦截指定的方法*/public class MethodInterceptor extends MethodFilterInterceptor {@Overrideprotected String doIntercept(ActionInvocation arg0) throws Exception {System.out.println("进入方法拦截器");String url=arg0.invoke();System.out.println("穿过方法拦截器");return url;}}interceptor.Interceptor1.java
package interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class Interceptor2 implements Interceptor{@Overridepublic void destroy() {}@Overridepublic void init() {}@Overridepublic String intercept(ActionInvocation arg0) throws Exception {System.out.println("进入拦截器2");String returnValue=arg0.invoke();System.out.println("穿越拦截器2");return returnValue;}}
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><package name="action" extends="struts-default"><interceptors><interceptor name="interceptor1" class="interceptor.Interceptor1"></interceptor><interceptor name="interceptor2" class="interceptor.Interceptor2"></interceptor><!--方法拦截器,可以选择拦截指定的方法  --><interceptor name="methodInterceptor" class="interceptor.MethodInterceptor"><param name="includeMethods" >add,delete</param><param name="excludeMethods">show</param></interceptor><!-- 将需要使用到的拦截器包装到一起 --><interceptor-stack name="allInterceptor"><interceptor-ref name="interceptor1" ></interceptor-ref><interceptor-ref name="interceptor2"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="methodInterceptor"></interceptor-ref></interceptor-stack></interceptors><!-- 默认处理方式,对当前的所有action采取同样的处理 --><global-results ><result name="error">/error.jsp</result></global-results><action name="interceptorAction" class="action.InterceptorAction" method="{*}"><interceptor-ref name="allInterceptor"></interceptor-ref><result name="success">/login.jsp</result></action></package></struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Strtus2 java ee