通过html+servlet+jsp+javaBean实现简单的web下的车辆信息登记功能(超详细)

文章介绍了使用HTML表单在车辆登记页面提交信息,通过StoreServlet进行数据验证和存储,以及使用CarJavaBean封装车辆信息。文章详细描述了如何检测重复提交,并展示了JSP页面展示车辆信息的过程。
摘要由CSDN通过智能技术生成

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>

 

以下是运行成功后的界面:
1、html表单提交界面:
2、表单重复提交,状态栏跳转界面:

3、jsp页面显示集合中所有表单信息界面:

到此就实现了全部的功能了,如果看到这了就给小编留个收藏加关注吧!有问题可以发在评论区,看到后会回复的,一起学习,一起进步!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wlxx22

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值