完整代码 :Struts12AccessWebElement.rar

第一种也是最常用的一种方法实现这几个接口

RequestAware,SessionAware,ApplicationAware

struts以依赖注入方式把request,session和application赋上值,看一下完整的代码

  1. package com.pengli.struts.parampack;
  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.opensymphony.xwork2.ActionSupport;
  10.  
  11. public class MyWinAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
  12.  
  13. static int actionCount=0;
  14. private Map<String, Object> my_Request;
  15. private Map<String, Object> session;
  16. private Map<String, Object> application;
  17.  
  18. public String add()
  19. {
  20. AddKey();
  21. return "add";
  22. }
  23.  
  24. @Override
  25. public void setRequest(Map<String, Object> arg0) {
  26. // TODO Auto-generated method stub
  27. my_Request=arg0;
  28. }
  29.  
  30. @Override
  31. public void setApplication(Map<String, Object> arg0) {
  32. // TODO Auto-generated method stub
  33. application=arg0;
  34. }
  35.  
  36. @Override
  37. public void setSession(Map<String, Object> arg0) {
  38. // TODO Auto-generated method stub
  39. session = arg0;
  40. }
  41.  
  42. private void AddKey()
  43. {
  44.  
  45. ++actionCount;
  46. my_Request.put("a1", "Two"+actionCount);
  47.  
  48. ++actionCount;
  49. session.put("a2", "Two"+actionCount);
  50.  
  51. ++actionCount;
  52. application.put("a3", "Two"+actionCount);
  53. }
  54.  
  55. }

第二种方式是实现ServletRequestAware接口

得到request接口后,再根据 request的方法去得到session和application

  1. package com.pengli.struts.parampack;
  2.  
  3. import javax.servlet.ServletContext;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6.  
  7. import org.apache.struts2.interceptor.ServletRequestAware;
  8. import org.apache.struts2.util.ServletContextAware;
  9.  
  10. import com.opensymphony.xwork2.ActionSupport;
  11.  
  12. public class MyWinAction3 extends ActionSupport implements ServletRequestAware {
  13.  
  14. private HttpServletRequest request;
  15. private HttpSession session;
  16. private ServletContext application;
  17.  
  18. public String add() {
  19. setAttribute();
  20. return "add";
  21. }
  22.  
  23. @Override
  24. public void setServletRequest(HttpServletRequest arg0) {
  25. // TODO Auto-generated method stub
  26. request=arg0;
  27. session=request.getSession();
  28. application=session.getServletContext();
  29.  
  30. }
  31.  
  32. private void setAttribute() {
  33. request.setAttribute("a1", "ThreeA1");
  34. session.setAttribute("a2", "ThreeA2");
  35. application.setAttribute("a3", "ThreeA3");
  36. }
  37.  
  38. }

第三种方式和第二种有点像,是用ServletActionContext得到request再得到sesion和application

  1. package com.pengli.struts.parampack;
  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 MyWinAction4 extends ActionSupport{
  12.  
  13. private HttpServletRequest request;
  14. private HttpSession session;
  15. private ServletContext application;
  16.  
  17. public String add(){
  18.  
  19. getInfo();
  20. setAttribute();
  21.  
  22. return "add";
  23. }
  24.  
  25. private void getInfo()
  26. {
  27. request = ServletActionContext.getRequest();
  28. session = request.getSession();
  29. application = session.getServletContext();
  30. }
  31.  
  32. private void setAttribute()
  33. {
  34. request.setAttribute("a1", "FourA1");
  35. session.setAttribute("a2", "FourA2");
  36. application.setAttribute("a3", "FourA3");
  37. }
  38. }

最后一种方法是通过ActionContext得到相应的参数

  1. package com.pengli.struts.parampack;
  2.  
  3. import java.util.Map;
  4.  
  5. import com.opensymphony.xwork2.ActionContext;
  6. import com.opensymphony.xwork2.ActionSupport;
  7.  
  8. public class MyWiAction extends ActionSupport {
  9.  
  10. private UserModel user;
  11. public String add1()
  12. {
  13. if(user == null)
  14. {
  15. this.addFieldError("user", "user object is null");
  16. return ERROR;
  17. }
  18. if(user.getName()== null||user.getAge() == null)
  19. {
  20. this.addFieldError("name", "name is null");
  21. this.addFieldError("age", "age is null");
  22. return ERROR;
  23. }
  24. System.out.println(user.getAge());
  25. System.out.println(user.getName());
  26. return "add1";
  27. }
  28. static int actionCount=0;
  29. private Map request1;
  30. private Map session1;
  31. private Map application1;
  32.  
  33. public String add()
  34. {
  35. request1 = (Map)ActionContext.getContext().get("request");
  36. session1=ActionContext.getContext().getSession();
  37. application1 = ActionContext.getContext().getApplication();
  38.  
  39. AddKey();
  40.  
  41. return "add";
  42. }
  43.  
  44. @Override
  45. public String execute() throws Exception {
  46. // TODO Auto-generated method stub
  47.  
  48. return super.execute();
  49. }
  50.  
  51. public String add2()
  52. {
  53. return "add2";
  54. }
  55.  
  56. public String add3()
  57. {
  58. return "add3";
  59. }
  60.  
  61. private void AddKey()
  62. {
  63.  
  64. ++actionCount;
  65. request1.put("a1", "a1haha"+actionCount);
  66.  
  67. ++actionCount;
  68. session1.put("a2", "a2haha"+actionCount);
  69.  
  70. ++actionCount;
  71. application1.put("a3", "a3haha"+actionCount);
  72.  
  73. }
  74. public String edit()
  75. {
  76. return "edit";
  77. }
  78.  
  79. public UserModel getUser() {
  80. return user;
  81. }
  82.  
  83. public void setUser(UserModel user) {
  84. this.user = user;
  85. }
  86. }

再看一下web页面如何访问这些元素

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <%@ taglib uri="/struts-tags" prefix="s" %>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'Oneaddok.jsp' starting page</title>
  13.  
  14. <meta http-equiv="pragma" content="no-cache">
  15. <meta http-equiv="cache-control" content="no-cache">
  16. <meta http-equiv="expires" content="0">
  17. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  18. <meta http-equiv="description" content="This is my page">
  19. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22.  
  23. </head>
  24.  
  25. <body>
  26. This is my JSP page. <br>
  27. <s:property value="#request.a1" />|<%= request.getAttribute("a1") %> <br/>
  28. <s:property value="#session.a2" />|<%= session.getAttribute("a2") %> <br/>
  29. <s:property value="#application.a3" />|<%= application.getAttribute("a3") %> <br/>
  30. </body>
  31. </html>

再看一下struts.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5.  
  6. <struts>
  7. <!-- Add packages here -->
  8. <constant name="struts.devMode" value="true" />
  9. <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
  10. <package name="default1" namespace="/" extends="struts-default">
  11. <action name="One*1" class="com.pengli.struts.parampack.MyWiAction" method="{1}">
  12. <result name ="{1}">
  13. /Oneaddok.jsp
  14. </result>
  15. <result name="error">
  16. /errorpage.jsp
  17. </result>
  18. </action>
  19. <action name="One*2" class="com.pengli.struts.parampack.MyWinAction2" method="{1}">
  20. <result name ="{1}">
  21. /Oneaddok.jsp
  22. </result>
  23. <result name="error">
  24. /errorpage.jsp
  25. </result>
  26. </action>
  27. <action name="One*3" class="com.pengli.struts.parampack.MyWinAction3" method="{1}">
  28. <result name ="{1}">
  29. /Oneaddok.jsp
  30. </result>
  31. <result name="error">
  32. /errorpage.jsp
  33. </result>
  34. </action>
  35. <action name="One*4" class="com.pengli.struts.parampack.MyWinAction4" method="{1}">
  36. <result name ="{1}">
  37. /Oneaddok.jsp
  38. </result>
  39. <result name="error">
  40. /errorpage.jsp
  41. </result>
  42. </action>
  43. </package>
  44. </struts>

完整代码 :Struts12AccessWebElement.rar

struts2 访问Web元素的4种方法的更多相关文章

  1. Struts2 访问web元素

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

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

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

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

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

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

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

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

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

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

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

  7. struts2的action访问servlet API的三种方法

    学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...

  8. Tomcat系列(11)——Tomcat 部署web应用的4种方法

    核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的man ...

  9. Action访问Servlet API的三种方法

    一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...

随机推荐

  1. 定义返回Block的函数

    鉴于Block与函数的相似性,先从返回函数指针的函数入手 返回函数指针的函数 int fun1(int arg){ return arg + 1;}int fun2(int arg){ return ...

  2. CSS之旅——第二站 如何更深入的理解各种选择器

    上篇我们说了为什么要使用css,这篇我们就从选择器说起,大家都知道浏览器会把远端过来的html解析成dom模型,有了dom模型,html就变成 了xml格式,否则的话就是一堆“杂乱无章”的string ...

  3. 用批处理来自动化项目编译及部署(附Demo)

    阅读目录 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 介绍 详细 处理 结论 Demo下载 介绍 一个项目从立项开始,可能就已经根据公司的配置模板将 ...

  4. cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题

    最近在解决XSS注入的问题,由于使用的servlet版本是2.5,不支持httpOnly的属性,故做了个工具类来实现cookie的httpOnly的功能.全类如下: /** * cookie工具类,解 ...

  5. /proc/interrupts 统计2.6.38.8与3.10.25差异

    eth4进,eth5出 linux-3.10.25 67:          2          3          2          3   PCI-MSI-edge     eth468: ...

  6. vlan协议及端口类型

    一.VLAN协议 1.协议的应用 802.1Q协议,即Virtual Bridged Local Area Networks协议,主要规定了VLAN的实现. 2.协议结构 每一个支持802.1Q协议的 ...

  7. 2014 UESTC暑前集训数据结构专题解题报告

    A.Islands 这种联通块的问题一看就知道是并查集的思想. 做法:从高水位到低水位依序进行操作,这样每次都有新的块浮出水面,可以在前面的基础上进行合并集合的操作.给每个位置分配一个数字,方便合并集 ...

  8. android代码优化----ListView中自定义adapter的封装(ListView的模板写法)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. struts2初体验

    一:什么是struts2? Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点 Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开 ...

  10. hibernate save,update,saveorupdate方法有什么区别

    save肯定是添加的时候用,update修改时候用,saveorupdate是添加或修改,如果真是这样save和update的存在就没意义了,我们直接saveorupdate就行了. save在添加用 ...