链接:https://pan.baidu.com/s/1fS_ZmxbvOihGfGP9v3c8rQ
提取码:ydhl
学完这一章,javawep基础就学完了,一个暑假,我马马虎虎的过了一遍js,java高级,javawep,发现很多东西都是共通的,jetl标签就相当于js中的jQuery,类似java中的一些插件,作用都是方便我们造作页面。
开始学习jetl之前下载好java包,放在wepapp的lib下;
一共三个包,其实只需要两个,为了避免一些奇奇怪怪的bug,我们还是用三个,由于我是用的时tomcat10,所以jakarta会有一些不同,和老版本的路径不一样。
首先导入路径:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
这样我们就能在jsp页面中使用:<c:
来进行使用jetl标签,idea好像不用配置,我用的Eclipse,要配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>JavaWep10</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/xml</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/functions</taglib-uri>
<taglib-location>/WEB-INF/fn.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
放入wep.xml中,
jetl可以直接取出作用域、设置、删除中的数据:
<%@ 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>
<jsp:useBean id="book" class="Pojo.Book"></jsp:useBean>
<c:set target="${book}" property="name" value="唐诗三百首"></c:set>
<jsp:getProperty property="name" name="book" />
<hr>
<c:out value="${book.name}"></c:out>
<c:set var="text" value="123"></c:set>
<c:out value="${text}"></c:out>
<%
//<c:remove var="varname" [scope="page|request|session|application]
%>
<c:out value="${text}"></c:out>
</body>
</html>
<c:out value="">:输出数据
<c:set var="" value="">:设置数据
<c:remove var="">:删除数据
它们都可以指定范围:
scope="page|request|session|application
分别时:本页面、上一个页面传递、浏览器、服务器
逻辑判断语句:
<%@ 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>
<c:set var="num" value="3"></c:set>
<c:set var="danjia" value="2.6"></c:set>
<c:set var="vip" value="3"></c:set>
<c:if test="${vip eq 0}">
<c:out value="${num*danjia}"></c:out>
</c:if>
<c:if test="${vip eq 1}">
<c:out value="${num*danjia*0.9}"></c:out>
</c:if>
<c:if test="${vip eq 2}">
<c:out value="${num*danjia*0.75}"></c:out>
</c:if>
<c:if test="${vip eq 3}">
<c:out value="${num*danjia*0.6}"></c:out>
</c:if>
<br>
<c:choose>
<c:when test="${vip eq 1}">
<c:out value="${num*danjia*0.9}"></c:out>
</c:when>
<c:when test="${vip eq 2}">
<c:out value="${num*danjia*0.75}"></c:out>
</c:when>
<c:when test="${vip eq 3}">
<c:out value="${num*danjia*0.6}"></c:out>
</c:when>
<c:otherwise>
<c:out value="${num*danjia}"></c:out>
</c:otherwise>
</c:choose>
</body>
</html>
jetl可以通过两个逻辑判断语句:
<c:if test="">
......
</c:if>和if语句一样,
<c:choose>
<c:when test="">
.....满足条件
</c:when>
<c:otherwise>
.......上面的语句全部不满足
</c:otherwise>
</c:choose>
jetl循环语句:
遍历list:
<%@page import="Pojo.Book"%>
<%@page import="java.util.ArrayList"%>
<%@ 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>
<%
ArrayList<Book> list = new ArrayList<>();
list.add(new Book(1001, "童话里的故事"));
list.add(new Book(1002, "也许生命和时间成正比"));
list.add(new Book(1003, "月球之谜"));
list.add(new Book(1004, "这个世界真实吗?"));
session.setAttribute("bookList", list);
%>
<table width="600" border=1"">
<tr>
<td>序号</td>
<td>编号</td>
<td>姓名</td>
</tr>
<c:forEach items="${bookList}" var="i" varStatus="cont">
<c:if test="${cont.index==0}">
<tr bgcolor="red">
</c:if>
<c:if test="${cont.index!=0}">
<tr>
</c:if>
<td>${cont.index+1}</td>
<td>${i.on}</td>
<td>${i.name}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
遍历map:
<%@page import="Pojo.Book"%>
<%@page import="java.util.HashMap"%>
<%@ 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>
<%
HashMap<Integer, Book> map = new HashMap<Integer, Book>();
map.put(1, new Book(1001, "童话里的故事"));
map.put(2, new Book(1002, "也许生命和时间成正比"));
map.put(3, new Book(1003, "月球之谜"));
map.put(4, new Book(1004, "这个世界真实吗?"));
session.setAttribute("map", map);
%>
<table width="600" border=1>
<tr>
<td>序号</td>
<td>编号</td>
<td>姓名</td>
</tr>
<c:forEach items="${map}" var="i" varStatus="cont">
<tr>
<td>${cont.index+1 }</td>
<td>${i.key}</td>
<td>${i.value.name}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<c:forEach items="list" var="i" varStatus="cont">
循环体
</c:forEach>items为需要循环的数据,var为临时变量,这个语句相当于Java的加强fou循环,varStatus时一个计数器。
所以在遍历map的时候,我们取出value(里面是一个实体类)然后取出名字。