jstl
在页面中使用JSTL标签需完成以下2个步骤:
1、导入jstl.jar和standerd.jar这两个JSTL的jar文件。
2、在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。
JSTL标签库中常用标签:
<c:foreach var=“” items=“”>
<c:if test=“”>
package cn.lcp.domain;
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<%@page import="cn.lcp.domain.Person"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!--导入jstl的标签库。在standard.jar下面的META-INF的c.tid文件里面的: uri="http://java.sun.com/jsp/jstl/core" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>jstl+el表达式示例代码</title>
</head>
<body>
<!-- 使用jstl+el表达式可以迭代list集合 -->
<%
Person p1 = new Person();
p1.setName("aa111");
Person p2 = new Person();
p2.setName("bb");
List list = new ArrayList();
list.add(p1);
list.add(p2);
request.setAttribute("list",list);
%>
<c:forEach var="person" items="${list}">
${person.name }<br/>
</c:forEach>
<!-- 使用jstl+el表达式可以迭代map集合 -->
<%
Map map = new HashMap();
map.put("a","aaaaxxx");
map.put("b","bbbb");
map.put("c","cccc");
map.put("1","aaaa1111");
request.setAttribute("map",map);
%>
<br/>
<%-- Set<Map.Entry> set = map.entrySet()--%>
<c:forEach var="me" items="${map}">
${me.key } = ${me.value }<br/>
</c:forEach>
<br/><br/>
<c:if test="${user!=null}">
欢迎您:${user.uesrname }
</c:if>
<c:if test="${user==null}">
用户名:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="登陆">
</c:if>
</body>
</html>
JSTL标签库:
<c:out> 标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中。
<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。
<c:remove>标签用于删除各种Web域中的属性。<c:remove var="varName" [scope="{page|request|session|application}"] />
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达式
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。
<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面
<c:redirect>标签用于实现请求重定向
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="cn.lcp.domain.Person" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>测试jstl</title>
</head>
<body>
<br>-----------c:out输出--------------------<br>
<%
request.setAttribute("aaaa", "bbbb");
%>
<c:out value="${data }" default="aaaa" escapeXml="true"></c:out>
<br>-----------c:set输出--------先从page域里面找,再从request里面找--------------------------------------------------------------------------<br>
<c:set var="data" value="xxx" scope="page" />
${data }
<!-- 往map里面存值 -->
<%
Map map = new HashMap();
request.setAttribute("map", map);
%>
<c:set property="dd" value="xxx" target="${map }" />
${map.dd }
<!-- 操作javabean -->
<%
Person p = new Person();
request.setAttribute("p", p);
%>
<c:set property="name" value="uuu" target="${p }" />
${p.name }
<br>-------------c:catch异常处理------------------------------------------------------------------------------------------<br>
<c:catch var="myex">
<%
int x = 1/0;
%>
</c:catch>
${myex.message }
<br>-------------c:if-------看到var就要想到把标签里面的执行结果以var里面的值为关键字把值存在了某个与里面了,用scope指定存放的域-----------------<br>
<c:if var="aaa" test="${user==null }" scope="page">
啊啊啊啊
</c:if>
${aaaa } <!-- 是true和false -->
<br>-------------c:foreach----------------------------------------------------------------------------------------------------------<br>
<%
List list = new ArrayList();
list.add("aaaa");
list.add("bbbb");
list.add("cccc");
list.add("dddd");
request.setAttribute("list", list);
%>
<c:forEach var="str" items="${list}">
${str }
</c:forEach>
<br>-------------c:foreach实现表格间色显示----------------------------------------------------------------------------------------------------<br>
<%
List list1 = new ArrayList();
list1.add("aaaa");
list1.add("bbbb");
list1.add("cccc");
list1.add("dddd");
list1.add("aaaa1");
list1.add("bbbb1");
list1.add("cccc1");
list1.add("dddd1");
request.setAttribute("list", list1);
%>
<style >
.odd{background-color: #ff99ff;}
.even{background-color: #ff6633;}
tr:hover{background-color: #0000ff}
</style>
<table border="1" width="20%">
<c:forEach var="str" items="${list}" varStatus="status">
<tr class="${status.count%2==0?'even':'odd'}"> <!--${stauts} 获取了一个对象,这个对象记住了当前是第几次迭代 -->
<td>${str}</td>
</tr>
</c:forEach>
</table>
<br>--------------c:url重写,第一次加载页面,不知道有没有禁用cookie,第二次载入的时候就直接带cookie----------------------<br/>
<c:url var="URL" value="/index.jsp">
<c:param name="name" value="中国"></c:param>
</c:url>
<a href="${URL }" >购买</a>
<br>----------------c:forTokens--------------------------------------------------------------------------------<br/>
<%
pageContext.setAttribute("data1", "aa,bb,cc,dd");
%>
<c:forTokens items="${data1 }" delims="," var="ss">
${ss }
</c:forTokens>
</body>
</html>