Java畢業(yè)設計實戰(zhàn)之共享租車信息管理系統(tǒng)的實現(xiàn)
基于servlet+jsp+jdbc的后臺管理系統(tǒng),包含5個模塊:汽車賬戶部管理、租車賬戶部管理、汽車信息管理表、租車記錄表、租車租聘表。功能完整,均能實現(xiàn)增刪查改。
運行環(huán)境:
jdk8+tomcat8.5+mysql5.7+Eclipse
項目技術:
servlet+jsp+jdbc+easyui+jquery






主頁登陸注冊業(yè)務:
public class ForeServlet extends BaseForeServlet {
/**
* 顯示主頁
*
* @param request
* @param response
* @param page
* @return
*/
public String home(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了 ForeServlet home方法");
List<Category> cs = new CategoryDAO().list();
new ProductDAO().fill(cs);
new ProductDAO().fillByRow(cs);
request.setAttribute("cs", cs);
return "home.jsp";
}
/**
* 注冊
*
* @param request
* @param response
* @param page
* @return
*/
public String register(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了 ForeServlet register方法");
Map<String, String> params = new HashMap<>();
InputStream inputStream = super.parseUpload(request, params);
System.out.println(params);
String name = params.get("name");
String password = params.get("password");
System.out.println(name);
// 判斷用戶名是否存在
boolean exist = userDAO.isExists(name);
if (exist) {
request.setAttribute("msg", "用戶名已經(jīng)被使用");
return "register.jsp";
}
User user = new User();
user.setName(name);
user.setPassword(password);
System.out.println(user.getName());
System.out.println(user.getPassword());
userDAO.add(user);
return "@registerSuccess.jsp";
}
/**
* 登錄
*
* @param request
* @param response
* @param page
* @return
*/
public String login(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了 ForeServlet login方法");
Map<String, String> params = new HashMap<>();
InputStream inputStream = super.parseUpload(request, params);
System.out.println(params);
String name = params.get("name");
String password = params.get("password");
// 登錄
User user = userDAO.get(name, password);
if (null == user) {
request.setAttribute("msg", "賬號密碼錯誤");
return "login.jsp";
}
// 將賬號密碼儲存在Session中
request.getSession().setAttribute("user", user);
return "@forehome";
}
/**
* 登出
*
* @param request
* @param response
* @param page
* @return
*/
public String logout(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了 ForeServlet logout方法");
request.getSession().removeAttribute("user");
return "@forehome";
}
/**
* 檢查用戶是否登錄
*
* @param request
* @param response
* @param page
* @return
*/
public String checkLogin(HttpServletRequest request, HttpServletResponse response, Page page) {
User user = (User) request.getSession().getAttribute("user");
if (user != null) {
return "%success";
}
return "%fail";
}
/**
* 模態(tài)登錄框通過 Ajax 方法登錄
*
* @param request
* @param response
* @param page
* @return
*/
public String loginAjax(HttpServletRequest request, HttpServletResponse response, Page page) {
String name = request.getParameter("name");
String password = request.getParameter("password");
User user = userDAO.get(name, password);
if (user == null)
return "%fail";
request.getSession().setAttribute("user", user);
return "%success";
}
/**
* 顯示產(chǎn)品頁
*
* @param request
* @param response
* @param page
* @return
*/
public String product(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了 ForeServlet product方法");
int pid = Integer.parseInt(request.getParameter("pid"));
Product p = productDAO.get(pid);
// 獲取產(chǎn)品的single圖片和detail圖片
List<ProductImage> productSingleImages = productImageDAO.list(p, ProductImageDAO.type_single);
List<ProductImage> productDetailImages = productImageDAO.list(p, ProductImageDAO.type_detail);
p.setProductSingleImages(productSingleImages);
p.setProductDetailImages(productDetailImages);
//p.setFirstProductImage(productSingleImages.get(0));
// 獲取產(chǎn)品屬性信息
List<PropertyValue> pvs = propertyValueDAO.list(p.getId());
// 獲取產(chǎn)品評價信息
List<Review> reviews = reviewDAO.list(p.getId());
// 設置產(chǎn)品銷量數(shù)和評價數(shù)
productDAO.setSaleAndReviewNumber(p);
request.setAttribute("p", p);
request.setAttribute("pvs", pvs);
request.setAttribute("reviews", reviews);
return "product.jsp";
}
/**
* 分類頁面
*
* @return
*/
public String category(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet category方法");
int cid = Integer.parseInt(request.getParameter("cid"));
// 獲取分類對象并為填充產(chǎn)品對象、銷量、評價
Category c = new CategoryDAO().get(cid);
new ProductDAO().fill(c);
new ProductDAO().setSaleAndReviewNumber(c.getProducts());
// 根據(jù)獲取的排序方式進行排序
String sort = request.getParameter("sort");
if (null != sort) {
switch (sort) {
case "review":
Collections.sort(c.getProducts(), new ProductReviewComparator());
break;
case "date":
Collections.sort(c.getProducts(), new ProductDateComparator());
break;
case "saleCount":
Collections.sort(c.getProducts(), new ProductSaleCountComparator());
break;
case "price":
Collections.sort(c.getProducts(), new ProductPriceComparator());
break;
case "all":
Collections.sort(c.getProducts(), new ProductAllComparator());
break;
}
}
// 排序完成后,將分類對象添加到域對象 request 中
request.setAttribute("c", c);
return "category.jsp";
}
/**
* 搜索功能
*
* @param request
* @param response
* @param page
* @return
*/
public String search(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet search方法");
String keyword = request.getParameter("keyword");
List<Product> ps = null;
// 加入異常,防止崩潰
try {
ps = productDAO.search(keyword, 0, 50);
} catch (Exception e) {
e.printStackTrace();
}
// 設置產(chǎn)品的銷量和評論
productDAO.setSaleAndReviewNumber(ps);
request.setAttribute("ps", ps);
return "searchResult.jsp";
}
/**
* 立即購買
*
* @param request
* @param response
* @param page
* @return
*/
public String buyone(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet buyone方法");
int pid = Integer.parseInt(request.getParameter("pid"));
int num = Integer.parseInt(request.getParameter("num"));
Product p = productDAO.get(pid);
User user = (User) request.getSession().getAttribute("user");
List<OrderItem> ois = orderItemDAO.listByUser(user.getId());
int oiid = 0;
boolean found = false;
// 遍歷訂單,如果訂單已存在對應的產(chǎn)品,就在對應購物車的基礎上調(diào)整數(shù)量
if (null != ois) {
for (OrderItem oi : ois) {
if (oi.getProduct().getId() == p.getId()) {
oi.setNumber(oi.getNumber() + num);
orderItemDAO.update(oi);
found = true;
oiid = oi.getId();
break;
}
}
}
// 如果沒找到對應的商品,則新建一條訂單項
if (!found) {
OrderItem oi = new OrderItem();
oi.setUser(user);
oi.setProduct(p);
oi.setNumber(num);
orderItemDAO.add(oi);
oiid = oi.getId();
}
return "@forebuy?oiid=" + oiid;
}
/**
* 結算頁面
*
* @param request
* @param response
* @param page
* @return
*/
public String buy(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet buy方法");
String[] oiids = request.getParameterValues("oiid");
List<OrderItem> ois = new ArrayList<>();
float total = 0;
for (String strid : oiids) {
int oiid = Integer.parseInt(strid);
OrderItem oi = orderItemDAO.get(oiid);
total += oi.getProduct().getPromotePrice() * oi.getNumber();
ois.add(oi);
}
request.getSession().setAttribute("ois", ois);
request.setAttribute("total", total);
return "buy.jsp";
}
/**
* 購物車
*
* @param request
* @param response
* @param page
* @return
*/
public String cart(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet cart方法");
User user = (User) request.getSession().getAttribute("user");
List<OrderItem> ois = orderItemDAO.listByUser(user.getId());
request.setAttribute("ois", ois);
return "cart.jsp";
}
/**
* 加入購物車
*
* @param request
* @param response
* @param page
* @return
*/
public String addCart(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet addCart方法");
int pid = Integer.parseInt(request.getParameter("pid"));
int num = Integer.parseInt(request.getParameter("num"));
Product p = productDAO.get(pid);
User user = (User) request.getSession().getAttribute("user");
List<OrderItem> ois = orderItemDAO.listByUser(user.getId());
int oiid = 0;
boolean found = false;
// 遍歷訂單,如果訂單已存在對應的產(chǎn)品,就在對應購物車的基礎上調(diào)整數(shù)量
if (null != ois) {
for (OrderItem oi : ois) {
if (oi.getProduct().getId() == p.getId()) {
oi.setNumber(oi.getNumber() + num);
orderItemDAO.update(oi);
found = true;
oiid = oi.getId();
break;
}
}
}
// 如果沒找到對應的商品,則新建一條訂單項
if (!found) {
OrderItem oi = new OrderItem();
oi.setUser(user);
oi.setProduct(p);
oi.setNumber(num);
orderItemDAO.add(oi);
oiid = oi.getId();
}
return "%success";
}
/**
* 更改當前訂單項的內(nèi)容
*
* @param request
* @param response
* @param page
* @return
* @throws UnsupportedEncodingException
*/
public String changeOrderItem(HttpServletRequest request, HttpServletResponse response, Page page) throws UnsupportedEncodingException {
System.out.println("調(diào)用了ForeServlet changeOrderItem方法");
User user = (User) request.getSession().getAttribute("user");
if (null == user)
return "%fail";
int pid = Integer.parseInt(request.getParameter("pid"));
int number = Integer.parseInt(request.getParameter("number"));
List<OrderItem> ois = orderItemDAO.listByUser(user.getId());
for (OrderItem oi : ois) {
if (oi.getProduct().getId() == pid) {
oi.setNumber(number);
orderItemDAO.update(oi);
break;
}
}
return "%success";
}
/**
* 刪除訂單項
*
* @param request
* @param response
* @param page
* @return
* @throws UnsupportedEncodingException
*/
public String deleteOrderItem(HttpServletRequest request, HttpServletResponse response, Page page) throws UnsupportedEncodingException {
System.out.println("調(diào)用了ForeServlet deleteOrderItem方法");
User user = (User) request.getSession().getAttribute("user");
if (null == user)
return "%fail";
int oiid = Integer.parseInt(request.getParameter("oiid"));
orderItemDAO.delete(oiid);
return "%success";
}
/**
* 創(chuàng)建訂單
*
* @param request
* @param response
* @param page
* @return
* @throws UnsupportedEncodingException
*/
public String createOrder(HttpServletRequest request, HttpServletResponse response, Page page) throws UnsupportedEncodingException {
System.out.println("調(diào)用了ForeServlet createOrder方法");
// 防止post方法中文亂碼
request.setCharacterEncoding("UTF-8");
User user = (User) request.getSession().getAttribute("user");
List<OrderItem> ois = (List<OrderItem>) request.getSession().getAttribute("ois");
if (ois.isEmpty())
return "@login.jsp";
String address = request.getParameter("address");
String post = request.getParameter("post");
String reciver = request.getParameter("reciver");
String mobile = request.getParameter("mobile");
Order order = new Order();
String orderCode = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
order.setOrderCode(orderCode);
order.setAddress(address);
order.setPost(post);
order.setReceiver(reciver);
order.setMobile(mobile);
order.setUserMessage("默認內(nèi)容");
order.setCreateDate(new Date());
order.setUser(user);
order.setStatus(OrderDAO.waitPay);
orderDAO.add(order);
// 統(tǒng)計總金額并設置每個訂單項的所屬訂單
float total = 0;
for (OrderItem oi : ois) {
oi.setOrder(order);
orderItemDAO.update(oi);
total += oi.getProduct().getPromotePrice() * oi.getNumber();
}
return "@forealipay?oid=" + order.getId() + "&total=" + total;
}
/**
* 支付界面
*
* @param request
* @param response
* @param page
* @return
*/
public String alipay(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet alipay方法");
return "alipay.jsp";
}
/**
* 支付完成界面
* @param request
* @param response
* @param page
* @return
*/
public String payed(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet payed方法");
int oid = Integer.parseInt(request.getParameter("oid"));
Order order = orderDAO.get(oid);
order.setStatus(OrderDAO.waitDelivery);
order.setPayDate(new Date());
orderDAO.update(order);
request.setAttribute("o", order);
return "payed.jsp";
}
/**
* 我的訂單頁面
* @param request
* @param response
* @param page
* @return
*/
public String bought(HttpServletRequest request, HttpServletResponse response, Page page) {
System.out.println("調(diào)用了ForeServlet bought方法");
User user = (User) request.getSession().getAttribute("user");
List<Order> os = orderDAO.list(user.getId(), OrderDAO.delete);
orderItemDAO.fill(os);
request.setAttribute("os", os);
return "bought.jsp";
}
}用戶登陸頁面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<title>用戶登錄</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/bootstrap.css" rel="external nofollow" >
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/style.css" rel="external nofollow" >
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/simpleCart.min.js"></script>
</head>
<body>
<!--header-->
<jsp:include page="header.jsp">
<jsp:param name="flag" value="9"></jsp:param>
</jsp:include>
<!--//header-->
<!--account-->
<div class="account">
<div class="container">
<div class="register">
<c:if test="${!empty msg }">
<div class="alert alert-success">${msg }</div>
</c:if>
<c:if test="${!empty failMsg }">
<div class="alert alert-danger">${failMsg }</div>
</c:if>
<form action="<%=request.getContextPath()%>/user_login" method="post">
<div class="register-top-grid">
<h3>用戶登錄</h3>
<div class="input">
<span>用戶名/郵箱 <label style="color:red;">*</label></span>
<input type="text" name="ue" placeholder="請輸入用戶名" required="required">
</div>
<div class="input">
<span>密碼 <label style="color:red;">*</label></span>
<input type="text" name="password" placeholder="請輸入密碼" required="required">
</div>
<div class="clearfix"> </div>
</div>
<div class="register-but text-center">
<input type="submit" value="提交">
<div class="clearfix"> </div>
</div>
</form>
<div class="clearfix"> </div>
</div>
</div>
</div>
<!--//account-->
<!--footer-->
<jsp:include page="footer.jsp"></jsp:include>
<!--//footer-->
</body>
</html>添加類型業(yè)務:
@WebServlet("/addCategoryServlet")
public class AddCategoryServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String a = request.getParameter("parentId");
String b = request.getParameter("className");
System.out.println("parentId"+a);
System.out.println("className"+b);
Category category = new Category();
category.setCategory_parentid(Integer.valueOf(a));
category.setCategory_name(b);
CategoryService service = new CategoryServiceImpl();
service.addCategory(category);
PrintWriter out = response.getWriter();
out.write("<script>");
out.write("alert('插入分類成功!');");
out.write("location.href='/HOMEECMS/categoryListServlet'");
out.write("</script>");
out.close();
// request.getRequestDispatcher("").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}到此這篇關于Java畢業(yè)設計實戰(zhàn)之共享租車信息管理系統(tǒng)的實現(xiàn)的文章就介紹到這了,更多相關Java 共享租車信息管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Java畢業(yè)設計實戰(zhàn)之健身俱樂部管理系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之工作管理系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之財務預算管理系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之在線高中考試系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之平行志愿管理系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之教室預訂管理系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之寵物醫(yī)院與商城一體的系統(tǒng)的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之生活旅行分享平臺的實現(xiàn)
- Java畢業(yè)設計實戰(zhàn)之養(yǎng)老院管理系統(tǒng)的實現(xiàn)
相關文章
Spring工廠方法創(chuàng)建(實例化)bean實例代碼
這篇文章主要介紹了Spring工廠方法創(chuàng)建bean實例代碼,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
Java excel數(shù)據(jù)導入mysql的實現(xiàn)示例詳解
今天教大家如何使用Java將excel數(shù)據(jù)導入MySQL,文中有非常詳細的代碼示例,對正在學習java的小伙伴呢很有幫助,需要的朋友可以參考下2022-08-08
使用SpringMVC在redirect重定向的時候攜帶參數(shù)的問題
這篇文章主要介紹了使用SpringMVC在redirect重定向的時候攜帶參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java分析Lambda表達式Stream流合并分組內(nèi)對象數(shù)據(jù)合并
Lambda表達式,基于Lambda所帶來的函數(shù)式編程,又引入了一個全新的Stream概念,用于解決集合類庫既有的弊端,Lambda 允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進方法中)。使用 Lambda 表達式可以使代碼變的更加簡潔緊湊2022-12-12
SpringCloud服務實現(xiàn)同時使用eureka和nacos方法
這篇文章主要介紹了SpringCloud服務實現(xiàn)同時使用eureka和nacos方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01
Apache Dubbo的SPI機制是如何實現(xiàn)的
SPI全稱為Service Provider Interface,對應中文為服務發(fā)現(xiàn)機制。SPI類似一種可插拔機制,首先需要定義一個接口或一個約定,然后不同的場景可以對其進行實現(xiàn),調(diào)用方在使用的時候無需過多關注具體的實現(xiàn)細節(jié)。在Java中,SPI體現(xiàn)了面向接口編程的思想,滿足開閉設計原則。2021-06-06

