struts2官方架构

拦截器的创建

第一种方式

第二种方式

看源码AbstractInterceptor 底层已经帮我们写过这些方法了

第三种方式(推荐)

拦截器API学习

放行

前后处理

不放行,直接跳转到一个结果页面

不执行后续的拦截器以及Action,直接交给Result处理结果.进行页面跳转

拦截器配置

三个步骤:(1)注册拦截器 (2)注册拦截器栈 (3)指定默认拦截器栈

觉得难懂的可以看源码(struts-default.xml),只要按照顺序来都是一样的


随便定义一个Action

特殊情况下的处理

测试

拦截器拦截方法的指定(定制方法)

查看struts2中是如何实现的

excludeMethod是不包含的方法的意思,在指定那些方法是拦截的那些是不拦截的。

找到validate的拦截器具体实现类

指定不包含拦截器的类就是在这里

继续往下看父类

之所以能直接指定参数是因为调用了get/set方法 (快速打开当前类中有哪些方法ctrl+o 黑苹果下是 win+o)


struts.xml主配置文件中配置
不拦截的方法

拦截的方法


给Action添加几个方法测试

地址栏输入 http://localhost:8080/Struts2Day04/demo1Action_find

测试拦截的方法 http://localhost:8080/Struts2Day04/demo1Action_update

第二种:修改

两种方式只能存在一种

http://localhost:8080/Struts2Day04/demo1Action_add

http://localhost:8080/Struts2Day04/demo1Action_delete


项目应用

登陆拦截器的实现步骤

1.编写一个登陆拦截器类

2.在配置文件中配置 拦截器

3.配置结果集变量不需要每一个Action都写一遍result节点

4.当点击页面的时候出现页面嵌套的情况,

5.解决办法

测试:成功解决

测试登陆

密码错误的情况

用户名不存在的情况

登陆成功,获取客户列表

2018.11.29 Struts2中拦截器的学习&项目的实际运用的更多相关文章

  1. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  2. struts2中拦截器与过滤器之间的区别

    首先是一张经典的struts2原理图 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) ...

  3. 转: Struts2中拦截器与过滤器的区别及执行顺序

    当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会 ...

  4. Struts2中拦截器的使用与配置

    一,拦截器是什么? 拦截器是在Action执行之前和之后执行的代码,是一个类似于过滤器的类: 二,拦截器的作用 拦截器拦截Action的请求,在Action之前或之后实现某项功能: 三,拦截器的特点 ...

  5. struts2中拦截器与过滤器的区别

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器.  3.拦截器只能对Action请求起作用,而过滤器则可以对几乎 ...

  6. 说说struts2中拦截器的请求流程一(模拟大致流程)

    本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...

  7. 2018.11.24 struts2中的OGNL表达式及两者的结合

    OGNL表达式 OGNL:对象视图导航语言. ${user.addr.name} 这种写法就叫对象视图导航. OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能. 理解图示 使用OGNL准备工 ...

  8. 2018.11.20 Struts2中对结果处理方式分析&struts2内置的方式底层源码剖析

    介绍一下struts2内置帮我们封装好的处理结果方式也就是底层源码分析 这是我们的jar包里面找的位置目录 打开往下拉看到result-type节点 name那一列就是我们的type类型取值 上一篇博 ...

  9. Struts2 中拦截器和Action的调用关系(写的很好)

    http://blog.csdn.net/hackerain/article/details/6991082

随机推荐

  1. [Matlab] figure

    figure只能设置序号 不能设置title 而stem和plot可以设置title

  2. js中防止事件传播的方法

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. swpuctf-web部分学习总结

    1.用优惠码 买个 X ? (1)第一步: 这道题第一步主要知道利用php的随机种子数泄露以后就可以利用该种子数来预测序列,而在题目中会返回15位的优惠码,但是必须要24位的优惠码,因此要根据15位的 ...

  4. C# 类型、对象、线程栈和托管堆在运行时的关系

    我们将讨论类型.对象.线程栈和托管堆在运行时的相互关系,假定有以下两个类定义: internal class Employee    {        public int GetYearsEmplo ...

  5. mysql通过数据文件恢复数据方法

    情况描述:服务器硬盘损坏,服务器换了个新硬盘 ,然后老硬盘插在上面.挂载在这台机器.可以从老硬盘里面拿到数据.只拿到了里面的mysql数据文件夹,把数据文件夹覆盖新的服务器mysql数据文件夹 启动报 ...

  6. mysql的引擎和锁

  7. java消息中间件 RocketMQ Linux安装与运行

    阿里巴巴宣布捐赠RocketMQ到Apache软件基金会孵化项目,最近闲下来便去部署了一个试验版本玩玩. 至于RockeMQ是什么,原理架构什么的这里就不赘述了,这里只记录安装过程. 一.系统环境 s ...

  8. scss-@mixin

    @mixin指令用于定义混入,它包括任选的变量和参数中的mixin名称后. scss简单示例: @mixin style { .cont{ color: #77C1EF; } } @include s ...

  9. 关于easyui 窗口位置的调整

    (一)easyui 默认的窗口位置 浏览器中间 (二)可直接在style里进行更改 <div id="news_dialog" class="easyui-wind ...

  10. Python中变量的本质探索

    Python中变量的本质探索 参考:Vamei博客Python进阶09 动态类型 ''' a = [1,2,3] ''' (1)这条"赋值语句"实际上是将a指向对象"[1 ...