第八章 JSTL和ELWord格式.docx
《第八章 JSTL和ELWord格式.docx》由会员分享,可在线阅读,更多相关《第八章 JSTL和ELWord格式.docx(14页珍藏版)》请在冰豆网上搜索。
response.sendRedirect("
el.jsp"
);
%>
Page2:
body>
<
br/>
用户:
${eluser}//输出对象的toString()方法
hr/>
用户名:
${eluser.uname}//输出:
哈哈
${eluser["
uname"
]}//输出:
${eluser['
uname'
密码:
${eluser.upwd}//输出:
123456
消息:
${msg}输出:
登录成功
/body>
案例2:
pageContext.setAttribute("
pageContextName"
"
哈哈pageContext"
request.setAttribute("
requestName"
呵呵request"
session.setAttribute("
sessionName"
(*^__^*)request"
application.setAttribute("
applicationName"
嘎嘎application"
stuName"
哈哈"
呵呵"
(*^__^*)"
嘎嘎"
Useru=newUser();
u.setUname("
10"
user"
Listlist=newArrayList();
inti=1;
list.add("
1001"
+i++);
list"
list);
Mapnames=newHashMap();
names.put("
one"
LiYang"
two"
WangHua"
request.setAttribute("
names"
names);
%>
hr/>
${pageContextName}<
br/>
${requestName}<
${sessionName}<
${applicationName}<
${stuName}:
不指定范围从最小范围开始查找page,request,session,application没有找到返回null页面显示空白<
${pageScope.stuName}:
指定了范围在对应范围中查找<
${sessionScope.hahaas}<
${requestScope.stuName}<
${sessionScope.stuName}<
${applicationScope.stuName}<
${user.uname}<
${user.uname+10}<
String类型的数字相加自动转换进行算术运算
${pageScope.list[0]}<
${pageScope.list['
2'
]}<
${pageScope.list["
3"
姓名:
${names.one}<
${names["
]}<
${pageContext}
<
案例三:
网址:
http:
//127.0.0.1:
8080/t8/el3.jsp?
userName=haha&
userName=xixi
!
--从网址上获取值-->
${param.userName}<
//输出haha
${paramValues.userName[1]}<
得到一个数组,输出数组索引为1的输出xixi
二、JSTL标签
✧JSTL的概念:
JSTL的全称是JavaPagesStandardTagLibrary,即JSP标准标签库。
它包含了我们在开发JSP页面时经常用到的一组标准标签,这些标签为我们提供了一种不用嵌入Java代码,就可以开发复杂的JSP页面的途径。
JSTL标签库包含了各种标签,如:
通用标签、条件标签、迭代标签等。
✧JSTL的作用:
不用使用Java代码处理表示层逻辑的现象,直接可以使用JSTL标准标签库控制JSP中的程序流程。
✧JSTL的使用步骤:
⏹在工程中引用JSTL的两个jar包(jstl.jar、standard.jar)和标签库描述符文件,除此之外描述符文件也是必须的。
这些资源可以在网上下载到。
目前使用的开发工具MyEclipse中集成了JSTL,所有这步可以省略。
⏹在需要使用JSTL的JSP页面上使用taglib指令导入标签库描述符文件。
如:
%@tagliburi="
prefix="
c"
%>
✧JSTL核心标签库:
⏹通用标签库:
1.<
c:
set>
标签
标签用于定义变量,并将变量存储在JSP范围中或者JavaBean属性中,其语法格式分为如下两种:
1.1将value值存储到范围为scope的变量varible中
setvar=”variable”value=”v”scope=”scope”/>
释义:
var属性的值是设置的变量名
Value属性的值是赋予变量的值
Scope属性是对应的是变量的作用域。
可选值有page,request,session,application。
1.2将value值存储到target对象的属性中
setvalue=”value”target=”target”property=”property”/>
target属性是操作的对象,可以使用EL表达式表示
Property属性对应对象的属性名
Value属性是赋予对象属性的值
案例:
setvar="
username"
value="
管理员"
scope="
request"
>
/c:
userage"
23<
settarget="
${user}"
property="
^_^"
>
address"
西安<
1、${pageScope.username}<
--输出null-->
2、${requestScope.username}${userage}<
--管理员23-->
3、${sessionScope.username}<
4、${applicationScope.username}<
${user.uname}${user.address}<
--输出^_^西安-->
2.<
out>
标签用来显示数据的内容,类似于JSP中的<
%=%>
。
语法格式分为指定默认值和不指定默认值两种形式。
2.1不指定默认值
outvalue=”value”/>
value属性指需要输出的值,可以用EL表达式输出某个变量
2.2指定默认值
outvalue=”value”default=”defaulr”/>
default属性是value属性的值为空时,输出的默认值。
案例:
1、<
outvalue="
${username}"
--输出:
管理员-->
2、<
${userage}"
default="
20"
23-->
3、<
${asdfasdfasdfsa}"
不存在"
不存在-->
3.<
remove>
与<
标签的作用相反,<
用于移除指定范围的变量,语法如下:
removevar=”value”scope=”scope”/>
var属性是指待删除的变量的名称
Scope属性是指删除的变量所在的范围,可选项有page,request,session,application,如果没有指定,则默认为page
注意:
如果有四个范围具有相同名称的变量,并且没有指定变量所在的范围,如果删除这个变量名,那么会把所有范围内具有相同变量名的值删除。
page"
id"
application"
1005<
session"
testname"
1001<
1002<
1003<
1004<
id=${id}<
<
--id=1005-->
username=${username}<
--username=管理员-->
userage=${userage}<
--userage=23-->
address=${address}<
--address=西安-->
${pageScope.testname}<
--1001-->
${requestScope.testname}<
--1002-->
${sessionScope.testname}<
--1003-->
${applicationScope.testname}<
--1004-->
removevar="
/>
/>
--username=-->
--null-->
⏹条件标签:
if>
标签用来执行流程的控制,其功能与Java语言中的if完全相同,语法为:
iftest=”condition”var=”varName”scope=”scope”>
本题内容
Test属性是此条件标签的判断条件,为真是,执行本题内容,false不执行
Var属性定义变量,该变量存放判断以后的结果
Scope属性是指var定义变量的存储范围
条件表达式中的逻辑运算符
==
或
eq
逻辑运算符,判断符号左右两端是否相等,如果相等返回
true
,否则返回
false
=
ne
逻辑运算符,判断符号左右两端是否不相等,如果不相等返回
,否则返回false
lt
逻辑运算符,判断符号左边是否小于右边,如果小于返回
gt
逻辑运算符,判断符号左边是否大于右边,如果大于返回
le
逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回
true,否则返回
ge
逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回
&
或and
逻辑运算符,与操作赋。
如果左右两边同为
返回
||
or
逻辑运算符,或操作赋。
如果左右两边有任何一边为
not
逻辑运算符,非操作赋。
如果对
取运算返回
false
true
empty
用来对一个空变量值进行判断
:
null
、一个空
String
、空数组、
空
Map
、没有条目的
Collection
集合
forEachvar="
u"
items="
${ulist}"
varStatus="
s"
iftest="
${s.index%2==0}"
--如果s的索引和2取余等于0就给这一行设置为红色-->
Trbgcolor="
#00ff00"
${s.index%2!
=0}"
--如果s的索引和2取余不等于0就给这一行设置为黄色-->
#ffff00"
Td>
${u.uid}<
/Td>
${u.uname}<
${u.address}<
/tr>
forEach>
%@pagelanguage="
java"
import="
java.util.*"
pageEncoding="
GBK"
${"
}13+456}=${13+456}<
\${13+456}=${13+456}<
\${10>
20}=${10>
20}<
\${10gt20}=${10gt20}<
\${10<
20}=${10<
\${10lt20}=${10lt20}<
=20}=${10>
=20}<
\${20ge20}=${20ge20}<
=20}=${10<
\${20le20}=${20le20}<
\${10==20}=${10==20}<
\${10eq20}=${10eq20}<
\${10!
=20}=${10!
=20}<
\${20ne20}=${20ne20}<
\${nottrue}=${nottrue}<
\${!
false}=${!
false}<
%pageContext.setAttribute("
\${emptyuser}=${emptyuser}<
${notemptyuser}"
${user}<
\${notemptyuser}=${notemptyuser}<
\${trueandtrue}=${trueandtrue}<
\${true&
true}=${true&
true}<
false}=${true&
false}<
\${trueortrue}=${trueortrue}<
\${true||true}=${true||true}<
\${true||false}=${true||false}<
⏹迭代标签:
标签有两种语法格式,一种是遍历集合对象的成员,一种用来使语句循环执行指定次数。
1.遍历集合对象成员,语法:
forEachvar=”varName”items=”collectionName”varStatus=”varStatusName”begin=”beginIndex”end=”endIndex”step=”step”>
//内容
var属性是对当前每一个对象成员引用
items指被迭代的集合对象
varStatus属性用于存放var引用的成员相关信息,如索引等。
begin属性表示开始位置,默认为0,该属性可以省略
end属性表示结束位置,该属性可以省略
step表示循环的步长,默认为1,该属性可以省略
2.指定语句的执行次数,语法
forEachvar=”varName”varStatus=”varStatusName”begin=”beginIndex”end=”endIndex”step=”step”>
以上两种循环的区别:
第二种不能对一个集合对象进行遍历,而是根据指定的begin属性,end属性来控制循环的次数、及step属性控制步长。
%@pageimport="
com.xaccp.entity.User"
List<
User>
list=newArrayList<
();
Map<
String,User>
maps=newHashMap<
for(inti=1;
i<
11;
i++){
Useru=newUser(i,"
+(1000+i),"
高新"
+(i)+"
路"
list.add(u);
maps.put("
k00"
+i,u);