zoukankan      html  css  js  c++  java
  • 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来完成的。

  • 相关阅读:
    Windows Phone 7 中常用Task
    设置Highchart柱子最大宽度( 让 highcharts支持maxPointWidth属性)
    Asp.Net MVC 使用FileResult导出Excel数据文件
    js获取网页高度
    使用window.addEventListener 和 window.attachEvent 判断浏览器
    slimscroll滚动条插件简单用法
    js中如何快速获取数组中的最大值最小值
    js 判断浏览器类型
    python使用ldap进行用户认证
    关于go声明切片的一些疑问
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3188426.html
Copyright © 2011-2022 走看看