Struts2框架与页面的数据交互(1)--数据封装

2、Struts2框架与页面的数据交互(1)--数据封装


上接Sturts2框架入门学习:https://blog.csdn.net/biggerchong/article/details/84540183

目录

2、Struts2框架与页面的数据交互

2.1 Struts2框架访问servlet的API

2.1.1 完全解耦和方式(了解)

2.1.2 使用servlet的API原生方式(重点)

2.1.3 接口注入方式

2.2 结果页面的配置

2.2.1 全局结果页面的配置

2.2.2 局部结果页面的配置

2.2.3 result标签说明

2.3 Struts2对数据的封装(两大类三小类)

2.3.1 属性驱动:提供属性的set方法(不常用)

2.3.2 属性驱动: 页面中提供表达式

2.3.3 模型驱动: 采用模型驱动(重点)

2.4INPUT逻辑视图

2.5 复杂数据的封装(使用属性驱动:页面表达式)

2.5.1 封装数据到List集合中

2.5.2 封装数据到Map集合中


2.1 Struts2框架访问servlet的API

         在实际开发应用中,我们会经常使用到request、response、session、application等servlet的API来实现后台与前端的数据交互;Struts2中提供了3中方法来调用servlet的这些API的手段,下面来一一介绍:

2.1.1 完全解耦和方式(了解)

         完全解耦和方式,根据名字可以猜测到这种方式本质上是跟servlet没有关系的;它是通过读取servlet相应的API来取得request等参数,但是却保存为map<String , Object>的形式,也就是操作者不具备操作request本身(方法)的权限,所以这种方法限制较大,企业中使用较少。

 

2.1.2 使用servlet的API原生方式(重点)

         通过直接获得request、session、application对象,利用这些对象来直接操作对象本身方法;这种方式在企业级使用较多。

 

2.1.3 接口注入方式

         利用Struts2的接口实现来获取request、application对象,这种方式每获取一个对象就要实现其对应的接口方法,企业级使用比较繁琐,使用较少;但是这种方法是线程安全的,Servlet是单例的,多个程序访问同一个Servlet只会创建一个Servlet的实例,Action是多例的,一次请求,创建一个Action的实例(不会出现线程安全的问题)。


2.2 结果页面的配置

2.2.1 全局结果页面的配置

         全局结果页面能被当前package下的所有的result结果识别,如果符合就执行次全局结果页面的页面跳转等相应的操作;但是如果同时存在此result结果的局部结果页面,应当执行局部页面的配置的相关操作。

         表明所有success结果都能执行页面请求跳转到request2.jsp页面。

 

2.2.2 局部结果页面的配置

         局部结果页面只在当前package的指定的action标签下有效。

 

2.2.3 result标签说明

result标签:配置结果页面属性

   Name属性: 逻辑视图(利用name跳转到实际视图上)的名称。默认值:success

   Type属性:  设置页面跳转的类型

  1. dispatcher:           请求转发
  2. redirect:                 页面重定向
  3. chain:                     请求转发到action(action到action)
  4. redirectAction    重定向到action(action到action)
  5. stream:                           Struts2提供的文件下载功能

 


2.3 Struts2对数据的封装(两大类三小类)

2.3.1 属性驱动:提供属性的set方法(不常用)

页面:

 

Action

 

2.3.2 属性驱动: 页面中提供表达式

优点:可以同时向多个对象中封装数据

页面:

 

Action

 

2.3.3 模型驱动: 采用模型驱动(重点)

缺点:只能同时向一个对象中封装数据。

页面:

 

Action


2.4INPUT逻辑视图

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

  1. SUCCESS
  2. ERROR
  3. LOGIN
  4. INPUT                input在某些拦截器中会使用。
  5. NONE

 

使用:

取得错误信息(在页面上添加)

<@ taglib r=uri=”/struts-tags” prefix=”s”%>

<S:fielderror/>


2.5 复杂数据的封装(使用属性驱动:页面表达式)

2.5.1 封装数据到List集合中

页面:

 

Action

 

2.5.2 封装数据到Map集合中

页面:

 

Action


Struts2框架与页面的数据交互(2):http://www.noobyard.com/article/p-yyrmepqe-ow.html

 

                                                                          ----谢谢阅读!                           -------知飞翀