javaweb專案實戰
1.功能概述
網上購物商城分為管理員和普通使用者頁面,使用者可以自行註冊登入,使用者可以加入商品到購物車中,可以檢視商品的詳情,管理員可以對商品進行增刪改查,比如釋出商品,下架商品,修改商品,搜尋商品。
本專案採用mysql資料庫進行儲存資料,所以先搭建專案所需資料庫結構,此專案有
使用者和管理員表,商品資訊表,客戶訂單資訊表等資訊表。
利用搭建好的jsp+servlet框架提供http請求及響應檢視能力,展示專案所需各個jsp頁
面。根據響應顯示註冊頁面進行註冊操作。根據註冊所填寫的帳號和密碼進行系統登入。
2.專案基本結構
filter:過濾器當使用者訪問伺服器資源時,過濾器將請求攔截下來,完成一些通用的操作。
listener:在java程式中,有時也需要監視某些事情,一旦被監聽的物件發生相應的變化,我們應該採取相應的操作。
監聽web三大域物件:HttpServletRequest、HttpSession、ServletContext,透過監聽器監聽三大域物件它們的建立和銷燬。
utils:工具類層。
dao:持久層,介面(應用層和資料層的介面),資料訪問物件,主要做的事情就是對資料庫單表進行增刪改操作。
model:儲存與資料庫表所對應的結構體,作用是方便用表的結構體,增加Mapper的易用性,把所有SQL欄位變成變數放在裡面,根據表結構自動生成。
service: 業務層(應用層),對應介面上的操作,增刪改查,涉及到幾個dao,就呼叫幾個dao。
Servlet:主要是跳轉頁面:1、接受使用者請求,進行處理(doget/dopost)呼叫service,得到資料。
2、做出響應:透過PrintWriter out = response.getWriter()輸出程式碼。
c3p0-config.xml:設定連線資料庫的資訊。
3.專案實戰
本案例實現使用者登入介面
使用者登入介面包括使用者的使用者名稱或郵箱,密碼。
本案例的主要程式碼如下:
<%@ 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="css/bootstrap.css">
<link type="text/css" rel="stylesheet" href="css/style.css">
<link type="text/css" href="css/login.css">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/simpleCart.min.js"></script>
<style>
</style>
</head>
<body>
<!--header-->
<jsp:include page="header.jsp">
<jsp:param name="flag" value="9"></jsp:param>
</jsp:include>
<!--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="/user_login" method="post" style="position:relative;right: 90px;
width: 900px;
height: 560px;
display: flex;
border-radius: 20px;
overflow: hidden;
box-shadow: 0 25px 45px rgba(0, 0, 0, 0.1);">
<div class="left" style="width: 500px;height: 560px;">
<img src="picture/3.jpg" alt="" style="width:100%;height:100%;object-fit: cover;">
</div>
<div class="right" style="width: 400px;
height: 760px;
background: rgba(255,255,255,0.9);
position: relative; top: 22%">
<div class="register-top-grid text-center">
<h3>使用者登入</h3>
<div class="input">
<span>使用者名稱/郵箱 <label style="color:red;">*</label></span>
<input type="text" name="ue" placeholder="請輸入使用者名稱" required="required" style="width: 280px;height: 40px;border-radius: 20px;">
</div>
<div class="input">
<span>密碼 <label style="color:#ff0000;">*</label></span>
<input type="password" name="password" placeholder="請輸入密碼" required="required"style="width: 280px;height: 40px;border-radius: 20px;" >
</div>
<div class="clearfix"> </div>
</div>
<div class="register-but text-center">
<input type="submit" value="提交" style=" width: 180px;
height: 40px;
border-radius: 20px;
border: none;
color: #fff;
font-size: 16px;
cursor: pointer;
margin-top: 50px;
background-image: linear-gradient(120deg, #76daec 0%, #c5a8de 100%);">
<div class="clearfix"> </div>
</div>
</div>
</form>
<div class="clearfix"> </div>
</div>
</div>
</div>
<!--footer-->
<jsp:include page="footer.jsp"></jsp:include>
<!--//footer-->
</body>
</html>
執行結構圖如下: