struts框架中也存在拦截器,只不过系统自动调用。框架自带的拦截器的配置文件所在的位置为:

  java Resources--->Libraries--->struts2-core-2.3.36.jar(核心包)--->struts-default.xml

  这个配置文件中放置的是框架所有的拦截器,拦截器放置在拦截器栈中<interceptor-stack>。在配置文件中有一个基本拦截器栈,我们如果需要使用拦截器的时候,调用基本拦截器就可以了。

如果我们想要实现自己定义的功能,就需要自定义拦截器:

1. 编写拦截器,需要实现Interceptor接口,实现接口中的三个方法
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor; public class MyInterceptor implements Interceptor{ @Override
public void destroy() { } @Override
public void init() { } @Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("加密");
//放行
invocation.invoke();//放行让请求的功能执行
System.out.println("解密");
return null;
} }

2. 需要在struts.xml中进行拦截器的配置,配置一共有两种方式:

(1)第一种方式:定义拦截器。在action中要引用拦截器:只要是引用自己的拦截器,默认栈的拦截器就不执行了,必须要手动引入默认栈 。

(2)第二种方式:定义拦截器栈。将两个拦截器定义在一个栈中,所以在action标签中引用 拦截器的时候,只用引入拦截器栈名就可以了。

<package name="default" namespace="/" extends="struts-default">
<!-- 第一种配置方式 :定义了拦截器-->
<!-- <interceptors> -->
<!-- <interceptor name="MyInterceptor" class="com.huida.interceptor.MyInterceptor"></interceptor> -->
<!-- </interceptors> -->
<!-- 第二种配置方式:定义拦截器栈 -->
<interceptors>
<interceptor name="MyInterceptor" class="com.huida.interceptor.MyInterceptor"></interceptor>
<!-- 定义拦截器栈 -->
<interceptor-stack name="myStack">
<interceptor-ref name="MyInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="demo3Action_*" class="com.huida.action.Demo3Action" method="{1}"><!-- 通配符的方式 -->
<!-- <interceptor-ref name="MyInterceptor"></interceptor-ref> --><!-- 这样访问demo的时候就会经过拦截器,这样系统的拦截器就不执行了 -->
<!-- <interceptor-ref name="defaultStack"></interceptor-ref> --><!-- 执行系统的拦截器,保证系统的完整性 -->
<interceptor-ref name="myStack"></interceptor-ref><!--如果定义了拦截器栈,这里就只用写拦截器栈的名称就可以了,因为拦截器把两个拦截器定义为了一个-->
<result name="success" >/suc.jsp</result>
</action>
</package>

启动服务器,在浏览器中输入:http://localhost:8080/struts2_day02/demo3Action_save,在控制台输出:

 

struts2框架之自定义拦截器和配置的更多相关文章

  1. Struts2中一个自定义拦截器的使用

    1.自定义的拦截器的类: package it.web.interceptor; import com.opensymphony.xwork2.ActionContext; import com.op ...

  2. 整合spring之后,struts2里面的自定义拦截器的invocation.invoke()总是返回input

    这个真的是整死我了,还好看见了一篇博客提示了我, 解决方法: 在spring的bean配置中我没有设置action的作用域为prototype,也就是多例的,如果不设置则就会是默认的singleton ...

  3. 使用struts2框架后的拦截器

    过滤特殊字符的过滤器 struts2会在web.xml中配置如下的过滤器: <filter> <filter-name>struts</filter-name> & ...

  4. struts2学习(6)自定义拦截器-登录验证拦截器

    需求:对登录进行验证,用户名cy 密码123456才能登录进去:  登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...

  5. Struts2第七篇【介绍拦截器、自定义拦截器、执行流程、应用】

    什么是拦截器 拦截器Interceptor-..拦截器是Struts的概念,它与过滤器是类似的-可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Struts为 ...

  6. Struts2透过自定义拦截器实现登录之后跳转到原页面

    Struts2通过自定义拦截器实现登录之后跳转到原页面 这个功能对用户体验来说是非常重要的.实现起来其实很简单. 拦截器的代码如下: package go.derek.advice; import g ...

  7. JavaEE开发之SpringMVC中的自定义拦截器及异常处理

    上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...

  8. JavaWeb -- Struts 自定义拦截器, 登录权限拦截

    1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...

  9. [ SSH框架 ] Struts2框架学习之四(自定义拦截器)

    一.Struts2的拦截器 1.1 拦截器概述 拦截器,在AOP( Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截 ...

随机推荐

  1. C++并发编成 03 线程同步

    这一节主要讲讲线程同步的方式,C++ 11中提供了丰富的线程同步元语,如condition_variable,futrue,std::packaged_task<>,std::promis ...

  2. git本地项目上传远程

    Git的安装就不说了. 原文:https://blog.csdn.net/zamamiro/article/details/70172900 github官网说明: …or create a new ...

  3. 序列化 ,hashlib ,configparser ,logging ,collections模块

    # 实例化 归一化 初始化 序列化 # 列表 元组 字符串# 字符串# .......得到一个字符串的结果 过程就叫序列化# 字典 / 列表 / 数字 /对象 -序列化->字符串# 为什么要序列 ...

  4. jpa-入门级测试

  5. Ubuntu jdk 8 与 6 切换 (安装与配置)

    Switch To Oracle JDK8 Switch To Oracle JDK8 1.1 Switch Oracle JDK in the Unbuntu 14.04 Step1 : Downl ...

  6. 安装设置IIS5.1

    1.防止不停提示无法复制staxmem.dll: esentutl /p %windir%/security/database/secedit.sdb提示数据库损坏,是否恢复,选是,出现以下提示后退出 ...

  7. Spring cron 定时调度配置

    IDEA 或者 STS http://spring.io/guides/gs/scheduling-tasks/ spring  mvc : 结构: Seconds Minutes Hours Day ...

  8. display_css

    display所有可选值: none block inline inline-block inherit initial unset compact & marker list-item ru ...

  9. UI5-文档-4.31-Routing and Navigation

    到目前为止,我们已经把所有的应用程序内容放在一个页面上.随着我们添加越来越多的特性,我们希望将内容拆分并将其放在不同的页面上. 在这一步中,我们将使用SAPUI5导航特性加载并显示一个单独的详细信息页 ...

  10. request error: Connection aborted.', error(113, 'No route to host')

    from: https://superuser.com/questions/720851/connection-refused-vs-no-route-to-host/720860 "Con ...