转自博客:http://blog.csdn.net/pkgk2013/article/details/51985817

拦截器的作用

拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。  拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

自定义拦截器

有的时候struts2提供的拦截器并不能满足我们的需求,所以我们会选择自定义拦截器。就以商城系统中,后台的数据管理为例,如果没有登录,就不能访问一系列后台的页面。

  1. 编写拦截器:

    • 编写一个类实现Interceptor接口.或者继承Interceptor的子类.
    • 配置拦截器.
public class PrivilegeInterceptor extends MethodFilterInterceptor{

    @Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
// 判断是否登录,如果登录,放行,没有登录,跳转到登录页面.
AdminUser adminUser = (AdminUser) ServletActionContext.getRequest()
.getSession().getAttribute("existAdminUser");
if(adminUser != null){
// 已经登录过
return actionInvocation.invoke();
}else{
// 跳转到登录页面:
ActionSupport support = (ActionSupport) actionInvocation.getAction();
support.addActionError("您还没有登录!没有权限访问!");
return ActionSupport.LOGIN;
}
} }

在struts.xml中进行配置

 
<!-- 配置自定义拦截器 -->
<interceptors>
<interceptor name="privilegeInterceptor" class="com.wgd.shop.interceptor.PrivilegeInterceptor"/>
</interceptors> //在这里,我们为了图方便,就直接写的是全局的访问
<global-results>
<result name="msg">/WEB-INF/jsp/msg.jsp</result>
<result name="login">/admin/index.jsp</result>
</global-results> //在相应的action中配置该拦截器
<!-- 后台一级分类管理Action -->
<action name="adminCategory_*" class="adminCategoryAction" method="{1}">
<result name="findAll">/admin/category/list.jsp</result>
<result name="saveSuccess" type="redirectAction">adminCategory_findAll</result>
<result name="deleteSuccess" type="redirectAction">adminCategory_findAll</result>
<result name="editSuccess">/admin/category/edit.jsp</result>
<result name="updateSuccess" type="redirectAction">adminCategory_findAll</result> <interceptor-ref name="privilegeInterceptor"/>
<interceptor-ref name="defaultStack"/>
</action>
//因为配置了自定义拦截器,默认的拦截器就没有了。所以得手动添加默认的拦截器
 

web开发(二十一)之自定义拦截器的使用的更多相关文章

  1. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  2. 第1节 flume:15、flume案例二,通过自定义拦截器实现数据的脱敏

    1.7.flume案例二 案例需求: 在数据采集之后,通过flume的拦截器,实现不需要的数据过滤掉,并将指定的第一个字段进行加密,加密之后再往hdfs上面保存 原始数据与处理之后的数据对比 图一  ...

  3. SpringBoot整合WEB开发--(七)注册拦截器

    1.创建一个拦截器类实现HandlerInterceptor接口,重写其中的3个方法,这拦截器中方法的执行顺序为:preHandle--Controller--postHandle--afterCom ...

  4. struts2拦截器-自定义拦截器,放行某些方法(web.xml配置)

    一.web.xml配置 <filter> <filter-name>encodingFilter</filter-name> <filter-class> ...

  5. SpringMVC系列(十二)自定义拦截器

    Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口– preHandle():这个方法在业务处 ...

  6. [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Flume(二) —— 自定义拦截器、Source、Sink

    自定义拦截器 自定义Source 自定义Sink 引入依赖 <dependency> <groupId>org.apache.flume</groupId> < ...

  8. JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现

    一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implemen ...

  9. struts2(五)之struts2拦截器与自定义拦截器

    前言 前面介绍了struts2的输入验证,如果让我自己选的话,肯定是选择xml配置校验的方法,因为,能使用struts2中的一些校验规则,就无需自己编写了, 不过到后面应该都有其他更方便的校验方法,而 ...

随机推荐

  1. 边工作边刷题:70天一遍leetcode: day 84

    Flatten 2D Vector 要点: 这题是2d的iterator,一般对于1d的情况,hasNext()是不需要做移动的.而2d不同,core iterator是j向的,而i向要在hasNex ...

  2. 合工大 OJ 1332 蛇形阵

    Description 蛇形针回字阵: 如3*3: 回字阵: 7 6 5 8 1 4 9 2 3 Input 多组数据: 每一行一个正整数n(n为奇数,<26),代表n*n矩阵. Output ...

  3. SQL Server 2005 安装图解教程(Windows)

    因工作需要,好久未安装SQL Server2005,今天安装了一下,特此写下安装步骤留下笔记. 安装前准备: 先安装IIS,再安装SQL Server2005 一.安装 点击安装,如下图: 选择操作系 ...

  4. Studio 从入门到精通 (一)

    目标:Android Studio新手–>下载安装配置–>零基础入门–>基本使用–>调试技能–>构建项目基础–>使用AS应对常规应用开发 AS简介 经过2年时间的研 ...

  5. PHP中的魔术变量

    PHP中的常量大部分都是不变的,但是有8个常量会随着他们所在代码位置的变化而变化,这8个常量被称为魔术常量. 名称 说明 __LINE__ 文件中的当前行号. __FILE__ 文件的完整路径和文件名 ...

  6. 【转】【C#】【Thread】【Parallel】并行计算

    并行计算 沿用微软的写法,System.Threading.Tasks.Parallel类,提供对并行循环和区域的支持. 我们会用到的方法有For,ForEach,Invoke. Program.Da ...

  7. Kakfa分布式集群搭建

    本位以最新版本kafka_2.11-0.10.1.0版本讲述分布式kafka集群环境的搭建过程.服务器列表: 172.31.10.1 172.31.10.2 172.31.10.3 1.下载kafka ...

  8. MySQL主从同步几个文件

    MySQL主从同步:   M锁表 M导出S导入 M解锁 M建同步帐号 S获取点位:产生master.info S开启同步   3306: mysql-bin.0000x mysql-bin.index ...

  9. C++ STL之vector详解

    转自http://blog.sina.com.cn/s/blog_9f1c0931010180cy.html Vectors   vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作 ...

  10. 反射中使用 BindingFlags.IgnoreCase

    我们经常需要通过反射来调用目标对象的方法或获取/设置目标对象的属性,Type.InvokeMember 方法签名如下: public object InvokeMember(string name,B ...