第六章JSP标准标签库JSTL(1)

核心标签库

<c:out>    文本输出

<c:set><c:remove>         设置、删除 属性值

<c:catch>         异常捕获

<c:if> 和<c:choose><c:when><c:otherwise>    条件选择

<c:forEach><c:forToken>      循环迭代

 

掌握标签的属性用法:

属性名

属性的作用

属性值的类型

属性值是否支持el表达式

 

 

【ElTestSerlet.java】


package com.rupeng.web3;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ELTest1Servlet extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		req.setAttribute("age", 50); 
		req.setAttribute("name", "hello a>b<c>d"); //escapeXml属性默认为true使特殊字符转义输出
		
		Person p1 = new Person();
		p1.setId(5);
		p1.setName("tom");
		p1.setAge(50);
		
		Person p2 = new Person();
		p2.setId(6);
		p2.setName("jerry");
		p2.setAge(15);
		
		List<Person> list = new LinkedList<Person>();
		list.add(p1);
		list.add(p2);
		
		req.setAttribute("persons", list);
		req.getRequestDispatcher("/ElTest1.jsp").forward(req, resp);
	}
	
}

【然后配置web.xml】

 

【注意】uri="http://java.sun.com/jsp/jstl/core"

 

 

核心标签库   <c:out>

l  <c:out> 输出一段文本内容到pageContext对象当前保存的“out”对象中

l  <c:out>的属性


属性名

是否支持EL表达式

属性值类型

属性说明

value

true

Object

用来指定要输出的内容

escapeXml

true

Boolean

true:对特殊字符进行转义

default

true

Object

默认值,当value为null时输出


对应的主要Java代码

         out.print(obj);

和${name}的区别是<c:out>支持escapeXml,对于可能有特殊字符的要用<c:out>

 

核心标签库 <c:forEach>


循环迭代标签可以迭代的对象:Collection、Map、Iterator、Enmuration、String、ResultSet 


属性名

是否支持EL

属性类型

属性说明

items

true

集合等

将要迭代的集合对象

var

false

String

代表当前迭代到的元素,并存入page中

begin

true

int

迭代开始的索引位置

end

true

int

迭代结束的索引位置

step

true

int

迭代增量,也成为步长

varStatus

false

String

为迭代状态对象命名,并放在page中


【ElTest1.jsp】

<pre name="code" class="html"><%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Insert title here</title>
</head>
<body>
	<c:out value="${name}" ></c:out>
	<p>${name }</p>
	<p><c:out value="${nickname}" default="${age}"/></p> //没有值时候默认输出default	
	<p><c:out value="${requestScope.age}" /></p>
	<table>
		<tr><td>id</td><td>name</td><td>age</td></tr>
		<c:forEach items="${persons}" var="p">
			<tr style="color:${p.age gt 18?'red':'black' }"><td>${p.id }</td><td>${p.name }</td><td>${p.age }</td></tr>
		</c:forEach>
	</table>
</body>
</html>


 


实际上一般不在jsp中储存数据

 

核心标签库   <c:set>(*)

 

把数据存放到web域、Map、JavaBean中

属性名

是否支持EL表达式

属性值类型

属性说明

value

true

Object

需要设置的变量的值

var

false

String

需要设置的变量的名称

scope

false

String

变量所放置的范围对象:page、request、session、application,和var配合使用

target

true

Object

指定在JavaBean或Map中的变量,和property配合使用

property

true

String

指定JavaBean的字段名或者Map的key。不能xx.xxx这样多段的

 

1)scope var是一对,用来在scope范围中设定名字为var的值;

2)target property是一对,是用来在通过target的EL表达式获取的对象中设置属性名为property的值。

 

核心标签库 <c:remove> (*)

l  <c:remove>标签用于删除各种Web域中的属性。

        

     其语法格式如下:

     <c:remove var="varName"        

 

属性名

支持EL表达式

属性值类型

属性说明

var

false

String

需要删除的变量的名称

scope

false

String

变量所属的范围对象:page、request、session、application,和var配合使用

 

 

核心标签库   <c:catch> (*)】知道即可

 

l  用于捕获异常,仅仅是捕获,并不做处理。如果指定var属性,则会把异常对象存入page对象中

属性列表

 

属性名

是否支持EL表达式

属性类型

属性说明

var

false

String

指定在page中的变量名

 

     注意点

         由于JSP有错误页面机制,所以一些关键的错误异常还是要跳转到错误页面,那些次要的异常可以使用此标签捕获

【ELTest2】

<pre name="code" class="html"><%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.rupeng.web3.Person"%>
<%@page import="java.util.HashMap"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Insert title here</title>
</head>
<body>
	<c:set scope="request" var="name" value="rupeng"></c:set>
	<c:set scope="session" var="name" value="baidu"></c:set>
	<%
		Person p1 = new Person();
		request.setAttribute("p",p1);
		
		HashMap<String,String> map = new HashMap();
		session.setAttribute("map1",map);
	%>
	
	${requestScope.name }<br/>
	${sessionScope.name }<br/>
	
	<c:set target="${requestScope.p}" property="name" value="yzk"/>
	
	${p.name}<br/>
	<c:set target="${map1}" property="tom" value="123"/>
	<p>
		${sessionScope.map1.tom}
	</p>
	
	<p>
		${name}
	</p>
	<c:remove var="name" scope="request"/>
	<p>
		${name}
	</p>
	
	<c:catch var="ex">
		<%
			String s = request.getParameter("name");
			s.toString();
		%>
	</c:catch>
	异常对象:<c:out value="${pageScope.ex}"></c:out>
	异常堆栈:<c:out value="${ex.stackTrace}"></c:out>
</body>
</html>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值