【07】框架学习—Struts2中域对象/页面跳转/数据封装/拦截器技术
来源:互联网 发布:热力学数据库建库情况 编辑:程序博客网 时间:2024/06/14 10:03
1.Struts2框架中使用Servlet的API
1.1 完全解耦合的方式
static ActionContext getContext():获取ActionContext对象实例。java.util.Map<java.lang.String,java.lang.Object> getParameters():获取请求参数,相当于Servlet中request.getParameters()。java.util.Map<java.lang.String,java.lang.Object> getSession():获取session的Map集合。java.util.Map<java.lang.String,java.lang.Object> getApplication():获取代表application域中Map集合。void put(java.lang.String key, java.lang.Object value):向request域中存入值。
1.2 使用原生Servlet的API的方式
getPageContext()getRequest()getResponse()getServletContext()
2.结果页面的跳转
2.1 结果页面跳转有两种方式
全局结果页面条件:如果<package>包中有多个action返回值相同,且跳转到同一个页面,可以配置全局的结果页面。示例:
局部结果页面属于action的子标签,有name和type两个重要属性,用于页面跳转。示例:
注意:全局与局部的name值相同的,优先局部结果页面。
2.2 结果页面的类型
name:逻辑视图的名称。type:跳转的类型,常见的结果类型可见于struts-default.xml。
3.数据封装
3.1 Struts2中两种数据封装的方式
3.1.1 属性驱动
提供对应属性的set方法进行数据的封装: 在Action类中提供所需封装属性的setter,表单提交数据后,会通过对应Action类中的setter将数据封装到全局变量中。 注意: Struts2采用拦截器的方式完成数据的封装。 获取到的数据需要手动存入对象中,这种情况下,Action类既是控制器又是JavaBean,没有体现MVC思想,耦合性较高。 示例:
使用OGNL表达式进行数据封装: 在Action类中定义Javabean对象,并提供getter、setter。表单提交数据的name值也采用OGNL的方式。 示例:
3.1.2 模型驱动(常用)
在Action类中实例化JavaBean对象。Action类须实现ModelDriven<T>接口,实现getModel()方法,返回Javabean对象。示例:
3.2 将数据封装到集合中
3.2.1 将数据封装到Collection中
Collection接口都采用下标值的形式封装。提交表单页面如:<input type=”text” name=”list[0].username” />Action中如:提供list的集合,并提供其getter和setter。
3.2.2 将数据封装到Map中
Map集合都采用键值对的形式封装。提交表单页面如:<input type=”text” name=”map[‘key1’].username” />Action中如:提供map的集合,并提供其getter和setter。
4.拦截器技术
4.1 概述
拦截器是AOP(Aspect-Oriented Programming)的一种实现。过滤器:过滤从客户端发送到服务器端的请求。
4.2 拦截器和过滤器的区别
拦截器是基于Java反射机制的;而过滤器是基于函数回调的。拦截器不依赖于Servlet容器;过滤器依赖于Servlet容器。拦截器只对Action请求起作用(Action中的方法);过滤器几乎对所有请求有效。(css\jsp\js…)拦截器采用责任链模式:在责任链模式里有多个对象,每个对象对其下家的引用而连接形成一条链,责任链的每一个节点可以控制下一个节点是否执行。
4.3 Struts2的运行流程
0:启动服务器的时候Configuration解析struts.xml的配置文件,获取配置信息。1:页面发出请求。2:解析请求返回一个ActionMapper的实例。
3:
4:通过代理对象获取ActionInvocation对象,管理所有的拦截器。
5:代理对象开始执行,通过一层层的拦截器
intercept方法是进行拦截器的执行,其内部采用递归的方式。
6:
7:8:9:
阅读全文
0 0
- 【07】框架学习—Struts2中域对象/页面跳转/数据封装/拦截器技术
- Struts2 拦截器控制jsp页面跳转
- struts2之通配符、页面跳转、拦截器
- Struts2数据封装、拦截器、标签基础
- 框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器
- 框架技术--struts2拦截器与自定义拦截器使用
- struts2的拦截器无法跳转到jsp页面
- struts2中页面跳转
- Struts2框架(二)参数封装、OGNL表达式、拦截器详解
- Struts2学习笔记——自定义拦截器技术
- struts2用户是否登录拦截器,拦截之后异步跳转到登录页面
- struts2 中如何拦截页面???
- java拦截器跳转页面
- vue页面跳转拦截器
- SpringMVC拦截器之拦截跳转页面
- Spring中利用拦截器控制登录及页面跳转
- java中struts框架封装页面数据的方法
- struts2 拦截器能拦截页面
- 第三章 用for语句计算8+88+888+。。。前10项之和
- 矩阵乘法总结
- Extjs4常见错误集合
- ambari安装详解
- -如何搭建聚合支付系统
- 【07】框架学习—Struts2中域对象/页面跳转/数据封装/拦截器技术
- 基于过程渲染的小地图shader
- 【linux 学习】maven环境配置(linux mint)
- Android 获取系统日期时间并且不断更新,类似时钟
- Springmvc学习(01)-框架原理 && 入门配置
- Duilib支持自绘tooltip
- java 线程 同步工具 CyclicBarrier
- git常用命令
- Angular安装说明