`

拦截器的使用和配置

 
阅读更多
1、新建拦截器类
  
package com.demo.struts2.common;

import java.util.Map;

import com.demo.struts2.util.Constants;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;


@SuppressWarnings("unchecked")
public class AuthorizationInterceptor extends AbstractInterceptor {

	private static final long serialVersionUID = 2575538469018873724L;

	public String intercept(ActionInvocation invocation) throws Exception {
		Map session = invocation.getInvocationContext().getSession();
		String username = (String) session.get(Constants.USERNAME_KEY);
		if (null != username && !username.equals("")) {
			// 合法用户
			return invocation.invoke();
		} else {
			System.out.println("拦截器:用户未登录---");
			return Action.LOGIN;
		}
	}
}


2、在struts.xml文件中配置拦截器
  
		<interceptors>
			<!-- 定义一个包含权限控制的拦截器栈 -->
			<interceptor name="authority"
				class="com.demo.struts2.common.AuthorizationInterceptor" />

			<!-- 定义一个包含权限控制的拦截器栈 -->
			<interceptor-stack name="mydefault">
				<interceptor-ref name="defaultStack" />
				<interceptor-ref name="authority" />
			</interceptor-stack>
		</interceptors>


3、指定拦截器的适用范围
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<!-- Add packages here -->
	<package name="main" extends="struts-default">
		<action name="index">
			<result>login.jsp</result>
		</action>
		<action name="welcome">
			<result>welcome.jsp</result>
		</action>
		<action name="login" class="loginAction">
			<result name="success">welcome.jsp</result>
			<result name="input">login.jsp</result>
		</action>
		<action name="logout" class="logoutAction">
			<result name="success">login.jsp</result>
		</action>
		<action name="register" class="registerAction">
			<result name="success">login.jsp</result>
			<result name="input">register.jsp</result>
		</action>
	</package>
	<package name="model" extends="struts-default">
		<interceptors>
			<!-- 定义一个包含权限控制的拦截器栈 -->
			<interceptor name="authority"
				class="com.demo.struts2.common.AuthorizationInterceptor" />

			<!-- 定义一个包含权限控制的拦截器栈 -->
			<interceptor-stack name="mydefault">
				<interceptor-ref name="defaultStack" />
				<interceptor-ref name="authority" />
			</interceptor-stack>
		</interceptors>

		<!-- 定义默认拦截器 -->
		<default-interceptor-ref name="mydefault" />

		<!-- 定义全局处理结果 -->
		<global-results>
			<result name="login">login.jsp</result>
		</global-results>

		<action name="address*" class="addressAction">
			<result name="list">address.jsp</result>
			<result name="add">address_add.jsp</result>
			<result name="edit">address_edit.jsp</result>
			<result name="input">address_{1}.jsp</result>
		</action>
		<action name="schedule*" class="scheduleAction">
			<result name="list">schedule.jsp</result>
			<result name="add">schedule_add.jsp</result>
			<result name="edit">schedule_edit.jsp</result>
			<result name="input">schedule_{1}.jsp</result>
		</action>
		<action name="worklog*" class="worklogAction">
			<result name="list">worklog.jsp</result>
			<result name="add">worklog_add.jsp</result>
			<result name="edit">worklog_edit.jsp</result>
			<result name="input">worklog_{1}.jsp</result>
		</action>
		<action name="sms*" class="smsAction">
			<result name="list">sms.jsp</result>
			<result name="add">sms_add.jsp</result>
			<result name="input">sms_{1}.jsp</result>
		</action>
		<action name="notice*" class="noticeAction">
			<result name="list">notice.jsp</result>
			<result name="add">notice_add.jsp</result>
			<result name="edit">notice_edit.jsp</result>
			<result name="input">notice_{1}.jsp</result>
		</action>
		<action name="meeting*" class="meetingAction">
			<result name="list">meeting.jsp</result>
			<result name="add">meeting_add.jsp</result>
			<result name="edit">meeting_edit.jsp</result>
			<result name="input">meeting_{1}.jsp</result>
		</action>
	</package>
</struts>


这样拦截器就使得在model包下的所有跳转都需要经过我们配置的拦截器了
分享到:
评论

相关推荐

    mybatis 分页拦截器及拦截器配置

    通过使用分页拦截器,我们可以将分页逻辑封装起来,使得在编写Mapper接口和Mapper XML文件时,无需关心具体的分页细节。 MyBatis中的拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截执行SQL的...

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

    4. **拦截器参数**:如果拦截器需要外部配置参数,可以使用`&lt;param&gt;`标签在XML配置中传递,或者在Action类中通过注解`@InterceptorParam`传递。 总之,自定义拦截器是增强Struts2应用功能和灵活性的重要手段。通过...

    struts2自定义拦截器配置心得

    - 在User.xml文件中,定义了一个名为`user`的包,它继承了`default`包,因此继承了`default`包中的拦截器配置。 - `&lt;action&gt;`元素定义了Action,`class`属性指定Action类,`name`属性是Action的名称。`&lt;result&gt;`...

    SpringBoot整合Mybatis完整详细版含注册、登录、拦截器配置

    5. **拦截器配置** - **SpringBoot中的拦截器**:SpringBoot使用Spring MVC的Interceptor来实现请求拦截,它可以对请求进行预处理和后处理,比如权限验证、日志记录等。 - **配置拦截器**:在`WebMvcConfigurer`的...

    微信小程序请求拦截器 ,响应拦截器

    微信小程序请求拦截器 ,响应拦截器,结合微信小程序二次封装request 一起使用

    struts2拦截器的使用方法

    这段配置表明,在名为`struts-shop`的包中,所有Action都将使用名为`myStack`的拦截器堆栈,其中包括了`checkbox`拦截器和`defaultStack`。 通过以上介绍,我们可以了解到Struts2拦截器的基本使用方法及配置方式,...

    struts1.2拦截器使用插件

    3. **配置拦截器栈**:在`struts-config.xml`中,可以使用`&lt;interceptor-stack&gt;`标签定义拦截器栈,栈中的拦截器会按照定义的顺序执行。 4. **插件使用**:Struts1.2提供了一些预定义的拦截器插件,例如`...

    Struts2拦截器及其用法详细说明

    - XML配置:在`struts.xml`文件中,使用`&lt;interceptor&gt;`元素定义拦截器,`&lt;interceptor-stack&gt;`元素组合多个拦截器,`&lt;package&gt;`元素下的`interceptors`属性指定拦截器栈。 ```xml &lt;!-- 可以添加其他内置或...

    SpringBoot拦截器原理解析及使用方法

    拦截器的使用为开发人员提供了灵活的请求处理方式,可以方便地在请求到达控制器之前和之后加入自定义的逻辑。掌握拦截器的使用,对于开发安全、高效、易于维护的Web应用是非常有帮助的。在实际开发中,合理设计拦截...

    Struts2 配置登陆拦截器

    本篇文章将详细介绍如何配置Struts2的登录拦截器,以及其背后的原理和实践应用。 首先,让我们理解一下拦截器的概念。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序对Action调用进行...

    拦截器的使用示例Interceptor

    通过`addInterceptors(InterceptorRegistry registry)`方法添加自定义的拦截器,然后使用`registry.addInterceptor(interceptor)`方法将拦截器实例注册到注册表中。配置完成后,拦截器会按照添加的顺序依次执行。 5...

    ssm配置及struts文件,拦截器.zip

    本压缩包"ssm配置及struts文件,拦截器.zip"包含了关于这三个框架的配置教程以及Struts2的文件上传和拦截器配置的相关资料。 首先,让我们详细了解一下SpringMVC。SpringMVC是Spring框架的一个模块,负责处理Web...

    Spring Controller拦截器配置

    ### Spring Controller拦截器配置 #### 一、概述 在Spring框架中,拦截器(Interceptor)是一种重要的机制,用于对Controller的请求进行预处理和后处理。它可以用来实现一系列的功能,如权限验证、日志记录、统一...

    CXF使用EndpointImpl发布WebService加入拦截器

    拦截器在CXF中的工作原理基于JAX-WS规范,可以分为两种类型:`InInterceptors`(入站拦截器)和`OutInterceptors`(出站拦截器)。入站拦截器处理从客户端到服务器的消息,而出站拦截器则处理从服务器返回到客户端的...

    struts2 拦截器的使用(继承抽象拦截器)

    在上述配置中,`myInterceptor`是我们自定义的拦截器,`myCustomStack`是包含默认拦截器栈和自定义拦截器的新拦截器栈。然后将这个拦截器栈应用到特定的Action上,这样在执行这个Action时,我们的拦截器就会被调用。...

    CXF3.0+Spring3.2 自定义拦截器

    6. **调试和测试拦截器**:为了确保拦截器按预期工作,你需要了解如何在CXF中启用日志输出,这通常通过设置日志级别和使用如`java.util.logging`或`log4j`这样的日志框架来实现。 7. **异常处理**:自定义拦截器...

    Struts2 拦截器详细配置过程

    2. **拦截器配置**: - 在Struts2配置文件中定义拦截器,比如创建一个名为`myInterceptor`的拦截器,指定其类为`com.zzz.struts2.interceptor.MyInterceptor`,并设置系统初始化参数,如`张钊钊&lt;/param&gt;`。 - 创建...

    mybatis拦截器实现通用权限字段添加的方法

    要使用MyBatis拦截器,我们需要在Spring配置文件中添加拦截器的配置。 ```xml &lt;value&gt;classpath*:xmlmapper/*.xml &lt;value&gt;classpath*:resources/xmlmapper/*.xml ``` 注意事项 在使用...

    Spring Boot 拦截器+kibana 配置.zip

    Spring Boot 拦截器 各项日志 通过kibana具体查询分析 Advanced Settings [7.2.0] 综合分析 定时任务执行日志 数据同步日志 用户访问操作日志 异常日志 内存日志 Spring逻辑参数执行日志 SQL...

Global site tag (gtag.js) - Google Analytics