struts2对一些属性的使用和对session封装对象类型采用jstl技术的遍历(配图解)

在struts2中如何实现像jsp中request,session,appliaction的使用。其实有两种方法。下面通过一个案列来说明两个方法的使用。

先写一个test.java类

packagecom.test;

 

importjavax.servlet.ServletContext;

importjavax.servlet.http.HttpServletRequest;

 

importorg.apache.struts2.ServletActionContext;

 

import com.opensymphony.xwork2.ActionContext;

 

public class Test {

publicString myMethod(){

    ActionContext actionContext=ActionContext.getContext();

    actionContext.put("req", "这是一个request");

    actionContext.getSession().put("sess", "这是一个seesion");

    actionContext.getApplication().put("app", "这是一个application");

    return "aa";

}

public String myMethod2()throws Exception{

    HttpServletRequestrequest=ServletActionContext.getRequest();

    request.setAttribute("req2", "这是一个request2");

    request.getSession().setAttribute("sess2", "这是一个seesion2");

   

    ServletContext context=ServletActionContext.getServletContext();

    context.setAttribute("app2", "这是一个application2");

    return "bb";

}

}

这里面method和method2方法是分别实现request,session,application的例子。不过在正常情况下建议使用方法一。

然后在struts2.Xml中:

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

 

<action name="redfish"class="com.test.Test" method="myMethod">

<result name="aa">/index.jsp</result>

</action>

<action name="bluefish"class="com.test.Test" method="myMethod2">

<result name="bb">/index.jsp</result>

</action>

</package>

 

最后在index.jsp中写

${applicationScope.app}<br>

   ${sessionScope.sess}<br>

   ${requestScope.req}<br>

   ${applicationScope.app2}<br>

   ${sessionScope.sess2}<br>

   ${requestScope.req2}<br>

 

我们在浏览器中输入

http://127.0.0.1:8080/struts2test5/test/redfish

可以看到


 

我们接着在浏览器中输入:

http://127.0.0.1:8080/struts2test5/test/bluefish

可以看到


 

我们不仅可以看到后面3个,还可以看到前面两个,这更可以说明一个时间session和appliaction的生命周期。

 

那么如何实现这些request,session,application来实现一个对  对象的封装和拆箱呢。

我们可以在test.JAVA再加一个方法

publicString myMethod3(){

    ActionContext actionContext=ActionContext.getContext();

   

    actionContext.getSession().put("sess3",Arrays.asList("雅酷","飞鱼","李四") );

   

    return "cc";

}

}

然后再struts2.XML再加一个action

<action name="yellowfish"class="com.test.Test" method="myMethod3">

<result name="cc">/index.jsp</result>

</action>

index.JSP加入内容的同时先引入两个jar一个是jstlstandar。使用标签就行遍历。

jsphead先加

 

%@tagliburi="http://java.sun.com/jsp/jstl/core" prefix="fish" %

然后在jspbody中加入

<fish:forEach items="${sess3}" var="name">

   ${name}<br>

  

   </fish:forEach>

我们接着在浏览器中输入:

http://127.0.0.1:8080/struts2test5/test/yellowfish

我们可以看到:


 

对象被遍历出来,但是上面有两句,这次我们已经把服务器停了。却还有两句话,因为session其实他是有生命时间的。所以session的生命周期在随着服务器的关闭而消失是不是很严谨的。Session其实底层是用cookies来完成的。

 

posted @ 2013-07-13 19:53  爱生活,爱编程  阅读(590)  评论(0编辑  收藏  举报