在JSP中写Java代码是一件很恶心的事情,代码量少的话还可以,要是多的话,就蛋疼了,整个页面都是<% %>所以EL表达式和JSTL就应运而生了,这里我们注重讲解一下JSTL标签的使用:
首先来开一下JSTL的语法:
JSTL语法及参数
JSTL包含以下的标签:
常用的标签:如
条件标签:如
URL标签:如
XML标签:如
国际化输出标签:如
SQL标签:如
一般用途的标签:
1.
没有Body时的语法
有Body时的语法
这里是Body部分
名字 类型 描述
value Object 将要输出的表达式
escapeXml boolean 确定以下字符:<,>,&,’,”在字符串中是否被除数,默认为true
default Object 如果vaule计算后的结果是null,那么输出这个默认值
2.
这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。他类似于<%request.setAttrbute(“name”,”value”);%>
语法1:使用value属性设定一个特定范围中的属性。
语法2:使用value属性设定一个特定范围中的属性,并带有一个Body。
Body部分
语法3:设置某个特定对象的一个属性。
语法4:设置某个特定对象的一个属性,并带有一个Body。
Body部分
名字 类型 描述
value Object 将要计算的表到式。
var String 用于表示value 值的属性,如果要在其他标签中使用,就是通过这 个var指定的值来进行的。它相当于在标签定义了一个变量,并且这个变量只能在标签中的一个。
scope String var的有效范围,可以是page|request|session|application中的一个
target String 将要设置属性的对象,它必须是javabean或则java.util.Map对象
property Object 待设定的Target对象中的属性名字,比如在javabean中有个name属性,提供了setUserId方法,那么这里填userId。
3.
4.
这个标签相当于捕获在它里边的标签抛出的异常对象
内容
条件标签
1.
语法1:无Body情况
语法2:有Body的情况
Body内容
名字 类型 描述
test Boolean 表达式的条件,相当于if()中的条件判断语句。
var String 表示这个语句的名字。
scope String var这个变量的作用范围。
2.
语法:Body内容(
注意:它的Body只能由以下元素组成:
1) 空格
2) 0或多个
3) 0个或多个
3.
代表的是语法:
Body语句
4.
代表的是内容
迭代标签
1.语法1:在Collection中迭代
Body内容
语法2:迭代固定的次数.
Body内容
名字 类型 描述
var String 迭代的参数,它是标签参数,在其他标签中通过它来引用这个标签中的内容。
Items Collection、ArrayList、 要迭代的items集合.
Iterator、Map、String、
Eunmeration等
VarStatus String 表示迭代的状态,可以访问迭代自身的信息
Begin int 表示开始迭代的位置。
End int 表示结束迭代的位置。
Step int 表示迭代移动的步长,默认为1。
URL相关的标签
1.
语法1:资源的内容使用String对象向外暴露
内容
语法2:资源的内容使用Reader对象向外暴露。
内容
名字 类型 描述
url String 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源
context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字。
var String 参数的名字。
scope String var参数的作用范围。
cahrEncoding String 输入资源的字符编码。
varReader String 这个参数的类型是Reader,用于读取资源。
2.
语法1:没有Body的情况.
语法2:有Body情况下,在Body中指定查询的参数
3.
语法1:没有Body
语法2:有Body
名字 类型 描述
value String URL值
context String 当使用相对路径访问外部context资源时,context指定了这个资源的名字
var String 标识这个URL标量。
Scope String 变量作用范围。
下面来看一下JSTL的具体用法:
首先定义一个Servlet中进行封装数据,然后转发到index.jsp页面中:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*************一个实体bean****************/
UserBean userBean = new UserBean();
userBean.setId("1001");
userBean.setName("jiangwei");
userBean.setAge(22);
userBean.setSex("男");
userBean.setBirth("1990-08-01");
request.setAttribute("userBean", userBean);
//request.getRequestDispatcher("/index.jsp").forward(request,response);
/************多个实体bean****************/
ArrayList
for(int i=0;i<5;i++){
userBean.setId("1001");
userBean.setName("jiangwei");
userBean.setAge(22);
userBean.setBirth("1990-08-01");
userBeanList.add(userBean);
}
request.setAttribute("userBeanList", userBeanList);
request.getRequestDispatcher("/index.jsp").forward(request,resp