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标签库