# 网上书城项目答辩
## 主要技术
**关键字**:JSP、servlet、Ajax、jstl、JavaScript、注册登录、分页、购物车、增删改查
开发环境:Eclipse、MySQL 5.7、Tomcat 8.0
## 数据库表结构设计
![](https://www.writebug.com/myres/static/uploads/2022/1/24/29b1d731b1c7164ec24a54b5cf97078f.writebug)
**books表结构:**
![](https://www.writebug.com/myres/static/uploads/2022/1/24/c26004e9afa5d7d6afcf35ead2e7d9eb.writebug)
**items表结构:**
![](https://www.writebug.com/myres/static/uploads/2022/1/24/017733603c7f2e8083a3f12d25d162b0.writebug)
**orders表结构:**
![](https://www.writebug.com/myres/static/uploads/2022/1/24/e154172a60ead5b37eb3d9bf792ffbe2.writebug)
**userinfo表结构:**
![](https://www.writebug.com/myres/static/uploads/2022/1/24/1b57bac160e0db8446125f5576b3f23d.writebug)
## 项目包结构
![](https://www.writebug.com/myres/static/uploads/2022/1/24/f584872ed0469ba354d59890e01909df.writebug)
## MVC设计模式
### M(model层)
1. biz包:业务处理。
2. dao包:数据访问,对数据库的一些封装操作。
3. entity包:实体类,javabean构建,View层和数据库之间的桥梁作用。
### V(view层)
1. Jsp页面:与用户进行交互的界面。
![](https://www.writebug.com/myres/static/uploads/2022/1/24/b0b1a19d0e815dbd11fe630f2971aeb2.writebug)
### C(controller 层)
1. servlet包:控制层,处理View层Jsp页面发来的请求。
## 注册登录模块
### Register
![](https://www.writebug.com/myres/static/uploads/2022/1/24/8af73597ad88d9d32608eadbfede2013.writebug)
**注册页面中form表单**
验证用户名、验证密码、验证邮箱
```jsp
<form method="post" action="RegisterServlet" onsubmit="return checkRegister()">
<dl>
<dt>用 户 名:</dt>
<dd>
<input class="input-text"
type="text" id="username" name="username" onblur="isUsernameLegal()"/>
<span id="usernull"></span><span id="alreadyExsits"></span>
</dd>
<dt>密 码:</dt>
<dd>
<input class="input-text"
type="password" id="password" name="password" onblur="isPasswordLegal()" />
<span id="nullpassword"><font color=\"green\">密码至少8位</font></span>
<span id="simplepassword"></span>
</dd>
<dt>确认密码:</dt>
<dd>
<input class="input-text"
type="password" id="rePassword" name="rePassword" onblur="isRepasswordLegal()" />
<span id="nullrePassword"></span><span id="uneq"></span>
</dd>
<dt>Email地址:</dt>
<dd>
<input class="input-text"
type="text" id="email" name="email" onblur="isEmailLegal()" />
<span id="nullemail"><font color=\"green\">请输入正确格式的邮箱</font></span>
<span id="errorInput"></span>
</dd>
<dt>
</dt>
<dd class="button"><input class="input-reg" type="submit" name="register" value="" /></dd>
</dl>
</form>
```
**Ajax(异步 JavaScript 和 XML )**:验证用户名是否已被注册,页面部分数据刷新,而无需加载整个网页,提高网站的访问效率。
```javascript
/**
* Ajax检查用户是否已经被注册
* 异步:发送请求时不等返回结果,由回调函数处理结果
* @returns {Boolean}
*/
function isExists() {
var xmlHttp; //定义 xmlHttp XmlHttpRequest对象从服务器异步获取数据后通过javascript修改页面局部信息
try {
//根据不同浏览器初始化不同的xmlHttp浏览器对象
//IE6以上浏览器
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
//FireFox
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
//IE5.5+
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("您的浏览器不支持Ajax");
return false;
}
}
}
var username = document.getElementById("username").value; //获取用户名
/**
* open(提交方式[get|post],url(servlet路径),同步或异步[false|true])
* RegisterServlet: servlet路径
* 打开和后台服务器的链接
*/
xmlHttp.open("POST", "RegisterServlet?action=check&username="+username, true); //路径中不能有空格
xmlHttp.send(null); //传送数据
/**
* onreadystatechange:调用回调函数
* readyState:请求状态,代码是未初始化,1:初始化,2:发送请求,3:开始接受数据,4:接受结果完毕
* status: http状态码 200成功,404路径错误,500后台代码错误,
*/
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState==4 && xmlHttp.status==200) {
var usernull = document.getElementById("usernull");
var result = xmlHttp.responseText; //接受服务器端传过来的数据,写出来的数据都是String类型
if(result == "true") {
usernull.innerHTML = "<font color='red'>当前用户名已被注册</font>";
return false;
} else if(result == "false") {
usernull.innerHTML = "<font color='green'>当前用户名可用</font>";
return true;
}
}
}
}
```
### Login
![](https://www.writebug.com/myres/static/uploads/2022/1/24/cda4e895e4d33290706aaa3d06a4e295.writebug)
**LoginServlet中doGet方法:**
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");//获取页面传过来的参数
String password = request.getParameter("password");
//登录操作
boolean flag = userBiz.checkLogin(username, password);
if(flag) {
request.getSession().setAttribute("loginuser", username);
response.sendRedirect("main.jsp");
response.sendRedirect("SearchServlet"); //首页直接显示
} else {//登录失败
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<script type='text/javascript'>");
out.println("alert(\"登录失败!请重新登录\")");//反斜杠转义
out.println("open(\"login.jsp\", \"_self\");");//重新打开新的页面, _self在原窗口打开
out.println("</script>");
out.close();
}
}
```
## 网站首页及搜索图书模块
![](https://www.writebug.com/myres/static/uploads/2022/1/24/40c191d82eb6b4330564ede57f4d43f3.writebug)
### **分页展示**
Jstl标签库 c:forEach,循环遍历展示图书信息。
```jsp
<c:forEach var="book" items="${books }">
<tr>
<td><input type="checkbox" name="bookId" value="${book.bid }" /></td>
<td class="title">${book.bookname }</td>
<input type="hidden" name="title" value = "${book.bid }:${book.bookname}"/>
<td>¥${book.b_price }</td>
<input type="hidden" name="price" value = "${book.bid }:${book.b_price}"/>
<!-- b_price跟数据库字段名相对应 -->
<td>${book.stock }</td>
<input type="hidden" name="stock" value = "${book.bid }:${book.stock}"/>
<td class="thumb"><img src="${book.image }" /></td>
<input type="hidden" name="image" value = "${book.bid }:${book.image}"/>
</tr>
</c:forEach>
```
```jsp
<!--分页开始-->
<%if(request.getAttribute("current") != null) { %>
<div class="page-spliter">
<a href="SearchServlet">首页</a>
<%for(int i = 1; i <= totalPage; i++) { %>
<%if(i==no) { %> <!-- 如果不是当前页显示为链接 -->
<span class="current"><%=i %></span>
<%continue;} %>
<a href="SearchServlet?currentPage=<%=i %>"><%=i %></a>
<%} %>
<a href="SearchServlet?currentPage=<%=totalPage %>">尾页</a>
</div>
<%} %>
<!--分页结束-->
```
**servlet处理**
```java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
关键字:JSP、servlet、Ajax、jstl、JavaScript、注册登录、分页、购物车、增删改查 开发环境:Eclipse、MySQL 5.7、Tomcat 8.0
资源推荐
资源详情
资源评论
收起资源包目录
100011159-基于Java+MySQL实现(Web)网上书城项目.zip (99个子文件)
bookstore
LICENSE 1KB
books
bookStore
book4.gif 182KB
book2.png 659KB
book1.png 709KB
book3.png 822KB
book4.png 828KB
image
img15.png 704KB
img09.png 691KB
img06.png 29KB
img01.png 6KB
img03.png 9KB
img12.png 667KB
img08.png 693KB
img10.png 69KB
img14.png 703KB
img13.png 286KB
img05.png 5KB
phone02.jpg 78KB
phone03.jpg 94KB
img11.png 77KB
phone01.jpg 95KB
img07.png 10KB
img04.png 5KB
phone01.png 194KB
img02.png 7KB
src
com
servlet
SearchServlet.java 3KB
AddOrderServlet.java 3KB
RegisterServlet.java 3KB
ShowOrderServlet.java 1KB
CartServlet.java 5KB
ModifyCartServlet.java 3KB
LoginServlet.java 2KB
dao
UserDao.java 396B
BookDao.java 525B
ItemDao.java 236B
impl
UserDaoImpl.java 709B
ItemDaoImpl.java 984B
BookDaoImpl.java 1KB
OrderDaoImpl.java 1KB
BaseDao.java 4KB
OrderDao.java 479B
biz
UserBiz.java 513B
impl
ItemBizImpl.java 481B
OrderBizImpl.java 1KB
UserBizImpl.java 1KB
BookBizImpl.java 1KB
BookBiz.java 1KB
OrderBiz.java 817B
ItemBiz.java 326B
entity
UserInfo.java 495B
Book.java 1KB
Order.java 919B
Item.java 2KB
WebContent
orderlist.jsp 2KB
shopping.jsp 6KB
WEB-INF
lib
mysql-connector-java-5.1.8-bin.jar 707KB
jstl.jar 20KB
standard.jar 384KB
web.xml 3KB
index.jsp 385B
image
step_arrow.gif 260B
success_ico.gif 7KB
logo.gif 3KB
bg01.jpg 1.12MB
button_shop.gif 3KB
book
book_02.gif 7KB
book_01.gif 6KB
book_09.gif 7KB
book_10.gif 7KB
book_05.gif 7KB
book_04.gif 7KB
book_06.gif 6KB
book_07.gif 5KB
book_03.gif 7KB
book_08.gif 7KB
button_chart.png 3KB
step_arrow_past.gif 605B
button_login.gif 2KB
button_search.gif 644B
button_reg.gif 3KB
button_login副本.gif 2KB
button_gray_bg.gif 722B
button_register.gif 2KB
logo_ps03.png 36KB
login_lock.gif 1KB
logo01.jpg 10KB
js
valiadate.js 7KB
css
style.css 6KB
main_head.jsp 1KB
register.jsp 2KB
logout.jsp 321B
main.jsp 5KB
shopping_success.jsp 953B
register_success.jsp 1KB
META-INF
MANIFEST.MF 36B
login.jsp 1KB
.gitignore 340B
bookstore.sql 3KB
README.md 17KB
共 99 条
- 1
资源评论
神仙别闹
- 粉丝: 2671
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功