用jsp+servlet实现停车管理系统

实现停车管理系统,我们首先得封装一些操作和接口,就像上一篇博客那样封装。有需要就去看看我上一篇博客,里面封装的DAO类都可以用。

上一篇我没有写service层今天就需要把这个加上。因为时间问题,我就只实现了添加和查询接口。

public interface CarService {
	
	//添加
	public int insert(Car car);
	//查询
	public List<Car> selectAll();

}

然后实现这些接口,实现他们就直接调用已经封装好的DAO。

public class CarServiceImpl implements CarService {

	private CarDAO carDAO = new CarDAOImpl();

	public int insert(Car car) {
		return carDAO.insert(car);
	}



	public List<Car> selectAll() {
		return carDAO.select();
	}

}

现在开始写主界面,在表尾写一个超链接,用于跳转到添加车辆信息的页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@page import="java.util.List"%>
<%@page import="com.jiangsan.bean.Car"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset=UTF-8>
<title>车辆信息</title>
</head>
<body>
	<table border="1" cellspacing="0" cellpadding="1" align="center"
		style="font-size: 30px;">
		<thead>
			<tr>
				<th>序号</th>
				<th>车牌号</th>
				<th>停车位置</th>
			</tr>
		</thead>
		<tbody>
			<c:forEach items="${carList}" var="car">
				<tr>
					<td>${car.id }</td>
					<td>${car.name }</td>
					<td>${car.position }</td>
				</tr>
			</c:forEach>
		</tbody>
		<tfoot>
			<tr>
				
				<td colspan="3"><a href="AddCar.jsp">添加</a></td>
			</tr>
		</tfoot>
	</table>
</body>
</html>

再写一个添加车辆信息的页面,在这里里面我们写一个隐藏域,命名为“carFlag”,值为“insert”,用于一个标志。

<input type="hidden" name="carFlag" value="insert">
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@page import="java.util.List"%>
<%@page import="com.jiangsan.bean.Car"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="Controller" method="post">
		<input type="hidden" name="carFlag" value="insert">
		<table border="1" cellspacing="0" cellpadding="1" align="center">
			<tbody>
				<tr>
					<td>车牌号码: <input type="text" name="name">
					</td>
				</tr>
				<tr>
					<td>停车位置: <input type="text" name="position"></td>
				</tr>
				<tr>
					<td><button type="submit">提交</td>
				</tr>
			</tbody>
		</table>
	</form>
</body>
</html>

写玩网页后,开始写一个servlet类,命名为 Controller。 首先声明一个对象carService,用于调用service层中的方法。

分别定义两个方法selectAll 和 addCar,第一个方法用于调用Service类中的方法selectAll()遍历数据库中的表单,并跳转到主页面显示所有数据;

第二个方法addCar用于调用Service类中的方法insert(),往数据库中添加车辆信息,并执行selectAll()。

如果我们以后还需要给系统加一个删除功能,就再定义一个方法,并写一个对应的网页,但是需要在网页里面添加一个隐藏域,并在隐藏域中设置一个标志:name属性不变,value根据实际需求命名

比如删除功能:

<input type="hidden" name="carFlag" value="delete">

 这样,我们就可以用servlet类中的内置对象request 中的getParameter()方法取“carFlag”中的值,再用if()判断carFlag的值,然后根据carFlag的值取调用哪个方法。


@WebServlet("/Controller")
public class Controller extends HttpServlet {
	private static final long serialVersionUID = 1L;
	CarService carService = new ServiceImpl();

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");// 统一请求字符编码集到UTF-8(处理中文传输的乱码)
		String carFlag = request.getParameter("carFlag");
		if (carFlag.equals("insert")) {
			addCar(request, response);
		} else if (carFlag.equals("selectAll")) {
			selectAll(request, response);
		}

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	private void selectAll(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		List<Car> list = carService.selectAll();
		request.setAttribute("carList", list);
		request.getRequestDispatcher("MainView.jsp").forward(request, response);

	}

	private void addCar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Car car = new Car();
		String name = request.getParameter("name");
		String position = request.getParameter("position");
		car.setName(name);
		car.setPosition(position);
		int i = carService.insert(car);
		if (i > 0) {
			selectAll(request, response);
		}
	}

}

就这样,我们就完成了停车管理系统中查询和添加两个功能。但这个系统的页面还需要优化,功能也需要完善,比如删除和修改就还没有完成,但是我们可以根据前面两个功能去完成后面的两个还没完成的功能。

对了,因为最开始就需要显示数据库中表单的数据,但是在Controller类中没有直接调用selectAll方法,所以我们在输入URL的时候需要加上?carFlag=selectAll,完整的输入:http://localhost:8080/PracticeProject/Controller?carFlag=selectAll

PracticeProject 是项目名;

Controller是类名。

在后面加上?carFlag=selectAll,相当于是在第一次进入Controller的时候,把carFlag的值就定义为selectAll

当我们执行String carFlag = request.getParameter("carFlag"); 的时候,carFlag=“selectAll”。

再加上已经完善的项目文件

链接:https://pan.baidu.com/s/15GS2uowEVSJKF5IjXOnHjw 
           提取码:hxe8 
 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值