Action访问Servlet API(通过ActionContext类访问)
来源:互联网 发布:淘宝c店会员积分 编辑:程序博客网 时间:2024/06/06 01:06
实现Action(三)——Action访问Servlet API
本文摘自:李刚 著 《轻量级 Java EE企业应用实战 Struts2+spring+hibernate整合开发》
Struts2的Action没有和任何Servlet API进行耦合,这是Struts2的一个改良之处,因为Struts2 不再和Servlet进行耦合,从而能够更加轻松的测试该Action。
但对于web应用的控制器而言,不访问Servlet API基本是不可能的,例如,跟踪HTTP Session状态等等。Struts2框架提供了一种更轻松的方式来访问Servlet API。在web应用中通常要访问Servlet API的就是HttpServletRequest、HttpSession和ServletContext,这三个类别分别代表JSP内置对象中的request、session和application。
Struts2提供了一个ActionContext类,Struts2的Action通常可以通过该类来访问Servlet API。下面是ActionContext类中包含的几个常用方法:
(1)Object get(Object key): 该方法类似于调用HttpServletRequest的getAttribute(String name)方法。
(2)Map getApplication():返回一个Map对象,该对象模拟了该应用的ServletContext实例。
(3)static ActionContext getContext():静态方法,获取系统的ActionContext实例。
(4)Map getparameters():获取所有的请求参数,类似于调用HttpServletRequest对象的getParameterMap()方法。
(5)Map getSession():返回一个Map对象,该对象模拟一个HttpSession实例。
(6)void setApplication(Map application):直接传入一个Map实例,该Map实例里面的key-value对转换成application的属性名、属性值。
(7)void setSession(Map session):直接传入一个Map实例,该Map实例里面的key-value对转换成session的属性名、属性值。
下列代码将在Action类中通过ActionContext访问Servlet API,该Action中示范了向request、session和application范围设置属性值:
上述代码第29行,该Action试图从application范围内读取counter属性值,如果该属性不存在,则设置counter为1,然后将该属性放置于application范围中;如果该counter属性存在,则将该counter属性值加1——也就实现了一个简单的计数器功能。
上面的Action包含了username和password两个属性,则意味着提交到Action的表单里应该包含username和password两个属性。
struts.xml配置文件代码如下:
上面的配置文件中,当ppp.LoginAction返回success逻辑视图名后,系统将会使用/welcome作为实际视图资源。/welcome.jsp代码如下:
上面的7、8、9行代码使用了表达式语言来输出application、session和request范围内的指定属性。前提是这些属性存在并且有值,这些值当然只能在前面的Action中设置。
- Action访问Servlet API(通过ActionContext类访问)
- Struts2(4):Action访问Servlet API---ActionContext
- Action使用ActionContext访问Servlet API
- 通过Action访问Servlet API
- 使用ActionContext类访问Servlet API
- 使用ActionContext类访问Servlet API
- struts 访问 servlet api (ActionContext方式)
- Action访问Servlet API
- Action访问Servlet API
- ActionContext类-与Servlet API解耦的访问方式
- Struts2 访问Servlet API(ActionContext)以及校验框架
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- Action访问ActionContext
- Action访问ActionContext
- Action中访问Servlet API
- 【Java】注解
- Java提供的部分常用包
- 分解质因数
- gcc结构体对齐
- hdoj-2017-字符串统计(解题报告)
- Action访问Servlet API(通过ActionContext类访问)
- 对链表数据归并排序
- linux查询系统,硬件信息命令
- C++继承详解
- js和java中数组的区别和定义方式
- 关于内嵌类
- leetcode微软谷歌面试题102. Binary Tree Level Order Traversal
- 基于spring boot框架访问zookeeper
- Code Jam 2017 Qualification Round Problem C. Bathroom Stalls