struts2知识回顾

2018-07-17  本文已影响16人  努力努力再努力_y

嗯,又要开始......了

一、前言

1.1 Struts2的概述

Struts2是一个基于MVC设计模式的WEB层框架。
Struts2的内核相对于Struts1来讲已经发生巨大变化。

1.2 常见的web层框架
1.2 Web层框架基于前端控制器模型设计

二、入门

2.1 下载Struts2的开发环境

http://struts.apache.org/

2.2 解压Struts2开发包
2.3 创建web项目,引入jar包

引入jar包,struts-blank项目下找到jar包


2.4 创建一个JSP页面
2.5 编写Action类
2.6 对Action进行配置

在src下创建(提供)名称叫做struts.xml的配置文件


2.7 配置前端控制器(核心过滤器)
2.8 改写Action中的方法的返回值
2.9 改写struts.xml
2.10 编写success.jsp

三、执行流程及常见配置

3.1 分析Struts2的执行流程

Struts2的执行流程



当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截器(这组拦截器实现部分功能),执行目标Action,根据Action的返回值,进行页面跳转。

3.2 Struts2的常见配置
1.struts2的配置文件加载顺序(了解)
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对象
2.加载顺序

default.properties
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
注意:后配置的常量的值会覆盖先配置的常量的值。

3.Action的配置
package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。
package标签的属性
  name      :包的名称,只有在一个项目中不重名即可。
  extends       :继承哪个包,通常值为struts-default。
  namespace :名称空间,与<action>标签中的name属性共同决定访问路径。
    名称空间有三种写法:
      带名称的名称空间      :namespace=”/aaa” 
      跟名称空间         :namespance=”/”
      默认名称空间            :namespace=””
  abstract      :抽象的,用于其他包的继承。

  action标签配置Action类。
  action标签的属性
    name        :与namespace共同决定访问路径
    class       :Action类的全路径
    method      :执行Action中的哪个方法的方法名,默认值execute
    converter   :用于设置类型转换器

4.Struts2的常量配置

在Struts2的框架中,提供了非常多的常量:(在default.properties)
struts.i18n.encoding=UTF-8 ----Struts2中所有的post请求的中文乱码不用处理。
struts.action.extension=action,, ----Struts2请求的默认的扩展名。默认扩展名是.action或者什么都不写。
在Struts2中修改一些常量的值
修改常量的值,可以有三个位置进行修正

5.分模块开发include的配置
6.Action的访问

6.1 Action的写法

6.2 Action的访问


四、Struts2的数据封装及Servlet的API访问

4.1 Struts2的Servlet的API的访问

在使用Struts2的框架的过程中,发现Struts2和Servlet的API是解耦合的。在实际开发中,经常使用到Servlet的API,比如进行登录,将用户的信息保存到Session中,有的时候需要向页面输出一些内容,用到response对象。涉及到Servlet的API的访问。

4.1.1 完全解耦和的方式(常用)
4.1.2 使用Servlet的API的原生方式(常用)
4.1.3 接口注入的方式(不常用)
4.2 结果页面及result标签的配置
4.2.1 全局结果页面
4.2.2 局部结果页面
4.2.3 result标签的配置
result标签用于配置页面的跳转。在result标签上有两个属性:
  name属性    :逻辑视图的名称。默认值:success
  type属性    :页面跳转的类型。
    dispatcher  :默认值,请求转发。(Action转发JSP)
    redirect    :重定向。(Action重定向JSP)
    chain       :转发。(Action转发Action)
    redirectAction  :重定向。(Action重定向Action)
    stream      :Struts2中提供文件下载的功能。

4.3 Struts2的数据封装
4.3.1 属性驱动:提供属性set方法的方式(不常用)
4.3.2 属性驱动:页面中提供表达式方式
4.3.3 模型驱动:采用模型驱动方式(最常用)
4.3.4 关于input逻辑视图

Action接口中提供了五个逻辑视图的名称:

  1. SUCCESS
  2. ERROR
  3. LOGIN
  4. INPUT :input在某些拦截器中会使用。
  5. NONE
4.3.5 封装数据到List集合中
4.3.6 封装数据到List集合中

五、OGNL及值栈

5.1 OGNL概述
5.1.1 概述
5.1.2 为什么学习OGNL
5.1.3 OGNL的要素
5.2 OGNL的Java环境入门(了解)
5.2.1 访问对象的方法
5.2.2 访问对象的静态方法
5.2.3 获得Root中的数据(不需要加#)
5.2.4 获得OgnlContext中的数据(需要加#)
5.3 OGNL的Struts2环境入门
5.3.1 访问对象的方法
5.3.2 访问对象的静态方法
5.4 值栈
5.4.1 什么是值栈

ValueStack是Struts的一个接口,字面意义为值栈,OgnlValueStack是ValueStack的实现类,
客户端发起一个请求Struts2架构会创建一个action实例同时创建一个OgnlValueStack值栈实例,
OgnlValueStack贯穿整个Action的生命周期,struts2中使用OGNL将请求Action的参数封装
为对象存储到值栈中,并通过OGNL表达式读取值栈中的对象属性值

5.4.2 值栈的内部结构

ValueStack中有两个主要的区域:

所说的操作值栈,通常指的是操作的ValueStack中的root区域


5.4.3 值栈与ActionContext的关系
5.4.4 获得值栈
5.4.5 操作值栈--向值栈种存入数据
5.4.6 获取值栈数据
5.4.7 EL为何能访问值栈数据

因为Struts2的框架的底层对request.getAttribute(String name);增强了

5.5 OGNL中特殊字符
5.5.1 #号
5.5.1 %号
5.5.1 $号

六、拦截器及标签库(结)

6.1 Struts2的拦截器
6.1.1 什么是拦截器
6.1.2 Struts2的执行流程

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


6.1.3 拦截器入门
6.2 Struts2的标签库
6.2.1 通用标签库


6.2.2 UI标签库
上一篇 下一篇

猜你喜欢

热点阅读