Struts2获取web对象的4种方式

来源:互联网 发布:中国十大zu最恶心公知 编辑:程序博客网 时间:2024/06/06 06:36
 

Struts2获取web对象的4种方式

 134人阅读 评论(0) 收藏 举报
 分类:
 

目录(?)[-]

  1. Struts2获取web对象的4种方式
    1. 一通过ServletActionContext取HttpServletRequest对象
    2. 二通过ServletRequestAwareServletResponseAware 来注入HttpServletRequestHttpServletResponse对象
    3. 三通过ActionContext取Map
    4. 四通过RequestAwareSessionAwareApplicationAware接口来注入  三个Map

Struts2获取web对象的4种方式

Struts2是如何获取web中 request、session、application的了,Struts2有4种方式获取web对象

1.通过ServletActionContext取HttpServletRequest对象

2.通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest、(HttpServletResponse)对象

3.通过ActionContext取Map

4.通过RequestAware,SessionAware,ApplicationAware接口,来注入  三个Map


下面的例子就用以上4种方式来实现如何获取web对象

首先建立一个实体类,接收从客户端传过来的参数,通过ModelDriven,如果对传递参数不明白的可以参看我上篇文章三种对象传参和ModelDriven的原理


一个Student实体类

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.yc.web.actions;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. public class Student implements Serializable {  
  6.     private static final long serialVersionUID = -6646865822958505769L;  
  7.     private String name;  
  8.     private Integer age;  
  9.     public String getName() {  
  10.         return name;  
  11.     }  
  12.     public void setName(String name) {  
  13.         this.name = name;  
  14.     }  
  15.     public Integer getAge() {  
  16.         return age;  
  17.     }  
  18.     public void setAge(Integer age) {  
  19.         this.age = age;  
  20.     }  
  21. }  


一、通过ServletActionContext取HttpServletRequest对象

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.yc.web.actions;  
  2.   
  3. import javax.servlet.ServletContext;  
  4. import javax.servlet.http.HttpServletRequest;  
  5. import javax.servlet.http.HttpServletResponse;  
  6. import javax.servlet.http.HttpSession;  
  7.   
  8. import org.apache.struts2.ServletActionContext;  
  9.   
  10. import com.opensymphony.xwork2.Action;  
  11. import com.opensymphony.xwork2.ActionSupport;  
  12. import com.opensymphony.xwork2.ModelDriven;  
  13.   
  14. public class StudentAction extends ActionSupport implements ModelDriven<Student>{  
  15.     private static final long serialVersionUID = 1213446993015542840L;  
  16.     private Student student;  
  17.     private HttpServletRequest request;  
  18.     private HttpSession session;  
  19.     private ServletContext application;  
  20.     private HttpServletResponse response;  
  21.       
  22.     public  StudentAction() {  
  23.         //获取web对象  
  24.         request=ServletActionContext.getRequest();  
  25.         session=request.getSession();  
  26.         application=session.getServletContext();  
  27.     }  
  28.     public String execute(){  
  29.         //赋值  
  30.         request.setAttribute("student", student);  
  31.         session.setAttribute("student", student);  
  32.         application.setAttribute("student", student);  
  33.         return Action.SUCCESS;  
  34.     }  
  35.     @Override  
  36.     public Student getModel() {  
  37.         student =new Student();  
  38.         return student;  
  39.     }  
  40. }  

二、通过ServletRequestAware(ServletResponseAware )来注入HttpServletRequest(HttpServletResponse)对象

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.yc.web.actions;  
  2.   
  3. import javax.servlet.ServletContext;  
  4. import javax.servlet.http.HttpServletRequest;  
  5. import javax.servlet.http.HttpServletResponse;  
  6. import javax.servlet.http.HttpSession;  
  7.   
  8. import org.apache.struts2.ServletActionContext;  
  9. import org.apache.struts2.interceptor.ServletRequestAware;  
  10. import org.apache.struts2.interceptor.ServletResponseAware;  
  11.   
  12. import com.opensymphony.xwork2.Action;  
  13. import com.opensymphony.xwork2.ActionSupport;  
  14. import com.opensymphony.xwork2.ModelDriven;  
  15.   
  16. public class StudentAction2 extends ActionSupport implements   
  17. ModelDriven<Student> ,ServletRequestAware,ServletResponseAware{  
  18.     private static final long serialVersionUID = 1213446993015542840L;  
  19.     private Student student;  
  20.     private HttpServletRequest request;  
  21.     private HttpSession session;  
  22.     private ServletContext application;  
  23.     private HttpServletResponse response;  
  24.       
  25.     @Override  
  26.     public Student getModel() {  
  27.         student =new Student();  
  28.         return student;  
  29.     }  
  30.     @Override  
  31.     public void setServletResponse(HttpServletResponse arg0) {  
  32.         //获取response对象  
  33.         response=arg0;  
  34.     }  
  35.   
  36.     @Override  
  37.     public void setServletRequest(HttpServletRequest arg0) {  
  38.         //获取web对象  
  39.         request=arg0;  
  40.         session=request.getSession();  
  41.         application=session.getServletContext();  
  42.     }  
  43.       
  44.     public String execute(){  
  45.         //赋值  
  46.         request.setAttribute("student", student);  
  47.         session.setAttribute("student", student);  
  48.         application.setAttribute("student", student);  
  49.         return Action.SUCCESS;  
  50.           
  51.     }  
  52. }  

三、通过ActionContext取Map


[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.yc.web.actions;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.servlet.ServletContext;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. import javax.servlet.http.HttpSession;  
  9.   
  10. import org.apache.struts2.ServletActionContext;  
  11. import org.apache.struts2.interceptor.ServletRequestAware;  
  12. import org.apache.struts2.interceptor.ServletResponseAware;  
  13.   
  14. import com.opensymphony.xwork2.Action;  
  15. import com.opensymphony.xwork2.ActionContext;  
  16. import com.opensymphony.xwork2.ActionSupport;  
  17. import com.opensymphony.xwork2.ModelDriven;  
  18.   
  19. public class StudentAction3 extends ActionSupport implements ModelDriven<Student>{  
  20.     private static final long serialVersionUID = 1213446993015542840L;  
  21.     private Student student;  
  22.     private Map<String ,Object> request;  
  23.     private Map<String ,Object> session;  
  24.     private Map<String ,Object> application;  
  25.     public  StudentAction3() {  
  26.         //获取web对象  
  27.         request=(Map<String, Object>) ActionContext.getContext().get("request");  
  28.         session=ActionContext.getContext().getSession();  
  29.         application=ActionContext.getContext().getApplication();  
  30.     }  
  31.     public String execute(){  
  32.         //赋值  
  33.         request.put("student", student);  
  34.         session.put("student", student);  
  35.         application.put("student", student);  
  36.         return Action.SUCCESS;  
  37.           
  38.     }  
  39.     @Override  
  40.     public Student getModel() {  
  41.         student =new Student();  
  42.         return student;  
  43.     }  
  44. }  


四、通过RequestAware,SessionAware,ApplicationAware接口,来注入  三个Map

[java] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. package com.yc.web.actions;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.servlet.ServletContext;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. import javax.servlet.http.HttpSession;  
  9.   
  10. import org.apache.struts2.ServletActionContext;  
  11. import org.apache.struts2.interceptor.ApplicationAware;  
  12. import org.apache.struts2.interceptor.RequestAware;  
  13. import org.apache.struts2.interceptor.ServletRequestAware;  
  14. import org.apache.struts2.interceptor.ServletResponseAware;  
  15. import org.apache.struts2.interceptor.SessionAware;  
  16.   
  17. import com.opensymphony.xwork2.Action;  
  18. import com.opensymphony.xwork2.ActionSupport;  
  19. import com.opensymphony.xwork2.ModelDriven;  
  20.   
  21. import freemarker.template.utility.Execute;  
  22.   
  23. public class StudentAction4 extends ActionSupport implements   
  24. ModelDriven<Student> ,RequestAware,SessionAware,ApplicationAware{  
  25.     private static final long serialVersionUID = 1213446993015542840L;  
  26.     private Student student;  
  27.     private Map<String ,Object> request;  
  28.     private Map<String ,Object> session;  
  29.     private Map<String ,Object> application;  
  30.       
  31.     public String execute(){  
  32.         //赋值  
  33.         request.put("student", student);  
  34.         session.put("student", student);  
  35.         application.put("student", student);  
  36.         return Action.SUCCESS;  
  37.           
  38.     }  
  39.       
  40.     @Override  
  41.     public Student getModel() {  
  42.         student =new Student();  
  43.         return student;  
  44.     }  
  45.     //获取web对象  
  46.     @Override  
  47.     public void setApplication(Map<String, Object> arg0) {  
  48.         application=arg0;  
  49.     }  
  50.     @Override  
  51.     public void setSession(Map<String, Object> arg0) {  
  52.         session=arg0;  
  53.           
  54.     }  
  55.     @Override  
  56.     public void setRequest(Map<String, Object> arg0) {  
  57.         request=arg0;  
  58.     }  
  59. }  

下面是访问页面 index,jsp

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.   
  11. </body>  
  12.     <a href="student.action?name=tg&age=20">学生 </a>  
  13.     <a href="student2.action?name=tg&age=20">学生 </a>  
  14.     <a href="student3.action?name=tg&age=20">学生 </a>  
  15.     <a href="student4.action?name=tg&age=20">学生 </a>  
  16. </html>  

下面struts.xml


[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  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.   
  8.     <constant name="struts.enable.DynamicMethodInvocation" value="false" />  
  9.     <constant name="struts.devMode" value="true" />  
  10.     <constant name="struts.action.extension" value="action,do,,"/>  
  11.       
  12.     <package name="default" namespace="/" extends="struts-default">  
  13.   
  14.       <action name="student" class="com.yc.web.actions.StudentAction">  
  15.         <result name="success">/show.jsp</result>   
  16.       </action>  
  17.         
  18.        <action name="student2" class="com.yc.web.actions.StudentAction2">  
  19.         <result name="success">/show.jsp</result>   
  20.       </action>  
  21.         
  22.        <action name="student3" class="com.yc.web.actions.StudentAction3">  
  23.         <result name="success">/show.jsp</result>  
  24.       </action>  
  25.         
  26.        <action name="student4" class="com.yc.web.actions.StudentAction4">  
  27.         <result name="success">/show.jsp</result>  
  28.       </action>  
  29.         
  30.       <action name="student4" class="com.yc.web.actions.StudentAction4">  
  31.         <result name="success">/show.jsp</result>  
  32.       </action>  
  33.     </package>  
  34.   
  35. </struts>  

访问成功显示页面show.jsp


[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.     ${requestScope.student.name}   -${requestScope.student.age}  <br/>  
  11.     ${sessionScope.student.name}   -${sessionScope.student.age} <br/>   
  12.     ${applicationScope.student.name} -${applicationScope.student.age}  <br/>  
  13. </body>  
  14. </html>  
0 0