1、第一部分:车辆登记html页面:用户通过输入表单的车辆登记信息,提交至StoreServlet。
putExcel.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>信息登记表</title>
</head>
<body>
<form action="StoreServlet" method="post">
<table border="1"aligen="center">
<!--第一行内容使用<tr>标签进行换行 -->
<tr>
<td>汽车牌号:<input type="text" name="carNumber" ></td>
</tr>
<!--第二行内容 -->
<tr>
<td>汽车名称:<input type="text" name="carName"></td>
</tr>
<!--第三行内容 -->
<tr>
<td>汽车生产日期:<input type="text" name="productDate"></td>
<!--提交按钮添加在日期框后面不同列<td> -->
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
第二部分:汽车JavaBean:一个封装了汽车牌号、汽车名称、汽车生成日期属性的Car类,将在车辆信息显示页面用于实例化最近添加汽车的JavaBean对象。
Car.java:
public class Car {
private String carNumber;
private String carName;
private String productDate;
//封装一个Car类用于对比和存储新的数据对象
public Car(String carNumber,String carName,String productDate) {
//实例化对象
this.carNumber=carNumber;
this.carName=carName;
this.productDate=productDate;
}
//get、set方法重写
//carNumber
public String getcarNumber() {
return carNumber;
}
public void setcarNumber(String carNumber) {
this.carNumber=carNumber;
}
//carName
public String getcarName() {
return carName;
}
public void setcarName(String carName) {
this.carName=carName;
}
//productDate
public String getproductDate() {
return productDate;
}
public void setproductDate(String productDate) {
this.productDate=productDate;
}
}
第三部分:StoreServlet.java:获取ServletContext对象的车辆信息集合,与登记页面提交的信息比较,确认车辆信息是否已经存在。已经存在,则输出对话框,点击提示按钮,跳转回登记页面;否则,用汽车JavaBean创建一个汽车对象并以提交的汽车信息为其属性值,然后添加至ServletContext对象的车辆信息集合,同时设置ServletContext对象的newcar属性值为最新添加的汽车对象,最后跳转至车辆信息显示页面。
StoreServlet.java
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class StoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@SuppressWarnings({ "unchecked" })
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求参数,并且赋值给Java Bean中定义的参数
String carNumber=request.getParameter("carNumber");
String carName=request.getParameter("carName");
String productDate=request.getParameter("productDate");
//获取ServletContext对象
ServletContext context=getServletContext();
//获取车辆集合与LIST数组中
List<Car> cars=(List<Car>)
//获取cars的属性值
context.getAttribute("cars");
if(cars==null) {
cars=new ArrayList<>();
context.setAttribute("cars", cars);
}
//车辆数据表单是否重复判断
boolean carExist = false;
for (Car car : cars) {
//对车辆的三个属性同时进行判断确保保单的重复提交
if (car.getcarNumber().equals(carNumber)&&car.getcarName().equals(carName)&&car.getproductDate().equals(productDate)) {
carExist = true;
break;
}
}
if (carExist==true) {
// 如果车辆信息已经存在则进行状态框跳转进行语句提示
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("<script>alert('该车辆信息已经存在!');"
+ "window.location.href='putExcel.html';</script>");
} else {
// 创建新的car对象,将后续提交的表单添加到集合中并跳转到jsp页面进行显示
Car newCar = new Car(carNumber,carName,productDate);
newCar.setcarNumber(carNumber);
newCar.setcarName(carName);
newCar.setproductDate(productDate);
//将新创建的car对象添加到原car对象的表单集合中
cars.add(newCar);
// 设置ServletContext的new car属性值为最新添加的car对象
context.setAttribute("newCar", newCar);
// 添加完成后跳转到车辆信息表单集合显示页面
response.sendRedirect("wxxlist.jsp");
}
}
}
第四部分:
车辆信息显示jsp页面:用Javabean标签获取application作用域的最新添加车辆对象,在页面顶端用Javabean标签输出最新车辆信息。应用jstl标签循环结构实现获取车辆集合每个元素及应用EL表达式输出。(这里需要根据运行的tomcat的版本选择jar包添加在bin目录下)
wxxlist.jsp:
<%@ 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>车辆信息显示表</title>
</head>
<body>
<table border="1">
<tr>
<!-- 定义表格单元头 -->
<th>最近登记汽车牌号</th>
<th>最近登记汽车名称</th>
<th>最近登记汽车生产日期</th></tr>
<!-- 定义表格行与列 -->
<tr>
<td>${newCar.carNumber}</td>
<td>${newCar.carName}</td>
<td>${newCar.productDate}</td></tr>
</table>
<!-- 进行两个<table>分割进行换行操作-->
<br></br>
<!-- 遍历输出集合元素 -->
<c:forEach items="${cars}" var="car">
<table border="1">
<tr>
<th>所有登记汽车牌号</th>
<th>所有登记汽车名称</th>
<th>所有登记汽车生产日期</th></tr>
<tr>
<td>${car.carNumber}</td>
<td>${car.carName}</td>
<td>${car.productDate}</td></tr>
</table>
</c:forEach>
</body>
</html>
3、jsp页面显示集合中所有表单信息界面:
到此就实现了全部的功能了,如果看到这了就给小编留个收藏加关注吧!有问题可以发在评论区,看到后会回复的,一起学习,一起进步!