访问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 }

转载于:https://www.cnblogs.com/likailan/p/3334553.html

Struts2 访问web元素相关推荐

  1. 四种struts2访问web元素的方式

    1:第一种:如图: 注意:如果程序运行不成功的话,检查下web.xml中struts2的版本配置,看是否是环境的问题. 2:第二种:如图,request可以直接用,不用再像第一种还要自己去获取.(最常 ...

  2. Struts2中访问web元素

    1.访问web元素,可以取得Map类型的request,session,application,真实类型为HttpServletRequest,HttpSession,ServletContext的引 ...

  3. Struts访问web元素

    //index.jsp 1 <?xml version="1.0" encoding="GB18030" ?> 2 <%@ page lang ...

  4. Struts2 学习系列 (2) 访问web资源

    2019独角兽企业重金招聘Python工程师标准>>> 在 Action 中, 可以通过以下方式访问 web 的 HttpSession, HttpServletRequest, H ...

  5. (转)Struts2访问Servlet的API及......

    http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...

  6. 086_访问html元素

    1. 访问html元素有一下几种方法: 1.1. 通过id查找html元素. 1.2. 通过标签名查找html元素. 1.3. 通过类名查找html元素. 1.4. 通过CSS选择器查找html元素. ...

  7. 在ASP.NET AJAX 1.0框架中访问Web服务

    一. 简介     如今,微软最新推出的AJAX框架为ASP.NET AJAX 1.0(下载地址为[url]http://ajax.asp.net/downloads/default.aspx[/ur ...

  8. Struts2访问Servlet的三种方式

    Struts2访问Servlet的三种方式 基本介绍 在Struts2中,Action并没有直接和Servlet API耦合.虽然Struts2 中的Action访问Servlet API麻烦一些,但 ...

  9. Silverlight访问Web Service报System.Security.SecurityException: 安全性错误的处理

    Silverlight访问Web Service报"System.Security.SecurityException: 安全性错误"的处理 好几次了,执行的好好的Silverli ...

最新文章

  1. form上传文件以及跨域异步上传
  2. Mathematica求解微分方程组
  3. MongoDB索引问题
  4. ap模式和sta模式共存_锐捷AP缺省VLAN和用户VLAN那些事儿 | 运维实战家
  5. C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案?
  6. mysql导出可执行文件_实例讲解MYSQL注入中导出可执行文件至启动项原理(三)...
  7. 【图论训练】最小拓扑序
  8. 喝酒、吸烟和喝茶三者相对而言,哪个对身体有益?哪个对身体有害?
  9. pagerTabStrip例子
  10. LeetCode----两数之和
  11. Apache HBase 最新发布2.0.4 ,分布式数据库
  12. 大物实验计算弹性模量_什么是材料的杨氏模量?它的定义与计算公式是什么?...
  13. leaflet 加载百度离线瓦片
  14. 微信手机号授权解密失败问题现象和解决方法: getPhoneNumber
  15. 央行降准:对股市、楼市、债市、商品、人民币汇率的影响
  16. fastlane二开java_从入门开始使用Fastlane
  17. vbs 合并 excel 表格
  18. 云学堂2.0绘制教育桌面云新图谱
  19. GEEer成长日记十三:Landsat_SR计算地表温度时间序列
  20. 使用chrom访问本地项目需要输入http

热门文章

  1. 绑定Service的三种实现方式之使用Messenger
  2. 看视频笔记1【wpf】
  3. bzoj1402 Ticket to Ride 斯坦纳树 + 状压dp
  4. ROS-3 : Catkin工作空间和ROS功能包
  5. JavaScript 闭包的详细分享(三种创建方式)(附小实例)
  6. 算法积累之算法时间复杂度
  7. Esfog_UnityShader教程_前言
  8. NHibenate 一些自带增删改查
  9. 望手指半月痕可知内脏疾病
  10. C语言经典例69-有n个人围成一圈报数问题