zoukankan      html  css  js  c++  java
  • Struts2_访问Web元素

    取得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 }

    取值方式和第三种一样。

    补充:

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

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

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

  • 相关阅读:
    JavaScript原生对象属性和方法详解——Array对象[转]
    SVN的trunk branch tag (二)
    git入门使用摘录
    文字画工具推荐
    mysql 基础操作
    mobile 测试入门思维导图
    淘宝性能测试线下测试与线上跟踪体系
    github使用入门 之GIT GUI Windows版
    C++ 单向链表反转
    shell脚本实例一,移动文件夹中大于2000B的文件到另一个文件夹
  • 原文地址:https://www.cnblogs.com/ShawnYang/p/6673916.html
Copyright © 2011-2022 走看看