访问web元素

来源:互联网 发布:淘宝不能登录 编辑:程序博客网 时间:2024/06/10 04:54

分别介绍两种方法来取得request、session、application和 HttpServletRequest、HttpSession、ServletContext

这里是第一种方法,不过不常用,过于依赖于容器

Java代码
  1. public class LoginAction extends ActionSupport {    
  2.         
  3.     private Map request;    
  4.     private Map session;    
  5.     private Map application;    
  6.         
  7.     public LoginAction1() {    
  8.         request = (Map)ActionContext.getContext().get("request");    
  9.         session = ActionContext.getContext().getSession();    
  10.         application = ActionContext.getContext().getApplication();    
  11.     }    
  12.     
  13.        public String execute() {    
  14.         request.put("r1""r1");    
  15.         session.put("s1""s1");    
  16.         application.put("a1""a1");    
  17.         return SUCCESS;     
  18.     }    
  19.         
  20. }    




第二种方法:这种方法最常用!!!!struts标签访问,加“#”。
//只用这种方法!!!这种方法最常用(而且中间涉及到一种思想:控制反转或称依赖注入)

Java代码
  1. package dalei;  
  2. import java.util.Map;  
  3. import org.apache.struts2.interceptor.ApplicationAware;  
  4. import org.apache.struts2.interceptor.RequestAware;  
  5. import org.apache.struts2.interceptor.SessionAware;  
  6. import com.opensymphony.xwork2.ActionSupport;  
  7. public class Action_02 extends ActionSupport implements RequestAware,  
  8.         SessionAware, ApplicationAware {  
  9.     //IoC inverse of control(控制反转)  
  10.     //DI dependency injection(依赖注入)  
  11.     private Map<String, Object> request;  
  12.     private Map<String, Object> session;  
  13.     private Map<String, Object> application;  
  14.     //因为是Map类型的数据,所以不能再用以前的setAttribute。  
  15.     public String execute() {  
  16.         request.put("r1""r1");  
  17.         session.put("s1""s1");  
  18.         application.put("a1""a1");  
  19.         return SUCCESS;  
  20.     }  
  21.     //负责把三个元素new()出来,容器帮忙来初始化。  
  22.     @Override  
  23.     public void setRequest(Map<String, Object> request) {  
  24.         this.request = request;  
  25.     }  
  26.     @Override  
  27.     public void setSession(Map<String, Object> session) {  
  28.         this.session = session;  
  29.     }  
  30.     @Override  
  31.     public void setApplication(Map<String, Object> application) {  
  32.         this.application = application;  
  33.     }  
  34. }                                                                
  35.   
  36.                                                        Action_02.java  



  1. <action name="er"class="dalei.Action_02">  
  2.            <result>  
  3.               /hello.jsp  
  4.            </result>  
  5.        </action>                    

struts中,jsp页面取context中的值:

  1. <s:property value="#request.r1"/> | <%=request.getAttribute("r1") %><br>  
  2.     <s:property value="#session.s1"/>  |  <%=session.getAttribute("s1") %><br>  
  3.     <s:property value="#application.a1"/>  |  <%=application.getAttribute("a1")%><br>  
  4.    <s:debug />  
  5.                                                   hello.jsp  



第三种方法

Java代码
  1. import javax.servlet.ServletContext;    
  2. import javax.servlet.http.HttpServletRequest;    
  3. import javax.servlet.http.HttpSession;     
  4. import org.apache.struts2.ServletActionContext;    
  5. import com.opensymphony.xwork2.ActionSupport;    
  6.     
  7. public class LoginAction3 extends ActionSupport {    
  8.         
  9.     private HttpServletRequest request;    
  10.     private HttpSession session;    
  11.     private ServletContext application;    
  12.         
  13.     public LoginAction3() {    
  14.         request = ServletActionContext.getRequest();    
  15.         session = request.getSession();    
  16.         application = session.getServletContext();    
  17.     }    
  18.         
  19.     public String execute() {    
  20.         request.setAttribute("r1""r1");    
  21.         session.setAttribute("s1""s1");    
  22.         application.setAttribute("a1""a1");    
  23.         return SUCCESS;     
  24.     }    
  25.         
  26. }    




第四种方法

Java代码
  1. import javax.servlet.ServletContext;    
  2. import javax.servlet.http.HttpServletRequest;    
  3. import javax.servlet.http.HttpSession;    
  4.     
  5. import org.apache.struts2.interceptor.ServletRequestAware;    
  6.     
  7. import com.opensymphony.xwork2.ActionSupport;    
  8.     
  9. public class LoginAction extends ActionSupport implements ServletRequestAware {    
  10.         
  11.     private HttpServletRequest request;    
  12.     private HttpSession session;    
  13.     private ServletContext application;    
  14.         
  15.     public String execute() {    
  16.         request.setAttribute("r1""r1");    
  17.         session.setAttribute("s1""s1");    
  18.         application.setAttribute("a1""a1");    
  19.         return SUCCESS;     
  20.     }    
  21.     
  22.     @Override    
  23.     public void setServletRequest(HttpServletRequest request) {    
  24.         this.request = request;    
  25.         this.session = request.getSession();    
  26.         this.application = session.getServletContext();    
  27.     }    
  28.         
  29. }  
原创粉丝点击