java web007——表达式语言JSTL标签库

Posted 江州益彤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web007——表达式语言JSTL标签库相关的知识,希望对你有一定的参考价值。

一、JSTL

JSTL : JSP Standard Tag Library,目前最新的版本为1.2,它提供给Java Web
开发人员一个标准通用的标签函数库。 开发人员能够利用JSTL 和EL来开发Web
程序,取代传统直接在页面上嵌入Java脚本的做法,以提高程序可读性、维护性和方便性。

导入jstl标签库
Jstl 表达式操作
Jstl 选择操作
Jstl 循环操作
Jstl URL操作

user.java

package user;

public class User {
	private Integer id;
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public User(Integer id, String name) {
		super();
		this.id = id;
		this.name = name;
	}

	@Override
	public String toString() {
		return "user [id=" + id + ", name=" + name + "]";
	}
}

a.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>AAA</h1>
</body>
</html>

testJstl.jsp


<%@page import="java.util.Arrays"%>
<%@page import="java.util.List"%>
<%@page import="user.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<%
		User user=new User(1,"Tom");
		request.setAttribute("USER", user);
		request.setAttribute("Price", 60);
		List<String> titles=Arrays.asList(new String[]{"aaa","bbb","ccc","ddd"});
		request.setAttribute("titles", titles);
	%>
	
	<jsp:forward page="jstl.jsp">
		<jsp:param value="<<JAVA>>" name="book"/>
		<jsp:param value="12" name="price"/>
		<jsp:param value="65" name="age"/>
		<jsp:param value="1" name="number"/>
		<jsp:param value="2" name="number"/>
		<jsp:param value="3" name="number"/>
		<jsp:param value="4" name="number"/>
	</jsp:forward>
</body>
</html>

jstl.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 上面的prefix 给标签库添加标志 -->
	
	<font color="red">一、JSTL 表达式操作</font><br>
	<font color="blue">1、c.out</font><br>
	jstl转译特殊字符Book:<c:out value="${param.book }">使用jstl,c:out可以转译特殊字符</c:out><br>
	el不转译特殊字符Book:${param.book }<br><!-- el不会转译特殊字符 -->
	<!-- escapeXml:是否按照字符格式输出 -->
	<c:out value="<h4>aaa</h4>" escapeXml="fasle"></c:out><br>
	<c:out value="<h4>aaa</h4>" escapeXml="true"></c:out><br>
	<!-- default:取不到,则设置默认值 -->
	设置默认值:<c:out value="${param.book12 }" default="javaee"></c:out><br>
	<br>
	
	<font color="blue">2、c.set</font><br>
	<!-- 把${param.book}值,取bookname名,放到request域中 ,相当于setAttrbute-->
	<c:set value="${param.book }" var="bookname" scope="request"></c:set>
	BookName:<c:out value="${requestScope.bookname }"></c:out><br><br>
	
	操作User.java:<br>
	UserNameBefore:<c:out value="${requestScope.USER.name }"></c:out><br>
	<!-- 设置user的name的值 -->
	<c:set target="${requestScope.USER }" property="name" value="Mike"></c:set>
	UserNameAfter:<c:out value="${requestScope.USER.name }"></c:out><br> 
	<br> 
	
	<font color="blue">3、c.remove移除指定域对象中的指定属性</font><br>
		Price:<c:out value="${requestScope.Price }"></c:out><br>
		<c:remove var="Price" scope="request"/>
		Price:<c:out value="${requestScope.Price }"></c:out><br><!-- 再次获取为null -->
	<br>
	
	
	<font color="red">二、JSTL 选择操作</font><br>
	<font color="blue">1、c:if没有else</font><br>
	Price:<c:if test="${param.price <12}">还好,不贵,买</c:if><br>
	<c:if test="${param.price >=12}" var="isExpensive" scope="request"></c:if>
	isExpensive:${requestScope.isExpensive }<br>
	
	<font color="blue">2、c:choose,when,otherwise</font><br>
		<c:choose>
			<c:when test="${param.age<18 }">小孩</c:when>
			<c:when test="${param.age<=35 }">青年</c:when>
			<c:when test="${param.age<60}">中年人</c:when>
			<c:otherwise>oldman</c:otherwise>
		</c:choose>
	<br>
	
	<font color="red">三、JSTL 循环操作</font><br>
	<font color="blue">1、c:forEach</font><br>
	<!-- 
		items		: 循环的数组
		var			:数组每一个变量
		varStatus	:
				index:数组中值的索引
				count: 已经从数组中读出多少个元素
				first: 是不是第一个元素
				last : 是不是最后一个元素
	 -->
	<c:forEach items="${requestScope.titles }" var="title">
		---${title }<br>
	</c:forEach>
	<c:forEach items="${requestScope.titles }" var="title" varStatus="status">
		---${status.index},${status.count},${status.first},${status.last}---${title }<br>
	</c:forEach>
	<c:forEach  var="i" begin="0" end="10" step="2">
		---${i }<br>
	</c:forEach>
	<br>
	
	<font color="blue">2、c:forTokens</font><br>
	<c:set var="aString" value="a,b,c,d,e,f.j.h;i;j" scope="request"></c:set>
	<!-- 以“.”进行分割,输出 -->
	<c:forTokens items="${requestScope.aString }" delims="." var="s">
		--${s }<br>
	</c:forTokens>
	<br>
	
	
	<font color="red">四、JSTL URL操作</font><br>
	<font color="blue">1、c:import将其他页面包含进来</font><br>
	<c:import url="a.jsp"></c:import><br>
	
	<!--  
	font color="blue">2、c:redirect转到其他页面</font><br>
	<c:redirect url="a.jsp"></c:redirect><br>
	-->
	
	<font color="blue">3、</font><br>
	<!-- 生成一个到a.jsp的URL,并带有两个参数id,method,取名叫aPage,放到page域中 -->
	<c:url value="a.jsp" var="aPage" scope="page">
		<c:param name="id">12</c:param>
		<c:param name="method">delete</c:param>
	</c:url>
	<a href="${pageScope.aPage }">To AAA Page</a><br><br>
</body>
</html>

结果


二、MVC改进和对比

<%@page import="com.dgut.mvc.bean.Member"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page import="java.util.List,java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>显示所有界面</h3>
	<hr>
		<form action="${pageContext.request.contextPath }/searchMember.do" method="post">
			Name:<input type="text"  name="name" value="${param.name }"><br>
			IdCard:<input type="text"  name="idCard" value="${param.idCard }"><br>
			Phone:<input type="text"  name="phone" value="${param.phone }"><br>
			<input type="submit" value="模糊查询">
		</form>
	<hr>
	<%
		List<Member> members = (List<Member>) request.getAttribute("members");
	%>
	<a href="${pageContext.request.contextPath }/toInputMember.do">Add Member</a>
	<table border="1" cellspacing="0" cellpadding="5">
		<tr>
			JAVA Web基础 EL表达式与JSTL标签库

Java Web JSTL标签库

EL(表达式语言)与JSTL(JSP标准标签库)

JSTL标签库

JSTL标签库

El表达式&JSTL标签库