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包下的所有跳转都需要经过我们配置的拦截器了
分享到:
相关推荐
通过使用分页拦截器,我们可以将分页逻辑封装起来,使得在编写Mapper接口和Mapper XML文件时,无需关心具体的分页细节。 MyBatis中的拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截执行SQL的...
4. **拦截器参数**:如果拦截器需要外部配置参数,可以使用`<param>`标签在XML配置中传递,或者在Action类中通过注解`@InterceptorParam`传递。 总之,自定义拦截器是增强Struts2应用功能和灵活性的重要手段。通过...
- 在User.xml文件中,定义了一个名为`user`的包,它继承了`default`包,因此继承了`default`包中的拦截器配置。 - `<action>`元素定义了Action,`class`属性指定Action类,`name`属性是Action的名称。`<result>`...
5. **拦截器配置** - **SpringBoot中的拦截器**:SpringBoot使用Spring MVC的Interceptor来实现请求拦截,它可以对请求进行预处理和后处理,比如权限验证、日志记录等。 - **配置拦截器**:在`WebMvcConfigurer`的...
微信小程序请求拦截器 ,响应拦截器,结合微信小程序二次封装request 一起使用
这段配置表明,在名为`struts-shop`的包中,所有Action都将使用名为`myStack`的拦截器堆栈,其中包括了`checkbox`拦截器和`defaultStack`。 通过以上介绍,我们可以了解到Struts2拦截器的基本使用方法及配置方式,...
3. **配置拦截器栈**:在`struts-config.xml`中,可以使用`<interceptor-stack>`标签定义拦截器栈,栈中的拦截器会按照定义的顺序执行。 4. **插件使用**:Struts1.2提供了一些预定义的拦截器插件,例如`...
- XML配置:在`struts.xml`文件中,使用`<interceptor>`元素定义拦截器,`<interceptor-stack>`元素组合多个拦截器,`<package>`元素下的`interceptors`属性指定拦截器栈。 ```xml <!-- 可以添加其他内置或...
拦截器的使用为开发人员提供了灵活的请求处理方式,可以方便地在请求到达控制器之前和之后加入自定义的逻辑。掌握拦截器的使用,对于开发安全、高效、易于维护的Web应用是非常有帮助的。在实际开发中,合理设计拦截...
本篇文章将详细介绍如何配置Struts2的登录拦截器,以及其背后的原理和实践应用。 首先,让我们理解一下拦截器的概念。在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序对Action调用进行...
通过`addInterceptors(InterceptorRegistry registry)`方法添加自定义的拦截器,然后使用`registry.addInterceptor(interceptor)`方法将拦截器实例注册到注册表中。配置完成后,拦截器会按照添加的顺序依次执行。 5...
本压缩包"ssm配置及struts文件,拦截器.zip"包含了关于这三个框架的配置教程以及Struts2的文件上传和拦截器配置的相关资料。 首先,让我们详细了解一下SpringMVC。SpringMVC是Spring框架的一个模块,负责处理Web...
### Spring Controller拦截器配置 #### 一、概述 在Spring框架中,拦截器(Interceptor)是一种重要的机制,用于对Controller的请求进行预处理和后处理。它可以用来实现一系列的功能,如权限验证、日志记录、统一...
拦截器在CXF中的工作原理基于JAX-WS规范,可以分为两种类型:`InInterceptors`(入站拦截器)和`OutInterceptors`(出站拦截器)。入站拦截器处理从客户端到服务器的消息,而出站拦截器则处理从服务器返回到客户端的...
在上述配置中,`myInterceptor`是我们自定义的拦截器,`myCustomStack`是包含默认拦截器栈和自定义拦截器的新拦截器栈。然后将这个拦截器栈应用到特定的Action上,这样在执行这个Action时,我们的拦截器就会被调用。...
6. **调试和测试拦截器**:为了确保拦截器按预期工作,你需要了解如何在CXF中启用日志输出,这通常通过设置日志级别和使用如`java.util.logging`或`log4j`这样的日志框架来实现。 7. **异常处理**:自定义拦截器...
2. **拦截器配置**: - 在Struts2配置文件中定义拦截器,比如创建一个名为`myInterceptor`的拦截器,指定其类为`com.zzz.struts2.interceptor.MyInterceptor`,并设置系统初始化参数,如`张钊钊</param>`。 - 创建...
要使用MyBatis拦截器,我们需要在Spring配置文件中添加拦截器的配置。 ```xml <value>classpath*:xmlmapper/*.xml <value>classpath*:resources/xmlmapper/*.xml ``` 注意事项 在使用...
Spring Boot 拦截器 各项日志 通过kibana具体查询分析 Advanced Settings [7.2.0] 综合分析 定时任务执行日志 数据同步日志 用户访问操作日志 异常日志 内存日志 Spring逻辑参数执行日志 SQL...