我是靠谱客的博主 彪壮电脑,最近开发中收集的这篇文章主要介绍Struts2,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Struts2-day01

1.1 什么是Struts2

就是一个前端框架,用来替代servlet。常见的前端框架有Struts2和SpringMVC;

  • WEB层框架基于前端控制器模型设计
    在这里插入图片描述

1.2 Struts2的入门

  1. 新建web项目,导入jar包
    在这里插入图片描述
  2. 在web.xml中配置过滤器,这个就是核心控制器
    在这里插入图片描述
  3. 编写Action
    在这里插入图片描述
  4. 编写配置文件
    在这里插入图片描述
    代码上传到gitee上
    在这里插入图片描述

1.3 Struts2的执行流程

当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截器(这组拦截器实现部分功能),执行目标Action,根据Action的返回值,进行页面跳转!
在这里插入图片描述
注意:拦截器配置是在struts-default.xml文件中

1.4 Struts2的配置文件

1.4.1 配置文件加载顺序

StrutsPrepareAndExecuteFilter过滤器中的init方法来加载配置文件,主要来初始化dispatcher,在初始化的过程中调用了init方法,主要是dispacher.init()方法
在这里插入图片描述
 init_DefaultProperties() ----加载default.properties
 init_TraditionalXmlConfigurations(); ----加载struts-default.xml、struts-plugin.xml、struts.xml
 init_LegacyStrutsProperties(); ----加载struts.properties
 init_CustomConfigurationProviders(); ----加载配置提供类
 init_FilterInitParameters() ; // [6] ----加载web.xml中过滤器初始化参数
 init_AliasStandardObjects() ; // [7] ----加载Bean对象
所以加载配置文件的顺序是:

  • default.properties
  • struts-default.xml
  • struts-plugin.xml
  • struts.xml
  • struts.properties
  • web.xml
    最后三个可以自行配置,后面的配置属性能覆盖前面的属性

1.4.2 Action的配置

1.4.2.1 package的相关配置
  • package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。
  • package标签的属性
    • name :包的名称,只有在一个项目中不重名即可。
    • extends :继承哪个包,通常值为struts-default。
    • namespace :名称空间,与标签中的name属性共同决定访问路径
  • 名称空间有三种写法:
  1. 带名称的名称空间 :namespace=”/aaa”
  2. 跟名称空间 :namespance=”/”
  3. 默认名称空间 :namespace=””
  4. abstract :抽象的,用于其他包的继承。
1.4.2.2 Action的相关配置
  • action标签配置Action类。
    action标签的属性
    name :与namespace共同决定访问路径
    class :Action类的全路径
    method :执行Action中的哪个方法的方法名,默认值execute
    converter :用于设置类型转换器

1.4.3 常量的配置

  • 在struts.xml进行修改
    在这里插入图片描述
  • 在struts.properties进行配置
  • 在web.xml中进行配置
    总的而言:在struts.properties中配置是最为方便的

1.4.4 分发模块的配置

一般是在struts.xml中进行配置

<include file="actions_*.xml"/>

此时可以配置不同模块的struts,但是命名的时候是需要注意的

1.5 Action的访问

Action总共有三种写法

  1. Action是POJO类,可以直接访问,但是是要写execute方法(基本不用)
  2. Action实现Action接口
    在这里插入图片描述
  3. Action继承ActionSupport类(一般使用此种方法,可以继承多次进行一系列的封装,工作中的项目使用的就是此种方式)

Action的访问:

  1. 通过固定的method方法访问Action
  2. 通过通配符的方式访问(******)
<package name="test2" extends="struts-default">
<action name="actionDemo2_*" class="com.ceair.web.ActionDemo2" method="{1}" >
</action>
</package>

参考上面的配置,可以更加方便访问Action
3. 动态方法方式访问(基本不用)
在这里插入图片描述

二、Struts2-day02

2.1 Struts2的Servlet的API的访问

  • 此处主要是要在控制器端使用request,session,application等api
    总共有三种方式访问:

2.1.1 完全解耦合的方式

在这里插入图片描述
此种方式不经常使用,因为只能获得代表request、session、application的数据的Map集合,不能操作这些对象的本身的方法。

  • 上面使用的是Struts2中的ActionContext对象

2.1.2 使用Servlet的API的方式

在这里插入图片描述
用这种方式可以操作域对象的数据,也可以获得对象的方法

2.1.3 接口注入的方式(工作中使用的)

在这里插入图片描述
这种方式比较好,可以定义一个公用的Action,用来处理
在这里插入图片描述
在这里插入图片描述

注意:Servlet是单例的,多个程序访问同一个Servlet只会创建一个Servlet的实例。Action是多例的,一次请求,创建一个Action的实例(不会出现线程安全的问题)。

2.2 Struts2的结果页面的配置

2.2.1 全局结果页面

  • 全局结果页面:全局结果页面指的是,在包中配置一次,其他的在这个包中的所有的action只要返回了这个值,都可以跳转到这个页面。
    • 针对这个包下所有的action配置都有效
<global-results>
<result name="serviceException" type="dispatcher">/common/serviceException.jsp</result>
<result name="exception" type="dispatcher">/common/serviceException.jsp</result>
<result name="commonSuccess" type="redirect">/common/success.jsp?backUrl=${successBackUrl}</result>
<result name="invalid.token">/common/token.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="serviceException" exception="cn.sh.ceair.framework.service.ServiceException"></exception-mapping>
<exception-mapping result="exception" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>

上面两个为配置全局的页面配置,一个配置的是结果,另外一个是配置的异常!

2.2.2 局部结果页面

只针对当前的Action有效

2.3 result标签的配置

  • result标签用于配置页面的跳转。在result标签上有两个属性:
    • name属性 :逻辑视图的名称。默认值:success
    • type属性 :页面跳转的类型。
       dispatcher :默认值,请求转发。(Action转发JSP)
       redirect :重定向。(Action重定向JSP)
       chain :转发。(Action转发Action)
       redirectAction :重定向。(Action重定向Action,通常与$配合使用,从值栈中获取值当参数传递)
       stream :Struts2中提供文件下载的功能。
<result name="ORDER_DETAIL" type="redirectAction">orderDetailAction_detailWarp.do?orderId=${orderId}</result>

上面三种项目中经常用到

2.3 Struts2的数据的封装

2.3.1 Struts2的数据封装

主要有三种方式来进行数据的封装

  1. 属性驱动:提供set方法的方式(项目中使用的)
    在这里插入图片描述
  2. 属性驱动:页面中提供表达式方式
    3.在这里插入图片描述
  3. 模型驱动:采用模型驱动的方式
    在这里插入图片描述

2.3.2 关于INPUT逻辑视图

  • Action接口中提供了五个逻辑视图的名称
     SUCCESS
     ERROR
     LOGIN
     INPUT :input在某些拦截器中会使用。添加表单页面,数据回显不用重写数据
     NONE

2.4 Struts2的复杂类型的数据封装

复杂数据的封装是比较少的,此处结合了模型驱动的方式!
主要有封装list和封装map;如果以后碰到了直接百度吧!
封装成list
封装成map

三、Struts2-day03

3.1 OGNL的概述

3.1.1 什么是OGNL

前端页面与java后台交互的一个媒介。如果把表达式看作是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与java对象之间沟通的桥梁。

3.1.2 OGNL的作用

  • 支持对象的调用
  • 支持类静态方法调用和值的访问
  • 支持赋值操作和表达式串联
  • 访问OGNL上下文(OGNL context)和ActionContext
  • 操作集合对象

3.1.2 OGNL的要素

  1. 表达式:做什么
  2. 根对象:对谁做
  3. context对象:在哪里进行

3.2 值栈的概述

3.2.1 什么是值栈

3.2.2 值栈的内部结构

3.2.3 ActionContext和ValueStack的关系

3.2.4 获取值栈对象

3.2.5 操作值栈

3.2.6 从值栈中获取数据

3.2.7 EL能够访问值栈的原因

3.3 EL的特殊字符的使用

3.3.1 #号的使用

3.3.2 %号的使用

3.3.3 $号的使用

四、Struts2-day04

最后

以上就是彪壮电脑为你收集整理的Struts2的全部内容,希望文章能够帮你解决Struts2所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(106)

评论列表共有 0 条评论

立即
投稿
返回
顶部