`

使用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拦截器及其用法详细说明

    - XML配置:在`struts.xml`文件中,使用`&lt;interceptor&gt;`元素定义拦截器,`&lt;interceptor-stack&gt;`元素组合多个拦截器,`&lt;package&gt;`元素下的`interceptors`属性指定拦截器栈。 ```xml &lt;interceptor name=...

    Struts2 拦截器注解(二十七)

    在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的配置和使用。 首先,让我们理解什么是Struts2的拦截器。拦截器是一个实现了`Interceptor`接口的Java类,它在Action执行之前或之后执行...

    struts2 拦截器实例

    3. **配置拦截器**:拦截器可以通过Struts2配置文件或注解进行配置,指定在哪些Action上使用哪些拦截器。 ### 二、单个Action配置拦截器实例 1. **创建拦截器**:首先,我们需要创建一个实现了`Interceptor`接口的...

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    "Struts2 注解配置 Action 及拦截器几种不同方式写法对应的路径指向" Struts2 注解配置 Action 及拦截器是 Struts2 框架中的核心组件之一,负责处理用户请求并返回响应结果。下面,我们将通过详细的解释和示例代码...

    使用struts拦截器+注解实现日志审计功能

    通过配置Struts配置文件或使用注解,我们可以指定拦截器的执行顺序和应用范围。 日志审计是对系统操作进行记录和分析的过程,对于理解系统行为、追踪异常、安全审计等方面至关重要。在Struts中,我们可以通过自定义...

    Struts2 拦截器详细配置过程

    Struts2 拦截器是框架中一个重要的组件,用于增强Action的处理能力,提供预处理和后处理的功能。在Struts2中,拦截器是基于...在实际项目中,通常会结合Struts2的注解和配置文件来定义拦截器,以满足不同的业务需求。

    Struts2学习案例(拦截器)

    2. **拦截器的编写和使用**:创建自定义拦截器类,实现`Interceptor`接口,以及如何在配置文件中引用拦截器。 3. **Action的编写**:创建Action类,定义业务方法,使用注解进行配置。 4. **JPA基础**:了解JPA的基本...

    利用struts2拦截器做的简单登录

    拦截器是一个实现了`Interceptor`接口的类,它们按照配置的顺序组成一个拦截器栈。当请求到达Action时,Struts2会按照栈的顺序依次调用每个拦截器的`intercept()`方法,最后执行Action的业务逻辑。 在实现登录功能...

    Struts2拦截器源码

    Struts2中的拦截器可以通过XML配置文件或注解进行声明。例如,`struts-default.xml`中包含了默认的拦截器栈,如`params`拦截器用于处理请求参数,`exception`拦截器用于处理异常,`validation`拦截器进行数据校验。 ...

    struts2拦截器和验证框架(适合初学者-经藏版)

    通过以上详细介绍,我们了解了Struts2中的拦截器和验证框架的基本概念、如何创建自定义拦截器以及如何配置拦截器和使用验证功能。这些知识点对于初学者来说非常重要,能够帮助他们更好地理解和使用Struts2框架。

    struts2 以注解的形式实现拦截器

    Struts2是一个流行的Java web框架,它极大地简化了MVC(模型-视图-控制器)应用程序的开发。...在实际项目中,结合Struts2的其他功能,如类型转换、结果映射等,注解拦截器可以极大地提升开发效率和代码可维护性。

    Struts2 拦截器 和 Java 中的动态代理

    在Struts2的配置文件(struts.xml)中,可以通过`&lt;interceptor&gt;`和`&lt;interceptor-stack&gt;`标签定义拦截器及其顺序。 Java中的动态代理(Dynamic Proxy)是实现拦截器机制的基础。动态代理允许我们在运行时创建一个...

    struts2中拦截器的使用

    在Struts2中,拦截器的使用主要基于两个方面:配置文件中的声明式使用和注解的编程式使用。首先,我们来看看配置文件中的声明式使用。在struts.xml或类似的配置文件中,你可以通过`&lt;interceptor&gt;`元素定义拦截器,并...

    Struts拦截器案例——登陆

    例如,可以创建一个名为`LoginInterceptor`的拦截器,然后在`&lt;package&gt;`标签内使用`&lt;interceptors&gt;`和`&lt;interceptor&gt;`来声明和配置它。 2. **拦截器实现**:创建一个实现`Interceptor`接口的类,重写`intercept()`...

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    2. 注册拦截器:在Struts2的配置文件(如struts.xml)中,将这个拦截器添加到默认栈或者自定义拦截器栈中。 3. 检查登录状态:在`intercept()`方法中,可以通过Session或者其他方式检查用户是否已登录,未登录则返回...

    struts2拦截器笔记

    `struts2_2` 可能指的是 Struts2 的某个特定版本,而 `struts2拦截器笔记.txt` 文件可能包含了关于该版本中拦截器的详细使用和实现方法。通常,笔记会涵盖如何创建自定义拦截器、如何配置拦截器链、以及各种内置拦截...

    struts2拦截器

    - 在Struts2的配置文件(通常为struts.xml或类似的XML配置文件)中,可以通过`&lt;interceptors&gt;`标签定义拦截器栈,`&lt;interceptor&gt;`标签定义单个拦截器,`&lt;interceptor-ref&gt;`引用已定义的拦截器。 - 使用`&lt;package&gt;`...

    一个Struts2的核心拦截器例子

    下面将详细讲解Struts2的核心拦截器以及如何在项目中使用它们。 1. **Struts2拦截器概念**: - 在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它通过`ActionInvocation`对象来控制动作的执行流程。拦截...

    自定义拦截器的实现以及拦截器的详细配置

    3. **注解方式配置**:除了XML配置,Struts2还支持注解方式来配置拦截器。在Action类上使用`@InterceptorRef`注解指定拦截器栈。 ```java import com.opensymphony.xwork2.ActionSupport; import org.apache.struts...

    struts2类型转换 拦截器 校验的例子

    在struts.xml配置文件中,你可以通过`&lt;interceptors&gt;`标签定义拦截器栈,并通过`&lt;action&gt;`标签中的`interceptor-ref`指定使用哪些拦截器。 然后,我们关注的是**校验(Validation)**。Struts2提供了基于注解和XML...

Global site tag (gtag.js) - Google Analytics