struts2涉及上下文对象的设置取值问题

来源:互联网 发布:php培训机构哪个好 编辑:程序博客网 时间:2024/05/22 00:38
 

struts2涉及上下文对象的设置取值问题

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

目录(?)[+]

Sturts2中:

       前后台数据的通讯,不仅需要Struts2标签    ognl表达式   还需要我们对request   session  application等等,这些栈上下文做一些处理,才能保证前后台通讯的顺畅!

        我们可以通过以下几种办法来获取这些对象进行处理,以便进行前后台之间的通讯。

方法一:取得Map类型的request、session、application:(该方式有两种方式)

     方式A

public class TestAction1 extends ActionSupport  {

    //步骤一:在Action类中定义private Map request;private Map session;private Map application;
    private  Map    request;  
    private  Map    session;  
    private  Map   application;
    //步骤二:初始化各个属性
    public   void   init(){
      this.request=(Map) ActionContext.getContext().get("request");
      this.session=(Map)ActionContext.getContext().getSession();
      this.application=(Map)ActionContext.getContext().getApplication(); 
    }
    //步骤三:在execute()或者是自己定义的方法中使用这些对象进行设值。

    public String  execute() {
              init();
        request.put("jkqiang", "亮亮");
        session.put("hank", "伟伟");
        application.put("john","强强");
  return SUCCESS;
 }
}

在前台可以通过<s:property value="#request.xx" />

                           <s:property value="#session.xx" />

                           <s:property value="#application.xx" />

 其中xx表示你自己在request、session、application中设定的key。

<%@ page pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
 <head>
  <title>Test</title>
 </head>
 <body>
  <h1>
   Test
  </h1>
  <s:debug></s:debug> 
  <h2>
           <s:property   value="#request.jkqiang"/><br/>
           <s:property   value="#session.hank"/><br/>
           <s:property   value="#application.john"/>
  </h2>
 </body>
</html>

==========显示效果

Test

[Debug]

Struts ValueStack Debug

Value Stack Contents

ObjectProperty NameProperty Valuecom.jkqiang.tts.action.TestAction1textsnullactionErrors[]errors{}fieldErrors{}errorMessages[]localezh_CNactionMessages[]com.opensymphony.xwork2.DefaultTextProvidertextsnull

Stack Context

These items are available using the #key notationKeyValuecom.opensymphony.xwork2.dispatcher.HttpServletRequestorg.apache.struts2.dispatcher.StrutsRequestWrapper@8ebb5acom.opensymphony.xwork2.ActionContext.localezh_CNcom.opensymphony.xwork2.dispatcher.HttpServletResponseorg.apache.catalina.connector.ResponseFacade@18eb00ccom.opensymphony.xwork2.ActionContext.namemystruts1com.opensymphony.xwork2.ActionContext.application{javax.servlet.context.tempdir=E:\apache-tomcat-6.0.18\work\Catalina\localhost\Test, org.apache.catalina.WELCOME_FILES=[Ljava.lang.String;@32ef2d, org.apache.AnnotationProcessor=org.apache.catalina.util.DefaultAnnotationProcessor@6a60d5, org.apache.jasper.runtime.JspApplicationContextImpl=org.apache.jasper.runtime.JspApplicationContextImpl@183e895, org.apache.catalina.jsp_classpath=/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/classes/;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/commons-fileupload-1.2.1.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/commons-logging-1.0.4.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/freemarker-2.3.15.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/javax.servlet.jsp.jstl.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/jsf-api.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/jsf-impl.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/jstl-impl.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/ognl-2.7.3.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/struts2-core-2.1.8.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/xwork-core-2.1.6.jar;/E:/apache-tomcat-6.0.18/lib/;/E:/apache-tomcat-6.0.18/lib/annotations-api.jar;/E:/apache-tomcat-6.0.18/lib/catalina-ant.jar;/E:/apache-tomcat-6.0.18/lib/catalina-ha.jar;/E:/apache-tomcat-6.0.18/lib/catalina-tribes.jar;/E:/apache-tomcat-6.0.18/lib/catalina.jar;/E:/apache-tomcat-6.0.18/lib/el-api.jar;/E:/apache-tomcat-6.0.18/lib/jasper-el.jar;/E:/apache-tomcat-6.0.18/lib/jasper-jdt.jar;/E:/apache-tomcat-6.0.18/lib/jasper.jar;/E:/apache-tomcat-6.0.18/lib/jsp-api.jar;/E:/apache-tomcat-6.0.18/lib/servlet-api.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-coyote.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-dbcp.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-i18n-es.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-i18n-fr.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-i18n-ja.jar;/E:/apache-tomcat-6.0.18/bin/bootstrap.jar;/C:/jdk1.6.0_30/lib/tools.jar;/C:/jdk1.6.0_30/jre/lib/ext/dnsns.jar;/C:/jdk1.6.0_30/jre/lib/ext/localedata.jar;/C:/jdk1.6.0_30/jre/lib/ext/sunjce_provider.jar;/C:/jdk1.6.0_30/jre/lib/ext/sunmscapi.jar;/C:/jdk1.6.0_30/jre/lib/ext/sunpkcs11.jar, freemarker.Configuration=freemarker.template.Configuration@1f49969, john=强强, org.apache.catalina.resources=org.apache.naming.resources.ProxyDirContext@11aa58b}com.opensymphony.xwork2.ActionContext.conversionErrors{}__component_stack[org.apache.struts2.components.Debug@91e143]last.property.accessednullcom.opensymphony.xwork2.dispatcher.ServletContextorg.apache.catalina.core.ApplicationContextFacade@168f248com.opensymphony.xwork2.dispatcher.PageContextorg.apache.jasper.runtime.PageContextImpl@32fb80__requestWrapper.getAttributefalserequest{jkqiang=亮亮, .freemarker.Request=freemarker.ext.servlet.HttpRequestHashModel@116880a, javax.servlet.forward.context_path=/Test, javax.servlet.forward.request_uri=/Test/hello/mystruts1, struts.request_uri=/Test/hello/mystruts1, __cleanup_recursion_counter=1, javax.servlet.forward.servlet_path=/hello/mystruts1, struts.actionMapping=org.apache.struts2.dispatcher.mapper.ActionMapping@3d5149, .freemarker.RequestParameters=freemarker.ext.servlet.HttpRequestParametersHashModel@1a3bff5, struts.view_uri=/WEB-INF/jsp/test1.jsp, struts.valueStack=com.opensymphony.xwork2.ognl.OgnlValueStack@18f73cb}last.bean.accessednullactioncom.jkqiang.tts.action.TestAction1@16ca3d5parameters{}__link[Ljava.lang.Object;@1905a42application{javax.servlet.context.tempdir=E:\apache-tomcat-6.0.18\work\Catalina\localhost\Test, org.apache.catalina.WELCOME_FILES=[Ljava.lang.String;@32ef2d, org.apache.AnnotationProcessor=org.apache.catalina.util.DefaultAnnotationProcessor@6a60d5, org.apache.jasper.runtime.JspApplicationContextImpl=org.apache.jasper.runtime.JspApplicationContextImpl@183e895, org.apache.catalina.jsp_classpath=/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/classes/;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/commons-fileupload-1.2.1.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/commons-logging-1.0.4.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/freemarker-2.3.15.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/javax.servlet.jsp.jstl.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/jsf-api.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/jsf-impl.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/jstl-impl.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/ognl-2.7.3.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/struts2-core-2.1.8.jar;/E:/apache-tomcat-6.0.18/webapps/Test/WEB-INF/lib/xwork-core-2.1.6.jar;/E:/apache-tomcat-6.0.18/lib/;/E:/apache-tomcat-6.0.18/lib/annotations-api.jar;/E:/apache-tomcat-6.0.18/lib/catalina-ant.jar;/E:/apache-tomcat-6.0.18/lib/catalina-ha.jar;/E:/apache-tomcat-6.0.18/lib/catalina-tribes.jar;/E:/apache-tomcat-6.0.18/lib/catalina.jar;/E:/apache-tomcat-6.0.18/lib/el-api.jar;/E:/apache-tomcat-6.0.18/lib/jasper-el.jar;/E:/apache-tomcat-6.0.18/lib/jasper-jdt.jar;/E:/apache-tomcat-6.0.18/lib/jasper.jar;/E:/apache-tomcat-6.0.18/lib/jsp-api.jar;/E:/apache-tomcat-6.0.18/lib/servlet-api.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-coyote.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-dbcp.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-i18n-es.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-i18n-fr.jar;/E:/apache-tomcat-6.0.18/lib/tomcat-i18n-ja.jar;/E:/apache-tomcat-6.0.18/bin/bootstrap.jar;/C:/jdk1.6.0_30/lib/tools.jar;/C:/jdk1.6.0_30/jre/lib/ext/dnsns.jar;/C:/jdk1.6.0_30/jre/lib/ext/localedata.jar;/C:/jdk1.6.0_30/jre/lib/ext/sunjce_provider.jar;/C:/jdk1.6.0_30/jre/lib/ext/sunmscapi.jar;/C:/jdk1.6.0_30/jre/lib/ext/sunpkcs11.jar, freemarker.Configuration=freemarker.template.Configuration@1f49969, john=强强, org.apache.catalina.resources=org.apache.naming.resources.ProxyDirContext@11aa58b}xwork.NullHandler.createNullObjectsfalsecurrent.property.pathnullattrorg.apache.struts2.util.AttributeMap@1033fb5com.opensymphony.xwork2.ActionContext.containercom.opensymphony.xwork2.inject.ContainerImpl@117140bcom.opensymphony.xwork2.ActionContext.session{hank=伟伟}com.opensymphony.xwork2.ActionContext.actionInvocationcom.opensymphony.xwork2.DefaultActionInvocation@6e7127com.opensymphony.xwork2.util.ValueStack.ValueStackcom.opensymphony.xwork2.ognl.OgnlValueStack@18f73cbsession{hank=伟伟}report.conversion.errorsfalsexwork.MethodAccessor.denyMethodExecutionfalsestruts.actionMappingorg.apache.struts2.dispatcher.mapper.ActionMapping@3d5149com.opensymphony.xwork2.ActionContext.parameters{}

亮亮
伟伟
强强

方式B

第一步:让Action类实现RequestAware、SessionAware、ApplicationAware接口

public class TestAction2 extends ActionSupport  implements RequestAware SessionAwareApplicationAware {
 private static final long serialVersionUID = 1L;

//第二步:在Action类中定义private Map request;private Map session;private Map application;

       private    Map    request;  
       private    Map    session;  
       private    Map    application;

//第四步:在execute()或者是自己定义的方法中使用这些对象进行设值

 public String  execute() {
          request.put("book", "钢铁是怎么炼成的!");
          session.put("song", "义勇军进行曲!");
          application.put("word","世界真美好!");
  return SUCCESS;
 }

//第三步:覆盖接口中的setRequest(Map<String,Object>  request);

                                            setSession(Map<String,Object>  session);

                                            setApplication(Map<String,Object>  application);;
 public void setRequest(Map arg0) {
    this.request=arg0;
 }
 public void setSession(Map arg0) {
       this.session=arg0;  
 }
 public void setApplication(Map arg0) {
    this.application=arg0;  
 }
}

=======================================================================================================================

方法二:取得真实类型的request、session、application:(同样也有两种方式)

方式A

public class TestAction3 extends ActionSupport  {
 private static final long serialVersionUID = 1L;

//步骤一:在Action类中定义private HttpServletRequest request;

                                                     private HttpSession session;

                                                     private ServletContext application;
        private   HttpServletRequest    request;
        private   HttpSession               session;
        private   ServletContext      application;
    //初始化
    public   void   init(){
               this.request=ServletActionContext.getRequest();
               this.session=request.getSession();
               this.application=session.getServletContext();
    }
    //执行的时候,后台存值进去
     public String  execute() {
                init();
           request.setAttribute("dog", "我们家的狗狗!");
          session.setAttribute("pig", "我们家的猪猪!");
          application.setAttribute("bed","我们家的床!");
  return SUCCESS;
 }
}

 

方式B

//.Action类实现ServletRequestAware接口

public class TestAction4 extends ActionSupport  implements   ServletRequestAware{
 private static final long serialVersionUID = 1L;

//在Action类中定义private HttpServletRequest request;private HttpSession session;private ServletContext application;
   private    HttpServletRequest     request;
   private    HttpSession                 session;
   private    ServletContext        application;

//.覆盖ServletRequestAware接口的方法

 public void setServletRequest(HttpServletRequest    request) {
         this.request = request;
         this.sessionrequest.getSession();
         this.application = session.getServletContext();  
 }
    //执行的时候,后台存值进去
 public String  execute() {
       request.setAttribute("apple", "我好爱苹果!");
       session.setAttribute("orange", "我也吃橘子");
        application.setAttribute("pea","我更喜欢梨!");
  return SUCCESS;
 }
}

原创粉丝点击