struts2对一些属性的使用和对session封装对象类型采用jstl技术的遍历(配图解)
2013-07-13 11:18
609 查看
在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
可以看到
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/30/b899a5ede41ae2e973b6a9896ebf45d8)
我们接着在浏览器中输入:
http://127.0.0.1:8080/struts2test5/test/bluefish
可以看到
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/30/cfad67d4386a215652707929df621330)
我们不仅可以看到后面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一个是jstl和standar。使用标签就行遍历。
在jsp的head先加
%@tagliburi="http://java.sun.com/jsp/jstl/core" prefix="fish" %
然后在jsp的body中加入
<fish:forEach
items="${sess3}" var="name">
${name}<br>
</fish:forEach>
我们接着在浏览器中输入:
http://127.0.0.1:8080/struts2test5/test/yellowfish
我们可以看到:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/30/fd16619823df411778ad676ffa10d145)
对象被遍历出来,但是上面有两句,这次我们已经把服务器停了。却还有两句话,因为session其实他是有生命时间的。所以session的生命周期在随着服务器的关闭而消失是不是很严谨的。Session其实底层是用cookies来完成的。
先写一个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一个是jstl和standar。使用标签就行遍历。
在jsp的head先加
%@tagliburi="http://java.sun.com/jsp/jstl/core" prefix="fish" %
然后在jsp的body中加入
<fish:forEach
items="${sess3}" var="name">
${name}<br>
</fish:forEach>
我们接着在浏览器中输入:
http://127.0.0.1:8080/struts2test5/test/yellowfish
我们可以看到:
对象被遍历出来,但是上面有两句,这次我们已经把服务器停了。却还有两句话,因为session其实他是有生命时间的。所以session的生命周期在随着服务器的关闭而消失是不是很严谨的。Session其实底层是用cookies来完成的。
相关文章推荐
- struts2对一些属性的使用和对session封装对象类型采用jstl技术的遍历(配图解)
- 使用反射遍历对象属性置取值
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Mysql通用查询方法(采用泛型确定输入类型,BeanUtils进行对象封装)
- Struts2:类型转换之批量封装Set集合类型的属性
- 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个Student类型的对象数组,对学号进行 升序排序并输出。
- ######保存角色,add表单页面Ajax传参给action,多个集合属性,【较为复杂的页面传参(封装ajax json参数)】:注意表单数据序列化,jquery遍历,json对象转String
- 在Struts2中使用类似传统的servlet、session、application作用域对象
- 使用java反射机制遍历实体类的属性和类型以及值
- 使用Struts2的iterator标签轻松遍历复杂的Map类型
- 自定义控件属性使用TypeCoverter标记的类型的一些总结
- FMDB封装,用OC方法存储model,不用写SQL语句。使用runtime获取对象属性
- struts2的实体类映射成数据库表格时,实体类的某个属性类型设为date,但是映射结果在数据库中是datetime类型的,这个时候我们应该采用的解决办法
- Struts2:类型转换之批量封装Set集合类型的属性
- java日期以及使用Java反射机制遍历实体类的属性和类型
- 使用Java反射机制遍历实体类的属性和类型
- Java_31_面向对象_Java程序运行的内存分析_栈_堆_引用类型的概念_属性_对象的创建和使用
- 使用Struts2的iterator标签遍历复杂的Map类型
- Struts2使用OGNL表达式封装输入数据(直接封装Map类型)
- Struts2属性驱动封装(了),需要使用ognl表达式