struts2框架之自定义拦截器和配置
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框架之自定义拦截器和配置的更多相关文章
- Struts2中一个自定义拦截器的使用
1.自定义的拦截器的类: package it.web.interceptor; import com.opensymphony.xwork2.ActionContext; import com.op ...
- 整合spring之后,struts2里面的自定义拦截器的invocation.invoke()总是返回input
这个真的是整死我了,还好看见了一篇博客提示了我, 解决方法: 在spring的bean配置中我没有设置action的作用域为prototype,也就是多例的,如果不设置则就会是默认的singleton ...
- 使用struts2框架后的拦截器
过滤特殊字符的过滤器 struts2会在web.xml中配置如下的过滤器: <filter> <filter-name>struts</filter-name> & ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- Struts2第七篇【介绍拦截器、自定义拦截器、执行流程、应用】
什么是拦截器 拦截器Interceptor-..拦截器是Struts的概念,它与过滤器是类似的-可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Struts为 ...
- Struts2透过自定义拦截器实现登录之后跳转到原页面
Struts2通过自定义拦截器实现登录之后跳转到原页面 这个功能对用户体验来说是非常重要的.实现起来其实很简单. 拦截器的代码如下: package go.derek.advice; import g ...
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...
- JavaWeb -- Struts 自定义拦截器, 登录权限拦截
1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...
- [ SSH框架 ] Struts2框架学习之四(自定义拦截器)
一.Struts2的拦截器 1.1 拦截器概述 拦截器,在AOP( Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截 ...
随机推荐
- 【BZOJ】1085 [SCOI2005]骑士精神(IDA*)
题目 传送门:QWQ 分析 我好菜啊. 一波IDA*水过去了. 代码 #include <bits/stdc++.h> using namespace std; ; char s[maxn ...
- Windows Storage Stack
- 基于Linux的Samba开源共享解决方案测试(四)
对于客户端的网络监控如图: 双NAS网关100Mb码率视音频文件的稳定读测试结果如下: 100Mb/s负载性能记录 NAS网关资源占用 稳定写 稳定写 CPU空闲 内存空闲 网卡占用 NAS1 8个稳 ...
- Web 跨域请求(OCRS) 前端解决方案
1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.j ...
- Python分页转Mybatis pagehelper格式分页
最近工作里遇到一个需求要把之前用Java写的一个http接口替换成用Python写的,出参是带了mybatis pageHelper中PageInfo信息的一个JSON串,而Python这边分页不会涉 ...
- Survival Coxph log-rank
Difference between survdiff log-rank and coxph log-rank Ask Question 6 1 I'm using the survival pack ...
- CUDA C Programming Guide 在线教程学习笔记 Part 11
▶ 数学函数 ● 舍入函数,考虑被舍入参数有双精度浮点和单精度浮点,舍入方式有区别,舍入结果有整形.长整形和长长整形,所以共有以下舍入函数. // math_functions.h extern __ ...
- Django---form 详解
Form表单的功能 准备数据.重构数据,以便下一步提交. 为数据创建HTML 表单 接收并处理客户端提交的表单和数据 普通字段详解: class BooleanField(**kwargs): 默认的 ...
- android中配置文件property的用途以及使用<转>
1.首先在源代码根目录(src下)下创建一个名为netconfig.properties的文件(也可以在其他目录下). 2.打开netconfig.properties文件,在该文件中添加下列代码. ...
- 7 python 类的组合
1.组合与重用性 软件重用的重要方式除了继承之外还有另外一种方式,即:组合 组合指的是,在一个类中以另外一个类的对象作为 1.一个类的属性可以是一个类对象,通常情况下在一个类里面很少定义一个对象就是它 ...