Struts2 学习(三)
一、访问Servlet API 的三种方式
1、什么是 Action 访问 Servlet 的 API
1、访问 Servlet 的API:
1、获取 request 对象。
2、接受请求参数。
3、获取 session,appliction。
4、获取 response对象。
5、使用 Cookie。
6、获取作用域对象,设置共享数据(setAttribute)。
2、Action访问Servlet API,有三种方式:
1、通过感知接口。
若 Action 想获取哪一个ServletAPI对象,则实现该对象对应的感知接口。
如:
想获取 request 对象,则 Action 应该实现 ServletRequestAware。
想获取 response 对象,则Action应该实现 ServletResponsetAware。
并且要覆盖对应 setter 方法。

2、通过ServletActionContext工具类。
在该类中提供了很多静态方法,可以直接获取Servlet的API对象。
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
在开发中使用非常频繁,简单,直接。
但是依然和Servlet的API有耦合。
3、通过使用 ActionContext 工具类。
表示 Action 的上下文对象,也就是Action存在的环境。ActionContext 是 ServletActionContext 的父类。
1、创建 ActionContext 对象:
ActionContext ctx = ActionContext.getContext();
Map<String,Object> getParameters():获取参数的Map集合。
2、操作 request 作用域:
void put(String key,Object value):类似于request.setAttribute(String key,Object value);
Object get(String key): 类似于request.getAttribute(String key);
3、操作session作用域:
Map<String,Object> sessionMap = ctx.getSession();
在session中存放数据:void put(String key,Object value)
取出session中的数据:Object get(String key)
4、操作application作用域:
Map<String,Object> applicationMap = ctx.getApplication();
注:官方建议使用第三种方式,可以和 Servlet 的 API 完成解除耦合,在实际开发中第二种运用非常广泛。
二、Action 获取请求参数的三种方式
1、J2EE的最佳实践:
按照功能职责,分层开发(表现层,业务层,持久层):
表现层:职责是和用户做交互
1、接受请求数据。
2、把数据封装Model对象。
3、调用业务逻辑方法处理请求。
4、控制界面跳转。
2、MVC思想:
M:数据模型对象(封装数据,封装操作,可重复使用)
V:JSP
C:StrutsPrepareAndExecuteFilter(前端控制器)
问题:Action 到底充当什么角色?
Action的职责,处理请求。
3、Action获取请求参数三种方式:
第一种:Action本身作为Model对象,通过setter方法封装(属性注入)

前端页面提交登录信息。

第二种:创建独立Model对象,页面通过ognl表达式封装(属性注入)


第三种:使用ModelDriven接口,对请求数据进行封装(模型驱动)

Struts2 学习(三)的更多相关文章
- Struts2学习三----------Action搜索顺序
© 版权声明:本文为博主原创文章,转载请注明出处 Struts2的Action的搜索顺序 http://localhost:8080/path1/path2/student.action 1)判断pa ...
- Struts2框架学习(三) 数据处理
Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- Java后台处理框架之struts2学习总结
Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...
- struts2学习笔记之十:文件上传
Struts2的上传 1.Struts2默认采用了apache commons-fileupload 2.Struts2支持三种类型的上传组件 3.需要引入commons-fileupload相关依赖 ...
- HTTP学习三:HTTPS
HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- TweenMax动画库学习(三)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) ...
随机推荐
- 一、SecureCRT 8.0 客户端连接服务器
1.通过远程连接服务器linux,连接的是ssh服务: 如图:ssh2协议是ssh的升级版. 连接模式: 2. Ctrl+d 快速退出==exit/quit/logout 3.SecureCRT 改变 ...
- lua 5.3 英文手册 自己收集整理版
/* ** state manipulation */ LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);//创建lua虚拟机 LUA ...
- tcp/ip学习笔记(1)-基本概念
为什么会有tcp/ip 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计 ...
- objectARX 添加线型下拉组合框空间 CAcUiLineTypeComboBox
不知道是有意还是无意,objectARX的所有文档中,居然没有CAcUiLineTypeComboBox, 而实际上这个是存在的.位于\inc\acuiComboBox.h 而在添加变量的向导中也没有 ...
- node.js的总结-可以应付bat的社招面试
什么是NodeJS Node.js采用模块化结构,按照CommonJS规范定义和使用模块.模块与文件是一一对应关系,即加载一个模块,实际上就是加载对应的一个模块文件. JS是脚本语言,脚本语言都需要一 ...
- [Swift]字符串大小写转换,同时实现本地化或设置语言环境
在NSString中提供了3种字符串大小写转换方式:1. 转换字符串大小写2. 转换字符串大小写,并实现本地化3. 转换字符串大小写,并设置语言环境. 一. 转换字符串大小写如果只是想单纯的将字符串进 ...
- software installing
<1>.Apache防火墙配置 firewall-cmd --add-service=http firewall-cmd --add-service=https 防火墙通过80和443端口 ...
- localstorage在safri下的坑
在ios10.2中的safri浏览器里无痕模式会导致localstorage不能正常使用 具体解决办法如下: if (typeof localStorage === 'object') { try { ...
- 模块化之seaJs学习和使用
使用seaJs也有一阵子了,一直也想抽个时间写个这方面的博客,直到今天才写……也许写的不是很完善,但跟大伙分享也是一种乐趣,不对之处欢迎指出.[抱拳] 时间有限,我这里不过多介绍前端模块化,有兴趣可以 ...
- Chrome-headless 模式,没有UI界面的自动化UI测试
如果在本机执行UI自动化脚本,打开的浏览器总是会不同程度的影响你做别的事情,那么我们可以采用 无界面运行我们的UI自动化,这种模式下运行脚本并不会真正地打开浏览器,整个过程都是在后台执行的.爽歪歪. ...