一、访问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 学习(三)的更多相关文章

  1. Struts2学习三----------Action搜索顺序

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2的Action的搜索顺序 http://localhost:8080/path1/path2/student.action 1)判断pa ...

  2. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  3. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  4. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  5. Java后台处理框架之struts2学习总结

    Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...

  6. struts2学习笔记之十:文件上传

    Struts2的上传 1.Struts2默认采用了apache commons-fileupload 2.Struts2支持三种类型的上传组件 3.需要引入commons-fileupload相关依赖 ...

  7. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  8. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  10. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

随机推荐

  1. dataframe去重 drop_duplicates

    data.drop_duplicates() #默认:data中一行元素全部相同时才去除 data.drop_duplicates(['a','b'])#data根据’a','b'组合列删除重复项,默 ...

  2. ocp最新考试题库:052新考题及答案整理-36

    36.Which two are true about roles? A) A role can be granted a combination of system and object privi ...

  3. [Objective-C语言教程]块(12)

    Objective-C类定义了一个将数据与相关行为相结合的对象. 有时,仅表示单个任务或行为单元而不是方法集合是有意义的. 块是C,Objective-C和C++等编程语言中的高级功能,它允许创建不同 ...

  4. 阿里java开发规范学习(附P3C IDEA插件 帮助规范的养成)

    浅析 阿里巴巴 Java 开发规约 (未完成) 更加优秀的页面展现请到浅析 阿里巴巴 Java 开发规约 contents 为什么要学 编程规约 P3C IDEA 插件 why-use 我们知道,一般 ...

  5. P4098 [HEOI2013]ALO 可持久化01Trie

    $ \color{#0066ff}{ 题目描述 }$ Welcome to ALO ( Arithmetic and Logistic Online).这是一个 VR MMORPG, 如名字所见,到处 ...

  6. NOIP模拟赛

    T1 1.聪明的小偷 (thief.pas/c/cpp) [问题描述] 从前有一个收藏家收藏了许多相同的硬币,并且将它们放在了n个排成一排的口袋里,每个口袋里都装了一定数量的硬币. 这些硬币价值不菲, ...

  7. SQLAlachemy 自动提交配置 SQLALCHEMY_COMMIT_ON_TEARDOWN

    挖坑:自动提交省去了每次 commit,添加数据对象后立马取 id 返回None 填坑 :立马要取 id 的地方 commit一下

  8. 3、TensorFlow基础(一) 设计思想与编程模型

    1.TensorFlow系统架构 如图为TensorFlow的系统架构图: TensorFlow的系统架构图,自底向上分为设备层和网络层.数据操作层.图计算层.API层.应用层,其中设备层和网络层,数 ...

  9. 机器学习中的范数规则化之 L0、L1与L2范数、核范数与规则项参数选择

    装载自:https://blog.csdn.net/u012467880/article/details/52852242 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理 ...

  10. weex 编译vue成js

    cd 项目 1.开发 npm run web 开发过程中可以直接使用浏览器运行 npm run ios 2.打包 npm run build 会在 dist 文件夹 中生成js文件, 即可拖入ios ...