JSTL中的Core标签库
- 以下所涉及到的软件有eclipse2021-09、tomcat9、jdk1.8、jstl的jar包;点击这里跳转jstljar包下载(PS:本文所用的实验代码均为JavaWeb程序设计任务教程的配套代码)
- 选择 jakarta-taglibs-standard-1.1.2.zip 进行下载
- 下载后解压在lib文件夹里有相应的jar包。
- 在eclipse中新建web项目并且将包导入
- 创建一个Orders类代码如下:
public class Orders {
private String id;
private String address;
private String phone;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
- 创建一个servlet类名为:JSTLCore,代码为:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class JSTLCore
*/
@WebServlet("/JSTLCore")
public class JSTLCore extends HttpServlet {
private static final long serialVersionUID = 1L;
public JSTLCore() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
List<Orders> orderList=new ArrayList<>();
Orders orders1=new Orders();
orders1.setId("00551");
orders1.setAddress("福建王一");
orders1.setPhone("13785594487");
Orders orders2=new Orders();
orders2.setId("00552");
orders2.setAddress("河北王二");
orders2.setPhone("15855594483");
orderList.add(orders1);
orderList.add(orders2);
req.setAttribute("username", "李二");
req.setAttribute("orders", orderList);
req.getRequestDispatcher("/JSTLCore.jsp").forward(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
- 最后在创建一个jsp文件,名为:JSTLCore代码为
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="head" style="text-align: center; width: 300px">
<c:if test="${empty username}">
<a href="/Shiyan/JSTLCore">您好,请先登录</a> <a
href="#">免费注册</a>
</c:if>
<c:if test="${!empty username}">
${username} 先生/女士,您好 <a href="/Shiyan/JSTLCore.jsp">退出</a>
</c:if>
</div>
<br>
<div id="contents">
<c:choose>
<c:when test="${!empty orders}">
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>订单编号</th>
<th>邮寄地址</th>
<th>联系电话</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${orders}" var="order" varStatus="s">
<tr>
<td>${s.count}</td>
<td>${order.id}</td>
<td>${order.address}</td>
<td>${order.phone}</td>
<td><a href="#">修改</a> <a href="#">删除</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</c:when>
<c:otherwise>
<div style="text-align: center; width: 300px">
<c:out value="${orders}">
查询订单orders集合为空!
</c:out>
</div>
</c:otherwise>
</c:choose>
</div>
</body>
</html>
其中<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
这一代码的作用是利用taglib指令导入Core标签库,如果不导入的话就没办法用了哟
代码:
<a href="/Shiyan/JSTLCore">您好,请先登录</a> <a href="#">免费注册</a>
<a href="/Shiyan/JSTLCore.jsp">退出</a>
这一代码中href="/Shiyan/JSTLCore"所表示的servlet类JSTLCore的地址;Shiyan需要和自己所创建的web项目名称一致,因为我创建的项目为Shiyan所以为 href="/Shiyan/JSTLCore",后面的href="/Shiyan/JSTLCore.jsp"这个也是一样的道理,不过它指向的是jsp文件而已。
8.点击运行后结果为
点击您好,请先登录后的结果为:
- 以上便是使用JSTL中的Core标签库的简单方法,现在我来说一说,这其中可能遇到的问题首先是jstl的jar包版本太低,可能导致你在运行的过程当中无法识别,第二web.xml的配置,在eclipse当中如果你的Dynamic web module version为3.0及以上版本可能出现配置出错问题,一般我是将这个调为2.5,这样我就可以在web.xml文件中进行编写(新手建议这样);这个在创建web项目的时候可以进行选择 。
- Dynamic web module version2.5和3.0及以上的区别:
(1)选择2.5的时候,会默认勾选创建web.xml文件,而3.0需要在下下一步中手动勾选.
(2)选择2.5的时候,如果新建了Servlet文件,需要在web.xml文件中进行配置,而3.0版本在新建Servlet文件时会自动加上注解,不在需要额外的配置。 - 也有可能出现tomcat版本太低无法识别包或者其他问题,建议改成tomcat9版本。
以上便是我对于使用JSTL中的Core标签库的简单方法的一些见解,如果有错的地方请各位看官批评指正出来,让大家互相进步!!谢谢观看!