首页 > 其他 > 详细

struts2拦截器

时间:2014-03-07 03:51:17      阅读:462      评论:0      收藏:0      [点我收藏+]

拦截器是Struts2的一个重要特性。Struts2框架的大多数核心功能都是通过拦截器来实现的,像避免表单重复提交、类型转换、对象组装、验证、文件上传等,都是在拦截器的帮助下实现的。拦截器之所以称为“拦截器”,是因为它可以在Action执行之前和执行之后拦截调用。

案例:

HelloAction.java

package action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends  ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
    private String message;
    
	

	public String getMessage() {
		return message;
	}



	public void setMessage(String message) {
		this.message = message;
	}

    public String   add(){
    	message="Hello";
		return SUCCESS;
    }
    public String   delete(){
    	message="Hello";
		return SUCCESS;
    }
    
    
	@Override
	public String execute() throws Exception {
		message="Hello";
		return SUCCESS;
	}
	

}

MyInterceptor.java

package util;

import java.util.Date;

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

public class MyInterceptor  extends AbstractInterceptor {
    private String name;
    
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		
		System.out.println(name+"调用之前"+new  Date());
		long  start=System.currentTimeMillis();
		String result=invocation.invoke();
		long  end=System.currentTimeMillis();
		System.out.println(name+"调用之后"+new  Date());
		System.out.println("用时"+(end-start));
		return result;
	}

}

MethodInterceptor.java

package util;

import java.util.Date;

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

public class MethodInterceptor extends MethodFilterInterceptor {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	 

	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		System.out.println(name+"调用之前" + new Date());
		long start = System.currentTimeMillis();
		String result = invocation.invoke();
		long end = System.currentTimeMillis();
		System.out.println(name+"调用之后" + new Date());
		System.out.println("用时" + (end - start));
		return result;
	}

}

struts.xml

<?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>

	<package name="hello" namespace="/hello" extends="struts-default">

		<!-- 声明拦截器 -->
		<interceptors>
			<interceptor name="myinterceptor" class="util.MyInterceptor">
				<param name="name">简单1拦截器</param>
			</interceptor>
			<interceptor name="myinterceptor" class="util.MethodInterceptor">
				<param name="name">简单2拦截器</param>
			</interceptor>
		</interceptors>
		<action name="*" class="action.HelloAction" method="{1}">
			<result name="success">
				/index.jsp
			</result>
			<interceptor-ref name="myinterceptor">
				<param name="name">1</param>
			</interceptor-ref>
			<interceptor-ref name="myinterceptor">
				<!-- excludeMethods-------要排除的方法。 includeMethods--------要拦截的方法。 -->
				<param name="excludeMethods">add,delete</param>
				<param name="includeMethods">execute</param>
				<param name="name">2</param>
			</interceptor-ref>
		</action>
	</package>
</struts>

调用excludeMethods(要排除的方法)中的方法:执行结果为

bubuko.com,布布扣


调用includeMethods(要拦截的方法)中的方法execute执行为:

bubuko.com,布布扣

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!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}
    </form>
  </body>
</html>



struts2拦截器,布布扣,bubuko.com

struts2拦截器

原文:http://blog.csdn.net/yantingmei/article/details/20629083

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!