`
u011936142
  • 浏览: 42333 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

struts2中拦截器的简单实现流程

 
阅读更多

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>



分享到:
评论

相关推荐

    Struts2详细工作流程

    Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件...Struts 2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。

    名为责任链或者拦截器或者过滤器的简单模拟

    比如说,struts2中Action在执行之前会首先执行一些Interceptor,完成诸如权限验证/属性注入/Validation/国际化等等的功能, 我看过一个比较好的功能是,利用strut2的拦截器和*-Validation.xml文件以及标签(strut2...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    struts项目学习笔记

    基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的条件下,增强代码功能) 更强大、更易用输入校验功能 整合Ajax支持:json插件 Struts2的今生前世: 1.早期开发模型Servlet+JSP+JavaBean显得...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。书中...

    Java Web程序设计教程

    第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2struts2对velocity的支持 153 7.3应用freemarker 155 7.3.1freemarker基础 155 7.3.2struts2整合...

    网上体育商城的设计与实现毕业设计答辩PPT.pptx

    对于用户的请求是通过拦截器来处理的,当用户在客户端对浏览器发出请求,根据struts.xml中的配置找到对应的Action类和方法,返回结果result,并跳转到相应页面,返回HTTP响应到客户端浏览器,简单的说,就是用户在...

    J2EE应用开发详解

    124 8.5.2 拦截器的实现原理 124 8.5.3 Struts2的内置拦截器 124 8.5.4 拦截器的配置和使用 125 8.5.5 自定义拦截器 126 8.6 一个简单的Struts2应用 130 8.7 小结 140 第9章 JSF 141 9.1 JSF技术简介 141 9.1.1 JSF...

    JAVA程序开发大全---上半部分

    18.5.2 MyEclipse中实现反向工程 324 18.6 本章小结 326 第19章 使用MyEclipse开发插件 327 19.1 MyEclipse中的插件机制 327 19.2 MyEclipse使用PDE开发插件 328 19.2.1 简单的插件开发 328 19.2.2 创建一个空白的...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题49.Struts2的拦截器是什么 Java面试题50.Spring MVC的执行流程 Java面试题51.SpringMVC和Struts2的不同 Java面试题52.简单介绍一下Spring或者Spring的两大核心 Java面试题53.AOP是什么?都用它做什么? ...

    java web 开发详解

    Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的流程,支持...

    Spring面试题

    4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等 7.spring属于低侵入...

    Spring攻略(第二版 中文高清版).part2

    8.3 用处理程序拦截器拦截请求 297 8.3.1 问题 297 8.3.2 解决方案 298 8.3.3 工作原理 298 8.4 解析用户区域 302 8.4.1 问题 302 8.4.2 解决方案 302 8.4.3 工作原理 302 8.5 外部化区分区域的...

    java面试题

    答:Struts1和Struts2是两个完全不同的框架,Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 ...

    《MyEclipse 6 Java 开发中文教程》前10章

    10.3.3 装配拦截器和Bean 212 10.3.4 测试和运行 214 10.3.5 AOP简介和相关概念 214 10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签...

    Spring攻略(第二版 中文高清版).part1

    8.3 用处理程序拦截器拦截请求 297 8.3.1 问题 297 8.3.2 解决方案 298 8.3.3 工作原理 298 8.4 解析用户区域 302 8.4.1 问题 302 8.4.2 解决方案 302 8.4.3 工作原理 302 8.5 外部化区分区域的...

Global site tag (gtag.js) - Google Analytics