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>

 

posted @ 2020-09-10 17:27  mingmingn  阅读(209)  评论(0)    收藏  举报