您的位置:首页 > 编程语言 > Java开发

Struts2中访问web元素的四种方式及前台jsp页面获取后台值的方式

2015-09-16 09:21 766 查看
Struts2中访问web元素的四种方式(访问requst、session、application)

 

四种方式:

1. 通过ActionContext来访问request,session,application对象

2. 通过实现RequestAware、SessionAware、ApplicationAware接口来访问request,session,application对象

3. 通过ServletActionContext来访问request,session,application对象

4. 通过实现ServletRequestAware接口来访问request,session,application对象

 

演示代码:

方式一:

view plaincopy to clipboardprint?

 

public class UserAction1 extends ActionSupport{  

     

    private static final long serialVersionUID = 1L;  

     

    private Map <String,Object>request;  

     

    private Map <String,Object>session;  

     

    private Map <String,Object>application;  

     

    @SuppressWarnings("unchecked")  

    @Override 

    public String execute(){  

        System.out.println("通过ActionContext来访问request,session,application对象");  

        // 初始化  

        request = (Map<String,Object>)ActionContext.getContext().get("request");  

        session = ActionContext.getContext().getSession();  

        application = ActionContext.getContext().getApplication();  

        // 赋值  

        request.put("requestKey", "requestValue");  

        session.put("sessionKey", "sessionValue");  

        application.put("applicationKey", "applicationValue");  

        return "success";  

    }  



public class UserAction1 extends ActionSupport{

 

 private static final long serialVersionUID = 1L;

 

 private Map <String,Object>request;

 

 private Map <String,Object>session;

 

 private Map <String,Object>application;

 

 @SuppressWarnings("unchecked")

 @Override

 public String execute(){

  System.out.println("通过ActionContext来访问request,session,application对象");

  // 初始化

  request = (Map<String,Object>)ActionContext.getContext().get("request");

  session = ActionContext.getContext().getSession();

  application = ActionContext.getContext().getApplication();

  // 赋值

  request.put("requestKey", "requestValue");

  session.put("sessionKey", "sessionValue");

  application.put("applicationKey", "applicationValue");

  return "success";

 }

}

方式二:

view plaincopy to clipboardprint?

 

public class UserAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{  

     

    private static final long serialVersionUID = 1L;  

     

    private Map <String,Object>request;  

     

    private Map <String,Object>session;  

     

    private Map <String,Object>application;  

     

    @SuppressWarnings("unchecked")  

    @Override 

    public String execute(){  

        System.out.println("通过实现RequestAware、SessionAware、ApplicationAware接口来访问request,session,application对象");  

        // 赋值  

        request.put("requestKey", "requestValue");  

        session.put("sessionKey", "sessionValue");  

        application.put("applicationKey", "applicationValue");  

        return "success";  

    }  

     

    @Override 

    public void setRequest(Map<String, Object> request) {  

        this.request = request;  

    }  

     

    @Override 

    public void setApplication(Map<String, Object> application) {  

        this.application = application;  

    }  

     

    @Override 

    public void setSession(Map<String, Object> session) {  

        this.session = session;  

    }  



public class UserAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{

 

 private static final long serialVersionUID = 1L;

 

 private Map <String,Object>request;

 

 private Map <String,Object>session;

 

 private Map <String,Object>application;

 

 @SuppressWarnings("unchecked")

 @Override

 public String execute(){

  System.out.println("通过实现RequestAware、SessionAware、ApplicationAware接口来访问request,session,application对象");

  // 赋值

  request.put("requestKey", "requestValue");

  session.put("sessionKey", "sessionValue");

  application.put("applicationKey", "applicationValue");

  return "success";

 }

 

 @Override

 public void setRequest(Map<String, Object> request) {

  this.request = request;

 }

 

 @Override

 public void setApplication(Map<String, Object> application) {

  this.application = application;

 }

 

 @Override

 public void setSession(Map<String, Object> session) {

  this.session = session;

 }

}

方式三:

view plaincopy to clipboardprint?

 

public class UserAction3 extends ActionSupport{  

     

    private static final long serialVersionUID = 1L;  

     

    private HttpServletRequest request;  

     

    private HttpSession session;  

     

    private ServletContext application;  

     

    @SuppressWarnings("unchecked")  

    @Override 

    public String execute(){  

        System.out.println("通过ServletActionContext来访问request,session,application对象");  

        // 初始化  

        request = ServletActionContext.getRequest();  

        session = request.getSession();  

        application = session.getServletContext();  

        // 赋值  

        request.setAttribute("requestKey", "requestValue");  

        session.setAttribute("sessionKey", "sessionValue");  

        application.setAttribute("applicationKey", "applicationValue");  

        return "success";  

    }  



public class UserAction3 extends ActionSupport{

 

 private static final long serialVersionUID = 1L;

 

 private HttpServletRequest request;

 

 private HttpSession session;

 

 private ServletContext application;

 

 @SuppressWarnings("unchecked")

 @Override

 public String execute(){

  System.out.println("通过ServletActionContext来访问request,session,application对象");

  // 初始化

  request = ServletActionContext.getRequest();

  session = request.getSession();

  application = session.getServletContext();

  // 赋值

  request.setAttribute("requestKey", "requestValue");

  session.setAttribute("sessionKey", "sessionValue");

  application.setAttribute("applicationKey", "applicationValue");

  return "success";

 }

}

方式四:

view plaincopy to clipboardprint?

 

public class UserAction4 extends ActionSupport implements ServletRequestAware{  

     

    private static final long serialVersionUID = 1L;  

     

    private HttpServletRequest request;  

     

    private HttpSession session;  

     

    private ServletContext application;  

     

    @SuppressWarnings("unchecked")  

    @Override 

    public String execute(){  

        System.out.println("通过实现ServletRequestAware接口来访问request,session,application对象");  

        // 赋值  

        request.setAttribute("requestKey", "requestValue");  

        session.setAttribute("sessionKey", "sessionValue");  

        application.setAttribute("applicationKey", "applicationValue");  

        return "success";  

    }  

     

    @Override 

    public void setServletRequest(HttpServletRequest request) {  

        this.request = request;  

        this.session = request.getSession();  

        this.application = session.getServletContext();  

    }  



public class UserAction4 extends ActionSupport implements ServletRequestAware{

 

 private static final long serialVersionUID = 1L;

 

 private HttpServletRequest request;

 

 private HttpSession session;

 

 private ServletContext application;

 

 @SuppressWarnings("unchecked")

 @Override

 public String execute(){

  System.out.println("通过实现ServletRequestAware接口来访问request,session,application对象");

  // 赋值

  request.setAttribute("requestKey", "requestValue");

  session.setAttribute("sessionKey", "sessionValue");

  application.setAttribute("applicationKey", "applicationValue");

  return "success";

 }

 

 @Override

 public void setServletRequest(HttpServletRequest request) {

  this.request = request;

  this.session = request.getSession();

  this.application = session.getServletContext();

 }

}

上面的action配套的struts.xml及jsp页面

struts.xml

view plaincopy to clipboardprint?

<struts> 

    <!-- 配置开发模式:修改不用重启服务器 --> 

    <constant name="struts.devMode" value="true"/> 

    <package name="" namespace="/login" extends="struts-default"> 

        <action name="login*" class="com.wj.struts2.action.UserAction{1}"> 

            <result name="success">/success.jsp</result> 

            <result name="failure">/failure.jsp</result> 

        </action> 

    </package> 

</struts> 

<struts>

 <!-- 配置开发模式:修改不用重启服务器 -->

 <constant name="struts.devMode" value="true"/>

    <package name="" namespace="/login" extends="struts-default">

        <action name="login*" class="com.wj.struts2.action.UserAction{1}">

         <result name="success">/success.jsp</result>

         <result name="failure">/failure.jsp</result>

        </action>

    </package>

</struts>

index.jsp

view plaincopy to clipboardprint?

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 

<%@taglib uri="/struts-tags" prefix="s" %> 

<%  

    String path = request.getContextPath();  

    String basePath = request.getScheme() + "://"  

            + request.getServerName() + ":" + request.getServerPort()  

            + path + "/";  

%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

    <head> 

        <base href="<%=basePath%>"> 

 

        <title>Struts2_AccessWebElements</title> 

        <meta http-equiv="pragma" content="no-cache"> 

        <meta http-equiv="cache-control" content="no-cache"> 

        <meta http-equiv="expires" content="0"> 

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 

        <meta http-equiv="description" content="This is my page"> 

        <!-- 

        <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 

        --> 

        <mce:script language="javascript"><!--  

            function sub(str){  

                document.form1.action = str;  

                document.form1.submit();  

            }  

          

// --></mce:script> 

    </head> 

 

    <body> 

        <form name="form1"> 

            <div> 

                Struts2中访问web元素的四种方式<br> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: