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来完成的。

  • 相关阅读:
    hihocoder #1407 : 后缀数组二·重复旋律2
    后缀数组基本问题QAQ
    hihocoder #1403 : 后缀数组一·重复旋律
    20170116小测233
    HDU 4779:Tower Defense
    BZOJ 2563: 阿狸和桃子的游戏
    Codeforces 460D. Little Victor and Set
    Codeforces 297C. Splitting the Uniqueness
    BZOJ 2565: 最长双回文串
    Manacher--雾窗寒对遥天暮,暮天遥对寒窗雾
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3188426.html
Copyright © 2011-2022 走看看