转自博客: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. [ZZ]Android UI Automated Testing

    Google Testing Blog最近发表了一篇Android UI Automated Testing,我把他转载过来,墙外地址:http://googletesting.blogspot.co ...

  2. 第23章 SEH结构化异常处理(3)_终止处理程序

    23.3 终止处理程序 23.3.1 程序的结构 (1)框架 __try{ //被保护的代码块 …… } __finally{ //终止处理 } (2)__try/__finally的特点 ①fina ...

  3. IL查看override

    查看override的IL Override示例 下面我们看一个Override的Example namespace MyCollection { public class MyBase { publ ...

  4. HashTable Dictionary HashMap

    HashTable和HashMap 脑海中一直存在两个Hash,一个是HashMap另一个是HashTable,今天来总结一下两者的区别 相同点:表示根据键的哈希代码进行组织的键/值对的集合. 区别: ...

  5. 微软职位内部推荐-Software Engineer II

    微软近期Open的职位: Job Description Group: Search Technology Center Asia (STCA)/Search Ads Title: SDEII-Sen ...

  6. 微软职位内部推荐-Sr. SW Engineer for Azure Networking

    微软近期Open的职位: Senior SW Engineer The world is moving to cloud computing. Microsoft is betting Windows ...

  7. C语言 文件操作10--配置文件读写

    //配置文件读写项目 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include ...

  8. C语言错误 BUG报错整理

    错误一 关键字:间接寻址级别不同 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> ...

  9. 实战 SQL Server 2008 数据库误删除数据的恢复

    SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可.但是,这个恢复需要有两个前提条件: 1. 至少有一个误删除之前的数据库完全备份. 2. 数据库的恢复模式(Recovery m ...

  10. ORACLE SELECT INTO NO_DATA_FOUND问题

    存储过程中使用了类似如下语句: SELECT col INTO v_col FROM t_table 当查询不到记录时,会出现“数据未发现”的异常 解决方法: (1)使用MAX函数 SELECT MA ...