- 1、本文档共94页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北京动力节点-Struts2讲义-第3章Struts2核心技术
第 3 章 Struts2 核心
3.1 在Action 中获取Servlet API
为避免与Servlet API 耦合,Struts2 对 HttpServletRequest、HttpSession、ServletContext
进行了封装,构造了三个 Map 对象来替代这三种对象。当然,也可以获取到真正的这三个
Servlet 的API 。
在Action 中获取这三个对象的方式有三种。
3.1.1 通过ActionContext 获取(重要)
在 Struts2 框架中,通过 Action 的执行上下文类 ActionContext ,可以获取
request/session/application 对象。
ActionContext ctx = ActionContext.getContext();
MapString,Object application = ctx.getApplication();
MapString,Object session = ctx.getSession();
ActionContext 对象本身就是 request 范围的存储空间(现在暂且这样认为)。所以,对
于向request 范围中添加属性,直接向ActionContext 对象中添加即可。
举例:catcheServletAPI
Step1:
Step2:
Step3:
Step4:
3.1.2 通过ServletActionContext 获取(重要)
通过ActionContext 获取的request、session 、application 均为Map 对象,并非真正的Servlet
API 。而通过ServletActionContext ,可以获取真正的Http 请求中的Servlet API 对象。
HttpServletRequest req = ServletActionContext.getRequest();
HttpServletResponse res = ServletActionContext.getResponse();
ServletContext application = ServletActionContext.getServletContext();
HttpSession session = ServletActionContext.getRequest().getSession();
举例:catcherServletAPI2
拷贝catcheServletAPI,修改LoginAction 中的execute()方法即可。
3.1.3 通过实现特定接口来获取(了解)
通过让Action 实现特定接口,也可获取request/session/application 对象。不过需要注意
的是,这种获取方式获取的为Map,并不是真正的Servlet API 。
RequestAware 接口:该接口中只有一个方法
public void setRequest(MapString,Object request)
SessionAware 接口:该接口中只有一个方法
public void setSession (MapString,Object session)
ApplicationAware 接口:该接口中只有一个方法
public void setApplication (MapString,Object application)
举例:catcherServletAPI3
拷贝catcheServletAPI ,修改LoginAction,使其实现三个接口,并修改其execute()方法。
3.2 OGNL 与值栈
3.2.1 OGNL
(1)什么是OGNL
Struts2 中很多地方都使用了OGNL。所以在这里我们要学习Struts2 中有关OGNL 的知识。
OGNL 是Object-Graph Navigation Language 的缩写,它是一种功能强大的表达式语言,
是一个第三方开源项目。
OGNL 本身是与Struts2 没有任何关系的。但Struts 框架使用了OGNL 用于进行表达式的
计算工作。Struts2 通过使用OGNL 简单一致的表达式语
文档评论(0)