首页 新闻 论坛 问答 博客 招聘 更多 ▼
专栏 文摘 圈子 搜索 您还未登录 ! 我的应用 登录 注册 hhr-michael永久域名 http://hhr-michael.javaeye.com.struts2+hibernate3+spring2读书笔记9(Hi ... | struts2+hibernate3+spring2读书笔记7(St ... 2010-06-09
struts2+hibernate3+spring2读书笔记8(OGNL)
文章分类:Java编程
第9章 OGNL
本章导读语
OGNL是一种功能强大的EL表达式,它简化了对数据的访问,使得开发人员能够通过非常简单的表达式访问对象层。在struts2的OGNL中,数据放在以下几个地方:ValueStack、request、session、application的顺序进行遍历
一. OGNL的使用
1. 通过OGNL获取各种属性
(1) 编写Action类:OgnlAction.java
Java代码
1. package amigo.struts.ognl;
2.
3.import java.util.Map;
4.
5.import javax.servlet.ServletContext;
6.import javax.servlet.http.HttpServletRequest;
7.
8.import org.apache.struts2.interceptor.ServletRequestAware;
9.import org.apache.struts2.interceptor.SessionAware;
10.import org.apache.struts2.util.ServletContextAware;
11.
12.import com.opensymphony.xwork2.ActionContext;
13.import com.opensymphony.xwork2.ActionSupport;
14.
15.
16./**
17. * OGNL简单操作使用举例
18. * */
19.public class OgnlAction extends ActionSupport implements ServletRequestAware,SessionAware,ServletContextAware{
20. private static final long serialVersionUID=1L;
21. private HttpServletRequest request;
22. private Map<String,String> session;
23. private ServletContext application;
24.
25. /**用户名*/
26. private String username;
27. /**密码*/
28. private String password;
29. public HttpServletRequest getRequest() {
30. return request;
31. }
32. public void setServletRequest(HttpServletRequest request) {
33. this.request = request;
34. }
35. public Map<String, String> getSession() {
36. return session;
37. }
38. public void setSession(Map session) {
39. this.session = session;
40. }
41. public ServletContext getApplication() {
42. return application;
43. }
44. public void setServletContext(ServletContext application) {
45. this.application = application;
46. }
47. public String getUsername() {
48. return username;
49. }
50. public void setUsername(String username) {
51. this.username = username;
52. }
53. public String getPassword() {
54. return password;
55. }
56. public void setPassword(String password) {
57. this.password = password;
58. }
59. public static long getSerialVersionUID() {
60. return serialVersionUID;
61. }
62.
63. /**
64. * 定义处理登录请求的execute方法
65. * */
66. public String execute(){
67. //Action属性设置
68. this.setUsername("amigo");
69. this.setPassword("1234");
70. ActionContext ctx = ActionContext.getContext();
71. ctx.put("address", "北京市海淀区");
72. //request属性设置
73. request.setAttribute("address", "request中属性的值");
74. //session属性设置
75. session.put("address", "session中属性的值");
76. //application属性设置
77. application.setAttribute("address", "application中属性的值");
78. return this.SUCCESS;
79. }
80.
81.}
package amigo.struts.ognl;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* OGNL简单操作使用举例
* */
public class OgnlAction extends ActionSupport implements ServletRequestAware,SessionAware,ServletContextAware{
private static final long serialVersionUID=1L;
private HttpServletRequest request;
private Map<String,String> session;
private ServletContext application;
/**用户名*/
private String username;
/**密码*/
private String password;
public HttpServletRequest getRequest() {
return request;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public Map<String, String> getSession() {
return session;
}
public void setSession(Map session) {
this.session = session;
}
public ServletContext getApplication() {
return application;
}
public void setServletContext(ServletContext application) {
this.application = application;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
/**
* 定义处理登录请求的execute方法
* */
public String execute(){
//Action属性设置
this.setUsername("amigo");
this.setPassword("1234");
ActionContext ctx = ActionContext.getContext();
ctx.put("address", "北京市海淀区");
//request属性设置
request.setAttribute("address", "request中属性的值");
//session属性设置
session.put("address", "session中属性的值");
//application属性设置
application.setAttribute("address", "application中属性的值");
return this.SUCCESS;
}
}
(2)编写jsp页面:ognl.jsp
Java代码
1.<%@ page language="java" contentType="text/html; charset=UTF-8"
2. pageEncoding="UTF-8"%>
3.<%@ taglib prefix="s" uri="/struts-tags"%>
4.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5.<html>
6.<head>
7.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8.<title>OGNL简单操作实例</title>
9.</head>
10.<body>
11. 访问Action实例的属性时,使用和不使用“#”都是可以的:<br/>
12. <s:property value="username"/><br/>
13. <s:property value="password"/><br/>
14. <s:property value="address"/><br/><br/>
15.
16. 访问parameter中的信息,使用#parameters.paramName或#parameters["paramname"]:<br/>
17. <s:property value="#parameters.address"/><br/>
18. <s:property value='#parameters["address"]'/><br/><br/>
19.
20. 访问request中的信息,使用#request.paramName或#request["paramName"]:<br/>
21. <s:property value="#request.address"/><br/>
22. <s:property value='#request["address"]'/><br/><br/>
23.
24. 访问session中的信息,使用#session.paramName或#session["paramName"]:<br/>
25. <s:property value="#session.address"/><br/>
26. <s:property value='#session["address"]'/><br/><br/>
27.
28. 访问application中的信息,使用#application.paramName或#application["paramName"]:<br/>
29. <s:property value="#application.address"/><br/>
30. <s:property value='#application["address"]'/><br/><br/>
31.
32. 使用#attr.paramName或#attr["paramName"]访问时,按request>session>application顺序访问属性<br/>
33. <s:property value="#attr.address"/><br/>
34. <s:property value='#attr["address"]'/><br/><br/>
35.</body>
36.</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>OGNL简单操作实例</title>
</head>
<body>
访问Action实例的属性时,使用和不使用“#”都是可以的:<br/>
<s:property value="username"/><br/>
<s:property value="password"/><br/>
<s:property value="address"/><br/><br/>
访问parameter中的信息,使用#parameters.paramName或#parameters["paramname"]:<br/>
<s:property value="#parameters.address"/><br/>
<s:property value='#parameters["address"]'/><br/><br/>
访问request中的信息,使用#request.paramName或#request["paramName"]:<br/>
<s:property value="#request.address"/><br/>
<s:property value='#request["address"]'/><br/><br/>
访问session中的信息,使用#session.paramName或#session["paramName"]:<br/>
<s:property value="#session.address"/><br/>
<s:property value='#session["address"]'/><br/><br/>
访问application中的信息,使用#application.paramName或#application["paramName"]:<br/>
<s:property value="#application.address"/><br/>
<s:property value='#application["address"]'/><br/><br/>
使用#attr.paramName或#attr["paramName"]访问时,按request>session>application顺序访问属性<br/>
<s:property value="#attr.address"/><br/>
<s:property value='#attr["address"]'/><br/><br/>
</body>
</html>(3)编写Struts2配置文件:struts.xml
Java代码
1. <!DOCTYPE struts PUBLIC
2."-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
3."http://struts.apache.org/dtds/struts-2.0.dtd">
4.
5.<struts>
6. <include file="struts-default.xml"/>
7. <package name="tags" extends="struts-default">
8. <action name="ognl" class="amigo.struts.ognl.OgnlAction">
9. <result name="success">/ognl/ognl.jsp</result>
10.
11. </action>
12. </package>
13.</struts>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="tags" extends="struts-default">
<action name="ognl" class="amigo.struts.ognl.OgnlAction">
<result name="success">/ognl/ognl.jsp</result>
</action>
</package>
</struts>
2.OGNL中的集合操作
Java代码
1. <%@ page contentType="text/html; charset=UTF-8" %>
2.<%@ taglib prefix="s" uri="/struts-tags" %>
3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4.<html>
5. <head>
6. <title>OGNL的集合操作实例</title>
7. </head>
8. <body>
9. List类型集合:
10. <br/>(1)iterator标签:<br/>
11. <s:iterator value="{'香蕉', '苹果', '橘子', '樱桃'}" id="fruitName">
12. <s:property value="fruitName"/>
13. </s:iterator>
14.
15. <br/>(2)select标签(生成的select的各option的value属性与显示的名称相同):<br/>
16. <s:select label="userName" name="userName" list="{'阿蜜果', 'amigo', '阿蜜果2'}" value="'阿蜜果2'" />
17.
18. <br/><br/>Map类型集合:
19. <br/>(1)iterator标签:<br/>
20. <s:iterator value="#{'1' : '香蕉', '2' : '苹果', '3': '橘子', '4' : '樱桃'}">
21. <s:property value="key"/>:<s:property value="value"/>
22. </s:iterator>
23.
24. <br/>(2)select标签(生成的select的各option中的value值为各key-value对的key):<br/>
25. <s:select label="userName" name="userName"
26. list="#{'1' : '阿蜜果', '2' : 'amigo', '3' : '阿蜜果2'}"
27. listKey="key"
28. listValue="value" value="3"/>
29. </body>
30.</html>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OGNL的集合操作实例</title>
</head>
<body>
List类型集合:
<br/>(1)iterator标签:<br/>
<s:iterator value="{'香蕉', '苹果', '橘子', '樱桃'}" id="fruitName">
<s:property value="fruitName"/>
</s:iterator>
<br/>(2)select标签(生成的select的各option的value属性与显示的名称相同):<br/>
<s:select label="userName" name="userName" list="{'阿蜜果', 'amigo', '阿蜜果2'}" value="'阿蜜果2'" />
<br/><br/>Map类型集合:
<br/>(1)iterator标签:<br/>
<s:iterator value="#{'1' : '香蕉', '2' : '苹果', '3': '橘子', '4' : '樱桃'}">
<s:property value="key"/>:<s:property value="value"/>
</s:iterator>
<br/>(2)select标签(生成的select的各option中的value值为各key-value对的key):<br/>
<s:select label="userName" name="userName"
list="#{'1' : '阿蜜果', '2' : 'amigo', '3' : '阿蜜果2'}"
listKey="key"
listValue="value" value="3"/>
</body>
</html>
二. EL表达式
(1)编写Action类:ElAction.java
Java代码
1.package amigo.struts.el;
2.
3.import java.util.Map;
4.import java.util.Enumeration;
5.
6.import javax.servlet.ServletContext;
7.import javax.servlet.http.HttpServletRequest;
8.
9.import org.apache.struts2.interceptor.ServletRequestAware;
10.import org.apache.struts2.interceptor.SessionAware;
11.import org.apache.struts2.util.ServletContextAware;
12.
13.import com.opensymphony.xwork2.ActionSupport;
14.
15./**
16. * EL表达式使用举例.
17. */
18.public class ElAction extends ActionSupport implements ServletRequestAware,
19. SessionAware, ServletContextAware {
20. private static final long serialVersionUID = 1L;
21.
22. private HttpServletRequest request;
23.
24. private Map<String,String> session;
25.
26. private ServletContext application;
27.
28. public void setServletRequest(HttpServletRequest request) {
29. this.request=request;
30. }
31.
32. public void setSession(Map session) {
33. this.session = session;
34. }
35.
36. public void setServletContext(ServletContext application) {
37. this.application=application;
38. }
39.
40. public String execute() {
41. // request属性设置
42. request.setAttribute("address", "request中属性的值");
43.
44. // session属性设置
45. session.put("address", "session中属性的值");
46.
47. // application属性设置
48. application.setAttribute("address", "application中属性的值");
49. return this.SUCCESS;
50. }
51.}
package amigo.struts.el;
import java.util.Map;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
/**
* EL表达式使用举例.
*/
public class ElAction extends ActionSupport implements ServletRequestAware,
SessionAware, ServletContextAware {
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
private Map<String,String> session;
private ServletContext application;
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public void setSession(Map session) {
this.session = session;
}
public void setServletContext(ServletContext application) {
this.application=application;
}
public String execute() {
// request属性设置
request.setAttribute("address", "request中属性的值");
// session属性设置
session.put("address", "session中属性的值");
// application属性设置
application.setAttribute("address", "application中属性的值");
return this.SUCCESS;
}
}
(2)在web.xml中配置初始化参数encoding
Java代码
1.<context-param>
2. <param-name>encoding</param-name>
3. <param-value>UTF-8</param-value>
4.</context-param>
<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
(3)编写jsp页面:el.jsp
Java代码
1. <%@ page contentType="text/html; charset=UTF-8" %>
2.<%@ taglib prefix="s" uri="/struts-tags" %>
3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4.<%
5.String address = "Page范围中的address变量";
6.pageContext.setAttribute("address", address);
7.%>
8.<html>
9. <head>
10. <title>el表达式使用实例</title>
11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
12. <meta http-equiv="pragma" content="no-cache">
13. <meta http-equiv="cache-control" content="no-cache">
14. <script language="javascript">
15. var oneDay = 24*60*60*1000;
16. var expDate = new Date();
17. expDate.setTime(expDate.getTime() + oneDay);
18. var cookieExpires = expDate.toGMTString();
19. document.cookie="loginName=amigo;expires=" + cookieExpires;
20. </script>
21. </head>
22. <body>
23. 四种范围中变量的获取:<br/>
24. Page范围:${pageScope.address}<br/>
25. Request范围:${requestScope.address}<br/>
26. Session范围:${sessionScope.address}<br/>
27. Application范围:${applicationScope.address}<br/>
28.
29. <br/>用户请求参数的获取:<br/>
30. 获取单个用户请求参数:${param.loginName}<br/>
31. 获取用户请求参数的一组值:${paramValues.address[0]}、${paramValues.address[1]}<br/>
32.
33. <br/>cookie中变量的获取:<br/>
34. ${cookie.loginName}
35.
36. <br/>header中值的获取:<br/>
37. HTTP连接头部的host值: ${header["host"]}<br/>
38. HTTP连接头部的accept值: ${header["accept"]}<br/>
39. HTTP连接头部的user-agent值: ${header["user-agent"]}<br/>
40.
41. <br/>应用范围内的初始化参数:<br/>
42. 初始化参数encoding:${initParam.encoding}<br/>
43.
44. <br/>常用request信息:<br/>
45. 取得请求的参数字符串:${pageContext.request.queryString}<br/>
46. 取得请求的URL,但不包括请求之参数字符串:${pageContext.request.requestURL}<br/>
47. 服务的web application 的名称 :${pageContext.request.contextPath}<br/>
48. 取得HTTP 的方法(GET、POST):${pageContext.request.method}<br/>
49. 取得使用的协议(HTTP/1.1、HTTP/1.0):${pageContext.request.protocol}<br/>
50. 取得用户名称:${pageContext.request.remoteUser}<br/>
51. 取得用户的IP地址:${pageContext.request.remoteAddr}<br/>
52.
53. <br/>常用session信息:<br/>
54. 判断session是否为新的:${pageContext.session.new}<br/>
55. 取得sessionID:${pageContext.session.id}
56. </body>
57.</html>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
String address = "Page范围中的address变量";
pageContext.setAttribute("address", address);
%>
<html>
<head>
<title>el表达式使用实例</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script language="javascript">
var oneDay = 24*60*60*1000;
var expDate = new Date();
expDate.setTime(expDate.getTime() + oneDay);
var cookieExpires = expDate.toGMTString();
document.cookie="loginName=amigo;expires=" + cookieExpires;
</script>
</head>
<body>
四种范围中变量的获取:<br/>
Page范围:${pageScope.address}<br/>
Request范围:${requestScope.address}<br/>
Session范围:${sessionScope.address}<br/>
Application范围:${applicationScope.address}<br/>
<br/>用户请求参数的获取:<br/>
获取单个用户请求参数:${param.loginName}<br/>
获取用户请求参数的一组值:${paramValues.address[0]}、${paramValues.address[1]}<br/>
<br/>cookie中变量的获取:<br/>
${cookie.loginName}
<br/>header中值的获取:<br/>
HTTP连接头部的host值: ${header["host"]}<br/>
HTTP连接头部的accept值: ${header["accept"]}<br/>
HTTP连接头部的user-agent值: ${header["user-agent"]}<br/>
<br/>应用范围内的初始化参数:<br/>
初始化参数encoding:${initParam.encoding}<br/>
<br/>常用request信息:<br/>
取得请求的参数字符串:${pageContext.request.queryString}<br/>
取得请求的URL,但不包括请求之参数字符串:${pageContext.request.requestURL}<br/>
服务的web application 的名称 :${pageContext.request.contextPath}<br/>
取得HTTP 的方法(GET、POST):${pageContext.request.method}<br/>
取得使用的协议(HTTP/1.1、HTTP/1.0):${pageContext.request.protocol}<br/>
取得用户名称:${pageContext.request.remoteUser}<br/>
取得用户的IP地址:${pageContext.request.remoteAddr}<br/>
<br/>常用session信息:<br/>
判断session是否为新的:${pageContext.session.new}<br/>
取得sessionID:${pageContext.session.id}
</body>
</html>
(4)配置struts.xml
Java代码
1.<action name="el" class="amigo.struts.el.ElAction">
2. <result name="success">/el/el.jsp</result>
3. </action>
<action name="el" class="amigo.struts.el.ElAction">
<result name="success">/el/el.jsp</result>
</action>
三. Lambda表达式
Java代码
1. <%@ page contentType="text/html; charset=UTF-8" %>
2.<%@ taglib prefix="s" uri="/struts-tags" %>
3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4.<html>
5. <head>
6. <title>Lambda表达式实例</title>
7. </head>
8. <body>
9. -1小于0:<s:property value="#isLessThanZero =:[#this < 0 ? 'true' : 'false'], #isLessThanZero(-1)"/><br/>
10. 2小于0:<s:property value="#isLessThanZero =:[#this < 0 ? 'true' : 'false'], #isLessThanZero(2)"/>
11. </body>
12.</html>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Lambda表达式实例</title>
</head>
<body>
-1小于0:<s:property value="#isLessThanZero =:[#this < 0 ? 'true' : 'false'], #isLessThanZero(-1)"/><br/>
2小于0:<s:property value="#isLessThanZero =:[#this < 0 ? 'true' : 'false'], #isLessThanZero(2)"/>
</body>
</html>struts2+hibernate3+spring2读书笔记9(Hi ... | struts2+hibernate3+spring2读书笔记7(St ... 11:30浏览 (39)评论 (0)分类: struts+hibernate+spring學習相关推荐评论发表评论
表情图标
字体颜色: 标准深红红色橙色棕色黄色绿色橄榄青色蓝色深蓝靛蓝紫色灰色白色黑色 字体大小: 标准1 (xx-small)2 (x-small)3 (small)4 (medium)5 (large)6 (x-large)7 (xx-large) 对齐: 标准居左居中居右
提示:选择您需要装饰的文字, 按上列按钮即可添加上相应的标签.您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)
hhr_michael
浏览: 4759 次
性别:
来自: 惠州
详细资料 留言簿
搜索本博客
最近访客 >>更多访客
qljobswpfwupengfeiwpf土豆皮mianhuatangone.博客分类
■全部博客 (45)
■java學習 (15)
■PHP學習 (2)
■javascript (12)
■vba excel (1)
■英語學習 (1)
■k3安裝與配置 (1)
■html學習 (1)
■struts+hibernate+spring學習 (11)
■数据库学习 (1)
我的留言簿 >>更多留言
■漂过
-- by xw302
其他分类
■我的收藏 (0)
■我的论坛主题贴 (0)
■我的所有论坛贴 (0)
■我的精华良好贴 (0)
最近加入圈子
存档
■2010-06 (7)
■2010-05 (6)
■2010-03 (1)
■更多存档...
最新评论
■struts2+hibernate3+sprin ...
恩,LZ,谢谢了,那我还是练习把SSh的例子改成S2sh的吧,呵呵,哎,现在s2s ...
-- by lixia0417
■struts2+hibernate3+sprin ...
哥们,你好,这本书着重s2sh的各个部分开发,而整合的例子不是很多,只有三章是整合 ...
-- by hhr_michael
■struts2+hibernate3+sprin ...
对,哥们,问一下,这本书中关于S2SH整合开发的例子多吗,就是用三个框架一起开发的 ...
-- by lixia0417
■struts2+hibernate3+sprin ...
谢谢提醒,由于只是着重校验的过程,所以这代码没有在struts.xml中配置对应的 ...
-- by hhr_michael
■struts2+hibernate3+sprin ...
楼主写得不错,受教了, 不过觉得<code> public Stri ...
-- by lixia0417
评论排行榜
■struts2+hibernate3+spring2读书笔记4(数据 ...
■js生成行,刪除行,復制行
■struts2+hibernate3+spring2读书笔记11( ...
■JSP环境配置使用fckeditor
■struts2+hibernate3+spring2读书笔记10( ...
[什么是RSS?]
.
--------------------------------------------------------------------------------
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。
? 2003-2010 JavaEye.com. All rights reserved. 上海炯耐计算机软件有限公司 [ 沪ICP备05023328号 ] .