jsp页面的几种取值法
标签的用法:
1 | <s:property value="#session.user.name"/> |
-
迭代器:
1<s:iterator value="user"> <s:property value="user.name"/><br/> <s:property value="user.password"/><br/> </s:iterator> -
ServletActionContext:
1<s:iterator var="user" value="#session.searStats"> <s:property value="#user.name" /> <br /> <s:property value="#user.password" /> <br /> </s:iterator> <s:iterator value="#session.searStats"> <s:property value="#session.searStats.name" /> <br /> <s:property value="#session.searStats.password" /> <br /> </s:iterator> -
forEach:
1<c:forEach var="entry" items="${ session }"> ${ entry.value.name } </c:forEach><br/> -
EL:
1${sessionScope.user.password }<br/> -
静态加载jsp页面
`<%@ include file="title.jsp" %>1
2
3
4
5<div class="wrapper">
<!-- 静态加载左侧jsp页面 -->
<%@ include file="left.jsp" %>
<%@ include file="main.jsp" %>
</div>` -
EL(Excepress Language表达式语言)
-
所有的EL都是以$"{"开始,以"}"结尾的.例:${sessionScope.user.sex}
-
(sessionScope是EL的内置对象,后面会讲到).该例子的意思是:从session中取得用户的性别.相当于下面的代码
1
2
3
4`<%
User user=(User)session.getParameter("user");
String sex=user.getSex();
%>` -
EL提供"."和"[ ]"两种运算符来存取数据,[]可以访问集合或者数组的元素,Bean的属性.下列两者所代表的意思是一样的,但是需要保证要取得对象的哪个的属性有相应的setXxx()和getXxx()方法才行(即符合JavaBean规范)
-
例:
- ${sessionScope.user.sex} <=======> ${session.user["sex"]}. "."和"[]"也可以混合使用,如下:${sessionScope.shoppingCart[0].price} 返回结果为shoppingCart中第一项物品的价格
- 在EL中,字符串即可以用"abc",也可以使用'abc';
-
.EL运算符
- EL的算术运算符和JAVA中的运算符大致相同,优先级也相同,区别在于"+"运算符不会连接字符串,只用于加法运算;
-
EL关系运算符有以下6个
关系运算符号 说明 举例 结果
==或eq(equal) 等于 ${5==5}或${5eq5} true
!=或ne(not equal) 不等于 ${5!=5}或${5eq5} false
<或lt(less than) 小于 ${3!=5}或${3lt5} true或gt(great than) 大于 略
<=或le 小于等于 略
=或ge 大于等于 略 -
empty运算符
- empty运算符主要用来判断值是否为null或空的,如果为空或null就返回true.
-例如 ${empty param.name}(param内置对象,后面讲解)
-使用EL从表达中取得数据
-与输入有关的隐含对象有两个:param和paramValues,他们两个是EL中的内置对象.一般而言,我们在取得用户的请求参数时,可以利用下列方法:request.getParameter(String name)和request.getParameterValues(String name),而在EL中可以是用param和paramValues两者来取得数据.以上的两句等价于${param.name}和${paramValues.name},而${paramValues.hobbies[0]}可以通过指定下标来访问特定的参数的值;
- empty运算符主要用来判断值是否为null或空的,如果为空或null就返回true.
-
EL的内置对象
属性范围 在EL中的对象
page pageScope
request requestScope
session sessionScope
application applicationScope -
在EL中使用内置对象的属性${requestScope.user}等价于<%=request.getParameter("user")%>. 如果不指定范围,那就会在不同的范围间进行搜索.
对象 类 型 说 明
PageContextjavax.servlet.ServletContext 表示此JSP的PageContext PageScope java.util.Map 取得Page范围的属性名称所对应的值
RequestScope | java.util.Map |取得Request范围的属性名称所对应的值
applicationScope | java.util.Map |取得Application范围的属称所对应的值
param | java.util.Map |如同ServletRequest.getParameter(String | |name)返回String类型的值
paramValues | java.util.Map |如同ServletRequest.getParameterValues | |(String name)。返回String []类型的值
header | java.util.Map |如同ServletRequest.getHeader(String name) | |返回String类型的值
headerValues | java.util.Map |如同ServletRequest.getHeaders(String name) | |。返回String []类型的值
cookie | java.util.Map |如同HttpServletRequest.getCookies( )
initParam | java.util.Map |如同ServletContext.getInitParameter(String | |name)。返回String类型的值
pageContext对象
我们可以使用 ${pageContext}来取得其他有关用户要求或页面的详细信息。下面列出了几个比较常用的部分。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 Expression 说 明
${pageContext.request} |取得请求对象
${pageContext.session} |取得session对象
${pageContext.request.queryString} |取得请求的参数字符串
${pageContext.request.requestURL} |取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} |服务的web application的名称
${pageContext.request.method} |取得HTTP的方法(GET、POST)
${pageContext.request.protocol} |取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} |取得用户名称
${pageContext.request.remoteAddr } |取得用户的IP地址
${pageContext.session.new} |判断session是否为新的,所谓新的session,表示刚由 server产生而client尚未使用
${pageContext.session.id} |取得session的ID
${pageContext.servletContext.serverInfo}|取得主机端的服务信息
JSTL(JSP标准标签库)
JSTL由核心标签,<c:... > ,xml解析标签 <x:...>,国际化标签 <fmt:....>,数据库访问标签<sql:...>,函数标签<fn:...>
核心标签
Core
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
属性设置
<c:set> 设置属性
<c:remove> 移除设置的属性
过程控制
<c:if test="..."> 条件标签 只有在test属性的值为true是才会执行标签体
例:
<c:if test="${!(empty user.age)}">
<h1>hello</h1>
</c:if>
<c:choose>choose和when是组合在一起使用的,有点类似于switch case的语法 。
<c:when test="...">when也是条件判断标签,test属性的值为true是才会执行标签体。
例:
<c:choose>
<c:when test="${param.age<18}">
<h1>you is a child<h1>
</c:when>
<c:when test="${param.age>18 and param.age<50 }">
<h1>you is a young person</h1>
</c:when>
<c:when test="${param.age>50}">
<h1>you is a old person</h1>
</c:when>
</c:choose>
<c:forEach>迭代标签
例:
<c:forEach var="book" item="${store.books}" varStatus="status">
<h1>${book.parice}</h1>
</c:forEach>
<c:forEach begin="1" end="5" step="1">
<h1>hello</h1>
</c:forEach>
声明:
$ 符号是EL表达式用的
% 是jsp代码用的
# 是OGNL表达式用的,存放的值在根目录下才用#,有时候OGNL表达式不允许嵌套OGNL表达式,但是又必须要使用他,那么你可以用 %表达式 来实现嵌套
--------------------------------------------
jsp页面引入标签库:
<%@taglib prefix="s" uri="/struts-tags"%>
在web.xml中声明要使用的标签
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
--------------------------------------------
jsp页面读取action中属性在页面输出
<s:textfield cssStyle="WIDTH: 100%"
name="URL" value="%{URL}">
</s:textfield>
<td> <s:property value="original"/></td>
<s:label value="%{apply.fileName}"></s:label>
<s:textfield cssStyle="WIDTH: 100%"
name="orderIndex" value="%{apply.orderIndex}" onkeyup=" var regu=/[^0-9]/g;var re = new RegExp(regu);if(re.test(value))alert('你输入的不是数字!');value=value.replace(/[^0-9]/g, '');" ></s:textfield>
<SELECT style="WIDTH: 100%" id="formType" name="formType">
<OPTION value="1" <s:property value="formType=='系统表单'?'selected':''"/>>
系统表单
</OPTION>
<OPTION value="0" <s:property value="formType=='自定义'?'selected':''"/>>
自定义
</OPTION>
</SELECT>
--------------------------------------------
用java代码代替的,访问某一个范围内的属性
// 验证#attr搜索顺序是从page开始的,搜索的顺序为:page,reques,session,application。
<s:property value="#attr.name" />
获取的是requet中的对象值
方法一:<s:property value="#request.user.userName" />
方法二:<s:property value="#request.user['userName']" />
方法三:<s:property value="#user.userName" />
方法四:<s:property value="#user['userName']" />
方法五:${requestScope.user.userName}
方法六:<s:property value="#attr.user.userName" /> attr按page,request,sessionapplication
--------------------------------------------
获取session中的值:
<s:property value="#session.user.userName" />
获取application中值:
<s:property value="#application.user.userName" />
文档:java的各种运行命令.note
链接:
http://note.youdao.com/noteshare?id=aae61f81a2a0b6cf0a63896c04eb55df&sub=4A8B6D484CCD4A4B88F6EA530B62CD0C
文档:Struts2.note
链接:
http://note.youdao.com/noteshare?id=806ee2e45cd0a877c1162ca8628c73b4&sub=93051EF5AEA649ACAAFDD3C5581EA3DB
文档:SSH整合.note
链接:
http://note.youdao.com/noteshare?id=cac678056e9d2ef666e0caafad72b114&sub=AEA2CF6BDAA046D3BBC673E1A4B0A19A
文档:Spring.note
链接:
http://note.youdao.com/noteshare?id=d1a33a7019929cbd3f778446aa0b304f&sub=D9F4910D445E433EBA16FD81B6718639
文档:Hibernate.note
链接:
http://note.youdao.com/noteshare?id=17a5ae42d4bf990117e227e3139779e5&sub=9ADB0F7215A24CF8805FA27C78259B97
文档:Jsp servlet.note
链接:
http://note.youdao.com/noteshare?id=93aa10818bd93a8bbb8d3943f76fd03c&sub=BAB50B976A504AB4B87D03CFFC9A9AD0