取得Map 类型的 request,session,application, HttpServletRequest,HttpSession,ServletContext的引用。

分访问 Map 类型和原始类型两种。

1、获取 Map 类型的request,session,application( Map 类型)的第一种方式,他们保存在都ActionContext中:

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import com.bjsxt.struts2.user.model.User;
  6. import com.opensymphony.xwork2.ActionContext;
  7. import com.opensymphony.xwork2.ActionSupport;
  8.  
  9. public class LoginAction1 extends ActionSupport{
  10.  
  11. private static final long serialVersionUID = -7767523825141043349L;
  12.  
  13. private Map request;
  14. private Map session;
  15. private Map application;
  16.  
  17. private User user;
  18.  
  19. public LoginAction1(){
  20. //在 对应方法中或者在构造方法中获取都一样
  21. request = (Map)ActionContext.getContext().get("request");
  22. session = ActionContext.getContext().getSession();
  23. application = ActionContext.getContext().getApplication();
  24. }
  25.  
  26. public String execute(){
  27. request.put("r1", "r1");
  28. session.put("s1", "s1");
  29. application.put("a1", "a1");
  30. return SUCCESS;
  31. }
  32.  
  33. public User getUser() {
  34. return user;
  35. }
  36.  
  37. public void setUser(User user) {
  38. this.user = user;
  39. }
  40.  
  41. }

jsp页面的访问:

  1. <s:property value="#request.r1"/>
  2. <s:property value="#session.s1"/>
  3. <s:property value="#application.a1"/>

2、获取 Map 类型的request,session,application的第一种方式,一般用这种就行了:

实现了RequestAware,SessionAware,ApplicationAware 这三个接口,这种方式是通过Struts2把这三个对象注入给Action的。

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.apache.struts2.interceptor.ApplicationAware;
  6. import org.apache.struts2.interceptor.RequestAware;
  7. import org.apache.struts2.interceptor.SessionAware;
  8.  
  9. import com.bjsxt.struts2.user.model.User;
  10. import com.opensymphony.xwork2.ActionSupport;
  11.  
  12. /**
  13. * 只用这种
  14. * @author Administrator
  15. *
  16. */
  17. public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
  18.  
  19. private static final long serialVersionUID = -7767523825141043349L;
  20.  
  21. private Map<String, Object> request;
  22. private Map<String, Object> session;
  23. private Map<String, Object> application;
  24.  
  25. private User user;
  26.  
  27. public String execute(){
  28. request.put("r1", "r1");
  29. session.put("s1", "s1");
  30. application.put("a1", "a1");
  31. return SUCCESS;
  32. }
  33.  
  34. public User getUser() {
  35. return user;
  36. }
  37.  
  38. public void setUser(User user) {
  39. this.user = user;
  40. }
  41.  
  42. public Map<String, Object> getRequest() {
  43. return request;
  44. }
  45.  
  46. public void setRequest(Map<String, Object> request) {
  47. this.request = request;
  48. }
  49.  
  50. public Map<String, Object> getSession() {
  51. return session;
  52. }
  53.  
  54. public void setSession(Map<String, Object> session) {
  55. this.session = session;
  56. }
  57.  
  58. public Map<String, Object> getApplication() {
  59. return application;
  60. }
  61.  
  62. public void setApplication(Map<String, Object> application) {
  63. this.application = application;
  64. }
  65.  
  66. }

获取的方式跟第一种是一样的。

3、获取 HttpServletRequest,HttpSession,ServletContext (原始类型)的第一种方式:

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import javax.servlet.ServletContext;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.ServletActionContext;
  8.  
  9. import com.opensymphony.xwork2.ActionSupport;
  10.  
  11. public class LoginAction3 extends ActionSupport{
  12.  
  13. private static final long serialVersionUID = -7767523825141043349L;
  14.  
  15. private HttpServletRequest request;
  16. private HttpSession session;
  17. private ServletContext application;
  18.  
  19. public LoginAction3(){
  20. request = ServletActionContext.getRequest();
  21. session = request.getSession();
  22. application = session.getServletContext();
  23. }
  24.  
  25. public String execute(){
  26.  
  27. return SUCCESS;
  28. }
  29. }

取值,要是request、session、application中存在这个属性的话:

  1. <%=request.getAttribute("r1") %>
  2. <%=session.getAttribute("s1") %>
  3. <%=application.getAttribute("a1") %>

4、获取 HttpServletRequest,HttpSession,ServletContext (原始类型)的第二种方式:

  1. package com.bjsxt.struts2.user.action;
  2.  
  3. import javax.servlet.ServletContext;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.ServletActionContext;
  8. import org.apache.struts2.interceptor.ServletRequestAware;
  9.  
  10. import com.opensymphony.xwork2.ActionSupport;
  11.  
  12. public class LoginAction4 extends ActionSupport implements ServletRequestAware{
  13.  
  14. private static final long serialVersionUID = -7767523825141043349L;
  15.  
  16. private HttpServletRequest request;
  17. private HttpSession session;
  18. private ServletContext application;
  19.  
  20. public String execute(){
  21. return SUCCESS;
  22. }
  23.  
  24. @Override
  25. public void setServletRequest(HttpServletRequest request) {
  26. this.request = request;
  27. this.session = request.getSession();
  28. this.application = session.getServletContext();
  29. }
  30.  
  31. }

取值方式和第三种一样。

补充:

<s:property value="#attr.r1"/> <s:property value="#attr.s1"/> <s:property value="#attr.a1"/>

这种获取方式会去ActionContext中遍历查找,所有的r1、s1、a1的值,一般情况下我们都会知道变量的值精确存放点,不推荐使用这个取值方式。

链接: http://pan.baidu.com/s/1pLk9ZCJ 密码: idbm

Struts2_访问Web元素的更多相关文章

  1. Struts2 访问web元素

    访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...

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

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

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

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

  4. 01_12_Struts2_访问Web元素

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

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

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

  6. sessionapplicationStruts2中访问web元素

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

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

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

  8. Structs复习 访问web元素

    Structs帮我们在action和http里建立了联系 主要有四种方式 我们主要用第二种(IOC 依赖容器注入 ) Jar包 web.XML <?xml version="1.0&q ...

  9. Struts2 学习笔记 09 访问Web元素

    我们想要访问Map类型request,session,application.真实类型HttpServletRequest,HttpSession,ServletContext的引用,并对它们进行操作 ...

随机推荐

  1. opencv-机器学习章节介绍

    概念 1.机器学习:训练样本,特征,分类器.最需要的是特征. 2.深度学习:海量的训练数据,神经网络.最需要的是样本多一些. 特征 Hear特征一般是人脸检测用到的 Hog特征一般是物体检测用到的 分 ...

  2. react 中文文档案例四 (登陆登出按钮)

    import React from 'react'; import ReactDOM from 'react-dom'; class LoginControl extends React.Compon ...

  3. Es6中Map对象和Set对象的介绍及应用

    map和set的方法,工作中有使用到,所以学习一下: Map 对象 Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值. var myMap = new Map(); myMa ...

  4. 磁盘 IO 和网络 IO 该如何评估、监控、性能定位和优化?

    生产中经常遇到一些IO延时长导致的系统吞吐量下降.响应时间慢等问题,例如交换机故障.网线老化导致的丢包重传:存储阵列条带宽度不足.缓存不足.QoS限制.RAID级别设置不当等引起的IO延时. 一.评估 ...

  5. Java的Protected

    没想到接触Java这么多年,今天竟然才发现一直有一个误解 Proteced只能被同一个包内的或者子类的class访问 那么在另一个包的如下代码有问题吗? Sub sub = new Sub(); su ...

  6. idea(2)快捷键

    Ctrl+E:最近编辑文件 Ctrl+J:自动代码快捷 Ctrl+N:查找类 Ctrl+U:大小写转换 Ctrl+F12:outline Alt+1:全屏 Alt+F1:类定位到左侧目录 Alt+In ...

  7. ubuntu hadoop集群 master免密码登陆到slave节点

    1. 在master节点上安装ssh client,在slave节点上安装ssh server sudo apt-get install openssh-client sudo apt-get ins ...

  8. stream2

    import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.function.B ...

  9. python3与python2的区别 记录一波

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  10. Mybatis学习笔记14 - 动态sql之foreach标签

    一.查询给定集合中员工id对应的所有员工信息 示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import ...