访问web元素的四种方法(耦合,依赖注入)、(耦合,非依赖注入)、(非耦合,依赖注入)、(非耦合,非依赖注入)

耦合:可以得到HttpServletResponse,HttpServletRequest,HttpSession等类型对象。能直接操作到真正的web元素。

非耦合:得到的是由struts封装好的Map类型,只能对范围进行存取值操作。

依赖注入:对象由struts2从外部注入。Action类不需要关心对象是如何得到的。

非依赖注入:对象由Action类自己提供初始化。

耦合

  非依赖注入

  1. public class UserAction extends ActionSupport{
  2. //类型为真实的web元素:HttpServletResponse,HttpServletRequest等..
  3. private HttpServletResponse resp;
  4. private HttpServletRequest req;
  5. private HttpSession session;
  6. private ServletContext app;
  7.  
  8. public String execute() throws IOException{
  9. req = ServletActionContext.getRequest(); //得到request
  10. resp = ServletActionContext.getResponse(); //得到response
  11. app = ServletActionContext.getServletContext(); //得到application
  12. session = ServletActionContext.getRequest().getSession(); //得到session
  13. //操作
  14. req.setAttribute("req", "write req.."); //往request里存值
  15. session.setAttribute("session", "write session"); //住session里存值
  16. session.getAttribute("session"); //从session里取值
  17. resp.getWriter(); //得到response的 PrintWriter
  18. return "test";
  19. }
  20. }

  依赖注入

  1. //实现ServletRequestAware,ServletResponseAware接口
  2. public class UserAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{
  3. private HttpServletResponse resp;
  4. private HttpServletRequest req;
  5. private HttpSession session;
  6. private ServletContext app;
  7.  
  8. public String execute() throws IOException{
  9. //操作
  10. req.setAttribute("req", "write req.."); //往request里存值
  11. session.setAttribute("session", "write session"); //住session里存值
  12. session.getAttribute("session"); //从session里取值
  13. resp.getWriter(); //得到response的 PrintWriter
  14. return "test";
  15. }
  16.  
  17. //重写setServletResponse方法,Response对象不需要自己得到,由struts2从外部注入
  18. public void setServletResponse(HttpServletResponse resp) {
  19. this.resp=resp; //得到response
  20. }
  21. //重写setServletRequest方法,Request对象不需要自己得到,由struts2从外部注入
  22. public void setServletRequest(HttpServletRequest req) {
  23. this.req=req; //得到request
  24. this.session = req.getSession(); //得到session
  25. this.app = session.getServletContext(); //得到application
  26. }
  27. }

非耦合

  非依赖注入

  1. public class UserAction extends ActionSupport{
  2. //得到的是由struts封装好的Map类型,只能对范围进行存取值操作
  3. private Map<String,Object> req;
  4. private Map<String,Object> session;
  5. private Map<String,Object> app;
  6.  
  7. public String execute() throws IOException{
  8. req= (Map<String,Object>)ActionContext.getContext().get("request"); //得到request
  9. session = ActionContext.getContext().getSession(); //得到session
  10. app = ActionContext.getContext().getApplication(); //得到application
  11. //操作
  12. req.put("req", "write req.."); //存值到request
  13. session.put("session", "write session.."); //存值到session
  14. app.put("app", "write application.."); //存值到application
  15. session.get("session"); //从session存值
  16. return "test";
  17. }
  18. }

  依赖注入(推荐)

  1. //实现RequestAware,SessionAware,ApplicationAware等接口
  2. public class UserAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
  3. //得到的是由struts封装好的Map类型,只能对范围进行存取值操作
  4. private Map<String,Object> req;
  5. private Map<String,Object> session;
  6. private Map<String,Object> app;
  7.  
  8. public String execute() throws IOException{
  9. //操作
  10. req.put("req", "write req.."); //存值到request
  11. session.put("session", "write session.."); //存值到session
  12. app.put("app", "write application.."); //存值到application
  13. session.get("session"); //从session存值
  14. return "test";
  15. }
  16. //得到application
  17. public void setApplication(Map<String, Object> app) {
  18. this.app=app;
  19. }
  20. //得到session
  21. public void setSession(Map<String, Object> session) {
  22. this.session=session;
  23. }
  24. //得到request
  25. public void setRequest(Map<String, Object> req) {
  26. this.req= req;
  27. }
  28. }

Struts2 访问web元素的更多相关文章

  1. struts2 访问Web元素的4种方法

    完整代码 :Struts12AccessWebElement.rar 第一种也是最常用的一种方法实现这几个接口 RequestAware,SessionAware,ApplicationAware s ...

  2. Struts2访问web元素的各种方法

    1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...

  3. Struts2中访问web元素的四种方式

    Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...

  4. Struts2之web元素访问与模板包含与默认Action使用

    上一篇为大家介绍了如何使用Action进行参数接收,以及简单的表单验证,本篇为大家介绍一下关于Action访问web元素的三种方式(request.session.application):模板包含( ...

  5. Struts2学习---简单的数据校验、访问Web元素

    1.简单的数据校验 在action里面我们已经给出了一个数据校验: public String execute() { if(user.getUsername().equals("usern ...

  6. 01_12_Struts2_访问Web元素

    01_12_Struts2_访问Web元素 1. 配置struts.xml文件 <package name="login" namespace="/login&qu ...

  7. sessionapplicationStruts2中访问web元素

    本文是一篇关于sessionapplication的帖子 取得Map类型request,session,application,实在类型 HttpServletRequest, HttpSession ...

  8. struts2获取web元素的方式和方法

    获取web资源的方式按是否与servlet耦合可分为两种,再细分按照依赖方式又有两种即 依赖容器 和  依赖注入 什么是依赖容器 就是依赖  ActionContext或者ServletActionC ...

  9. 2.struts2访问web资源(在struts2中获取session,request等等)

    什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ...

随机推荐

  1. js继承 prototype和constructor

    function a(){                 this.name="aaa";             }             function b(){     ...

  2. How to Avoid Producing Legacy Code at the Speed of Typing

    英语不好翻译很烂.英语好的去看原文. About the Author I am a software architect/developer/programmer.I have a rather p ...

  3. ORACLE行转列(行转1列,行转多列)

    在oracle 11g release 2 版本中新增的listagg函数,listagg是一个实现字符串聚合的oracle内建函数;listagg(column,'分隔符') within grou ...

  4. Unique Binary Search Trees,Unique Binary Search Trees II

    Unique Binary Search Trees Total Accepted: 69271 Total Submissions: 191174 Difficulty: Medium Given  ...

  5. C/c++几个预定义的宏:__DATE__,__TIME__,__FILE__,__LINE__

    一边情况下,C/C++编译器会内置几个宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息. ANSI C标准中有几个标准预定义宏(也是常用的): __ ...

  6. mysql存储过程调试方法

    有如下一个存储过程 ), i_length ),OUT o_result INT) BEGIN SET @a= NULL; SET @b= NULL; SELECT id INTO @a FROM t ...

  7. <link>: rel, href

    Reference: http://www.w3schools.com/tags/tag_link.asp <link> Attributes: Attribute Value Descr ...

  8. oracle全文检索笔记

    1.删除词法解析器 exec ctx_ddl.drop_preference('my_lexer'); 2.创建中文词法解析器 exec ctx_ddl.create_preference ('my_ ...

  9. 检测delphi的程序的内存泄漏

    在主窗体的FormCreate 加入ReportMemoryLeaksOnShutdown := True;

  10. C语言--基本运算符

    一.算术运算符 1. 加法运算符 + * 除了可以进行加法运算外,还可以表示正号:+521 2.减法运算符 — * 除了可以进行减法运算外,还可以表示负号:—741 3.乘法运算法符 * * 请注意符 ...