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

来源:互联网 发布:2017网络红歌在线试听 编辑:程序博客网 时间:2024/06/08 02:41

核心标签库

<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{@Overrideprotected 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