2-2-4 Java Web基础-JSTL与EL表达式
EL表达式
EL(Expression Language)表达式语言,用于简化JSP的输出
EL表达式的基本语法:${表达式}
示例:<h1>学生姓名:${student.name}</h1>
案例
1 public class Company { 2 private String cname; 3 private String url; 4 5 public Company(String cname , String url) { 6 this.cname = cname; 7 this.url = url; 8 } 9 10 public String getCname() { 11 return cname; 12 } 13 public void setCname(String cname) { 14 this.cname = cname; 15 } 16 public String getUrl() { 17 return url; 18 } 19 public void setUrl(String url) { 20 this.url = url; 21 } 22 23 }
1 import java.io.IOException; 2 import java.util.ArrayList; 3 import java.util.List; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 /** 12 * Servlet implementation class JstlServlet 13 */ 14 @WebServlet("/jstl") 15 public class JstlServlet extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 /** 19 * @see HttpServlet#HttpServlet() 20 */ 21 public JstlServlet() { 22 super(); 23 // TODO Auto-generated constructor stub 24 } 25 26 /** 27 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 28 */ 29 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 30 request.setAttribute("score", 58); 31 request.setAttribute("grade", "E"); 32 List list = new ArrayList(); 33 list.add(new Company("腾讯" , "www.tencent.com")); 34 list.add(new Company("百度" , "www.baidu.com")); 35 list.add(new Company("慕课网" , "www.imooc.com")); 36 request.setAttribute("companys", list); 37 request.getRequestDispatcher("/core.jsp").forward(request, response); 38 } 39 40 }
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!-- 在Java或者JSP文件中输入 Alt + / 可出现智能提示 --> 4 <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> 5 <!DOCTYPE html> 6 <html> 7 <head> 8 <meta charset="UTF-8"> 9 <title>Insert title here</title> 10 </head> 11 <body> 12 <!-- forEach标签用于遍历集合 13 List companys = (List)request.getAttribute("companys") 14 for(Company c : companys){ 15 out.print("...") 16 } 17 idx = index 18 idx.index属性代表循环的索引值(0开始) 19 --> 20 <c:forEach varStatus="idx" items = "${requestScope.companys }" var = "c"> 21 <h2>${idx.index + 1}-${c.cname }-${c.url }</h2> 22 </c:forEach> 23 24 </body> 25 </html>
作用域对象
EL表达式内置四种作用域对象
| 作用域对象 | 描述 |
| pageScope | 从当前页面取值 |
| requestScope | 从当前请求中获取属性值 |
| sessionScope | 从当前会话中获取属性值 |
| applicationScope | 从当前应用获取全局属性值 |
忽略书写作用域对象时,EL则按作用域从小到大尝试获取.
EL输出参数值
EL表达式内置param对象来简化参数的输出
语法:${param.参数名}
JSTL标签库
JSTL(JSP Standard Tag Library),JSP标准标签库
JSTL用于简化JSP开发,提高代码可读性与可维护性
下载JSTL标签库
官方地址:http://tomcat.apache.org
JSTL v1.2.5组件必须包括taglibs-standard-impl-1.2.5.jar和taglibs-standard-spec-1.2.5.jar
安装JSTL标签库
方法一:将jar文件复制到工程/WEB-INF/lib目录
方法二:将jar文件复制到Tomcat安装目录的lib目录
JSTL标签库种类
| 类别 |
| 核心标签库-core |
| 格式化输出标签库-fmt |
| SQL操作标签库-sql |
| XML操作标签库-xml |
| 函数标签库-functions |
引用JSTL核心库
1 <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
核心库判断标签
<c:if> - 单分支判断
<c:choose>,<c:when>,<c:otherwise> 多分支判断
遍历集合
1 <c:forEach items = "${applicationScope.employees }" var="emp" varStatus="idx"> 2 <tr> 3 <td>${idx.index + 1}</td> 4 <td>${emp.empno }</td> 5 <td>${emp.ename }</td> 6 <td>${emp.department }</td> 7 <td>${emp.job }</td> 8 <td style="color: red;font-weight: bold">¥<fmt:formatNumber value="${emp.salary }" pattern="0,000.00"></fmt:formatNumber></td> 9 </tr> 10 </c:forEach>
fmt格式化标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
格式化日期标签&格式化数字标签
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 5 <!DOCTYPE html> 6 <html> 7 <head> 8 <meta charset="UTF-8"> 9 <title>Insert title here</title> 10 </head> 11 <body> 12 <% 13 request.setAttribute("amt", 1987654.326); 14 request.setAttribute("now", new java.util.Date()); 15 request.setAttribute("html", "<a href='index.html'>index</a>"); 16 request.setAttribute("nothing", null); 17 %> 18 <h2>${now }</h2> 19 <!-- 20 formatDate pattern 21 yyyy - 四位年 22 MM - 两位月 23 dd - 两位日 24 HH - 24小时制 25 hh - 12小时制 26 mm - 分钟 27 ss - 秒数 28 SSS - 毫秒 29 --> 30 <h2> 31 <fmt:formatDate value="${requestScope.now }" pattern="yyyy年MM月dd日 HH时mm分ss秒 SSS毫秒" /> 32 </h2> 33 34 <h2>${amt }</h2> 35 <h2>¥<fmt:formatNumber value = "${amt }" pattern="0,00.00"></fmt:formatNumber>元</h2> 36 <h2>null默认值:<c:out value="${nothing }" default="无"></c:out> </h2> 37 <h2><c:out value="${ html}" escapeXml="true"></c:out></h2> 38 </body> 39 </html>

浙公网安备 33010602011771号