Strusts学习笔记

  • Struts2是一个基于MVC设计模式的WEB层框架。

  • 在src下创建(提供)名称叫做struts.xml的配置文件(对action进行管理配置)
    在这里插入图片描述

  • 核心控制器:FilterDispatcher

FilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当 用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts 2框架处理。Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对login.action请求,Struts 2调用名为login的Action来处理该请求。 Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和 class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。

配置前端控制器(核心过滤器)
在这里插入图片描述

  • Struts2执行流程:当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截器(这组拦截器实现部分功能),执行目标Action,根据Action的返回值,进行页面跳转。
  • Struts2的常见配置
    1.Struts2配置文件加载顺序
    在这里插入图片描述

2.pacage相关配置
package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。
package标签的属性
name:包的名称,只有在一个项目中不重名即可。
extends:继承哪个包,通常值为struts-default。
namespace :名称空间,与标签中的name属性共同决定访问路径。
名称空间有三种写法:
带名称的名称空间:namespace=”/aaa”
跟名称空间 :namespance=”/”
默认名称空间:namespace=””
abstract:抽象的,用于其他包的继承。值为"true"时可以被其他包继承
在这里插入图片描述
3.action相关配置
action标签配置Action类。
action标签的属性
name :与namespace共同决定访问路径
class :Action类的全路径
method :执行Action中的哪个方法的方法名,默认值execute
converter :用于设置类型转换器
在这里插入图片描述
4.常量的配置
在Struts2的框架中,提供了非常多的常量:(在default.properties)
在这里插入图片描述
在Struts2中修改一些常量的值:
修改常量的值,可以有三个位置进行修正
struts.xml中进行修改(###############)
在这里插入图片描述
struts.properties中进行修改
在这里插入图片描述
web.xml中进行修改
在这里插入图片描述

- action类的写法
1.Action类是POJO的类
POJO类:简单的java的类,没有继承任何类,也没有实现任何的接口。
在这里插入图片描述
2.Action类实现一个Action的接口
在这里插入图片描述
3.Action类继承ActionSupport类
在这里插入图片描述

- Action的访问
1.通过method设置
在这里插入图片描述
2.通过通配符的方式配置(######)
在这里插入图片描述
(这里的method={1}里的1指的是第一个*的值,假如action类方法名为product_update,则这里的xing就是update,就相当于method=“update”;)

  • ACTION的常用配置:
    -在这里插入图片描述
  • Struts2的servlet的API的访问:
    方式一:通过ActionContext
    编写JSP
    在这里插入图片描述
    编写Action
    在这里插入图片描述
    注意:这种方式只能获得代表request、session、application的数据的Map集合,不能操作这些对象的本身的方法。

方式二:使用Servlet的API的原生方式(############)
编写jsp
在这里插入图片描述
编写Action:
在这里插入图片描述
注意:这种方式可以操作域对象的数据,同时也可以获得对象的方法

方式三:接口注入(略)

  • Struts2的结果页面配置:
    全局结果页面:全局结果页面指的是,在包中配置一次,其他的在这个包中的所有的action只要返回了这个值,都可以跳转到这个页面。
    针对这个包下的所有的action的配置都有效。
    在这里插入图片描述

  • 局部结果页面
    局部结果页面:局部结果页面指的是,只能在当前的action中的配置有效。
    针对当前的action有效。
    在这里插入图片描述

  • result标签的配置
    result标签用于配置页面的跳转。在result标签上有两个属性:
    name属性 :逻辑视图的名称。默认值:success
    type属性 :页面跳转的类型。

     dispatcher	:默认值,请求转发。(####Action转发JSP)
     redirect		:重定向。(####Action重定向JSP)
     chain		:转发。(Action转发Action)
     redirectAction	:重定向。(Action重定向Action)
     stream		:Struts2中提供文件下载的功能。
    
  • Struts2数据封装
    属性驱动:提供属性set方法的方式(不常用)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    属性驱动:页面中提供表达式方式
    在这里插入图片描述
    在这里插入图片描述
    模型驱动:采用模型驱动方式(最常用)
    模型驱动需要实现ModelDriven<>接口。execute方法内需要重写getModel方法,提供对象实例。
    在这里插入图片描述
    在这里插入图片描述
    模型驱动方式最常用的方式:
    缺点:只能同时向一个对象中封装数据。
    使用第二种可以向多个对象中同时封装数据:

  • Struts2的拦截器Interceptor
    1.Filter:过滤器,过滤从客户端向服务器发送的请求。
    2.Interceptor:拦截器,拦截是客户端对Action的访问。更细粒度化的拦截。(拦截Action中的具体的方法)。Struts2框架核心的功能都是依赖拦截器实现。

  • Struts2的执行流程
    客户端向服务器发送一个Action的请求,执行核心过滤器(doFilter)方法。在这个方法中,调用executeAction()方法,在这个方法内部调用dispatcher.serviceAction();在这个方法内部创建一个Action代理,最终执行的是Action代理中的execute(),在代理中执行的execute方法中调用ActionInvocation的invoke方法。在这个方法内部递归执行一组拦截器(完成部分功能),如果没有下一个拦截器,就会执行目标Action,根据Action的返回的结果进行页面跳转。

  • 编写拦截器类(编写一个类实现Interceptor接口或者继承AbstractInterceptor类。)

  • 在这里插入图片描述

  • 对拦截器进行配置
    在这里插入图片描述

  • 定义拦截器栈的方式配置拦截器

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值