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

  • 相关阅读:
    模式的作用就是解耦,解耦,再解耦,让事情变简单、可控制。
    系统的同构性分析
    “以客观事物(object)的形式来组织程序”
    String的indexOf()的三种情况
    关于finally关键字
    openSession和getCurrentSession的区别?
    eclipse括号跳转
    final修饰的类能不能创建一个对象
    使用svn从恢复到某个版本的时候会报错
    关于TableModel的中获取表格数据的问题
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3188426.html
Copyright © 2020-2023  润新知