`

使用struts注解,拦截器(Interceptor)配置方式

阅读更多

我们做开发访问的都是action类,所以添加过滤器就没添加拦截器简单、方便,因为拦截器只拦截action,而过滤器神马都拦截,从效率就可以看出拦截器的效率高

呵呵,废话不多说,现在开始配置:

拦截器配置步骤:

一、先写一个拦截器,因为我们重点在配置,这里我写了个登录拦截器(LoginInterceptor .java),继承AbstractInterceptor

 

package com.kaishengit.web.interceptor;

import java.util.Map;
import java.util.Set;


import com.kaishengit.pojo.Employee;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.TextParseUtil;

public class LoginInterceptor extends AbstractInterceptor{

	private static final long serialVersionUID = 1L;
	private String excludeActionName;//剔除的拦截方法
	private String sessionName;//用户名在session中存放的key值
	
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		String actionName = invocation.getProxy().getActionName();//获取当前访问的action名字
		
		Set<String> set = TextParseUtil.commaDelimitedStringToSet(excludeActionName);
		
		if(set.contains(actionName)){
			return invocation.invoke();
		}else{
			Map<String, Object> session = invocation.getInvocationContext().getSession();
			Employee employee = (Employee) session.get(sessionName);
			if(employee == null){
				return "login";//没有登录,跳转到登录页
			}else{
				return invocation.invoke();
			}
		}
	}
	
	
	//get set
	public String getExcludeActionName() {
		return excludeActionName;
	}
	public void setExcludeActionName(String excludeActionName) {
		this.excludeActionName = excludeActionName;
	}
	public String getSessionName() {
		return sessionName;
	}
	public void setSessionName(String sessionName) {
		this.sessionName = sessionName;
	}
	
	
	
}

 

 二、在struts.xml中配置

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<constant name="struts.convention.result.path" value="/WEB-INF/views"/>
	<!--配置Struts-convention注解的默认父包  -->
	<constant name="struts.convention.default.parent.package" value="myPackage"/>
	
	<!--继承Struts-convention注解插件的xml  -->
	<package name="myPackage" extends="convention-default">
	
		 <interceptors>
		    <!--配置自己写的登录拦截器  -->
			<interceptor name="loginInterceptor" class="com.kaishengit.web.interceptor.LoginInterceptor"/>
			
			<!-- 配置一个自己的拦截器栈 -->
			<interceptor-stack name="myStack">
				<interceptor-ref name="loginInterceptor">
					<param name="sessionName">employee</param>
					<param name="excludeActionName">index,login</param>
				</interceptor-ref>
				<interceptor-ref name="defaultStack"/>
			</interceptor-stack>
		</interceptors>
		
		<default-interceptor-ref name="myStack"/> 
		
		<global-results>
			<result name="login" type="redirectAction">index.action</result>
		</global-results>
	</package>
</struts>

 

--end---

3
2
分享到:
评论
1 楼 angleqx 2012-04-23  

斯蒂芬

相关推荐

    struts2中拦截器的使用

    Struts2在com.opensymphony.xwork2.interceptor.annotations包中定义了3个拦截器注解类型。

    struts2 interceptor annotation plugin

    用注解(annotation)方式配置struts2 (webwork) 中action的拦截器(interceptor)

    Struts2 in action中文版

    9.2.2 使用自动连线将依赖注入到动作、拦截器和结果 205 9.3 为什么在Struts 2中使用JPA 207 9.3.1 使用JPA和Hibernate建立项目 208 9.3.2 基于Spring管理JPA编写代码 212 9.4 小结 216 第10章 探索验证框架 217 ...

    Struts2入门教程(全新完整版)

    4.使用默认的execAndWait拦截器 33 5. TokenInterceptor防止表单重复提交。 34 6.使用拦截器实现权限验证 35 7.拦截器中的注解 37 8.使用PreResultListener实现回调 39 六、使用标签 40 1.基础表单标签 40 2.单选...

    深入浅出Struts2(附源码)

    18.3 使用DataSourceInjectorInterceptor拦截器 269 18.4 小结 273 第19章定制结果类型 274 19.1 概述 274 19.2 编写一个自定义的结果类型 274 19.3 使用新的结果类型 277 19.4 小结 279 第20章 Velocity 280...

    java 三大主流框架

    * Interceptor:Struts2的拦截器机制,用于处理请求和响应。 * Result:Struts2的结果机制,用于处理视图层的输出。 Struts2的工作流程 Struts2的工作流程包括: 1. 用户请求到达Struts2框架。 2. Struts2框架将...

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

    18.3 使用DataSourceInjectorInterceptor拦截器 269 18.4 小结 273 第19章 定制结果类型 274 19.1 概述 274 19.2 编写一个自定义的结果类型 274 19.3 使用新的结果类型 277 19.4 小结 279 第20章 Velocity 280 ...

    strust2从一个工程跳转到另一个工程的页面

    `@InterceptorRef("defaultStack")`指定了使用defaultStack拦截器栈。 Controller Controller是Struts2中负责处理请求和响应的组件。在上面的代码中,我们可以看到Controller的配置是通过继承ActionSupport类来...

    Java学习笔记-个人整理的

    {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}...

Global site tag (gtag.js) - Google Analytics