最简单的小型商城实现:Serlvet+Jsp经典案例

2023-10-19 05:08

本文主要是介绍最简单的小型商城实现:Serlvet+Jsp经典案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[-]

  1. 前台client有关的页面
    1. headerjsp
    2. listOrderjsp
    3. loginjsp
    4. orderMsgjsp
    5. registjsp
    6. showChartjsp
    7. welcomejsp
  2. 前台manager相关页面
    1. headerjsp
    2. listBookjsp
    3. listCategoryjsp
    4. addBookjsp
    5. addCategoryjsp
    6. showOrdersjsp
    7. orderMsgjsp
    8. welcomejsp
  3. 后台代码
    1. 客户servletClientServlet
    2. 解决管理员基本功能的servletManageServlet

1. 前台client有关的页面

【header.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions"  prefix="fn"%>  
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  6. <html>  
  7.   <head>    
  8.     <link href="${pageContext.request.contextPath}/css/css.css" rel="stylesheet" type="text/css" />    
  9.     <title>首页</title>     
  10.   </head>  
  11.     
  12. <body style="text-align:center">  
  13. <br />  
  14.     <a href="${pageContext.request.contextPath}">首页</a>  
  15.     <span style="width:800px"></span>  
  16.     <c:if test="${empty user}"><!-- 也可以是:${sessionScope.user==null} -->  
  17.         <a href="${pageContext.request.contextPath}/client/login.jsp">登录</a>  
  18.         <a href="${pageContext.request.contextPath}/client/regist.jsp">注册</a>  
  19.     </c:if>  
  20.     <c:if test="${!empty user}">  
  21.         欢迎您:${user.username}  <!-- ${sessionScope.user.username} -->  
  22.         <a href="${pageContext.request.contextPath}/clientServlet?operation=logout">注销</a>  
  23.     </c:if>  
  24.     <a href="${pageContext.request.contextPath}/clientServlet?operation=showUsersOrders">我的订单</a>    
  25.     <a href="${pageContext.request.contextPath}/client/showCart.jsp">我的购物车</a>  
  26. <br />  
  27. <script language="javascript">  
  28.     function qiehuan(num){  
  29.         for(var id = 0;id<=9;id++)  
  30.         {  
  31.             if(id==num)  
  32.             {  
  33.                 document.getElementById("qh_con"+id).style.display="block";  
  34.                 document.getElementById("mynav"+id).className="nav_on";  
  35.             }  
  36.             else  
  37.             {  
  38.                 document.getElementById("qh_con"+id).style.display="none";  
  39.                 document.getElementById("mynav"+id).className="";  
  40.             }  
  41.         }  
  42.     }  
  43. </script>  
  44. <div id=menu_out>  
  45.   <div id=menu_in>  
  46.     <div id=menu>  
  47.       <UL id=nav>  
  48.         <LI><A class=nav_on id=mynav0 onmouseover=javascript:qiehuan(0) href="#"><SPAN>所有分类</SPAN></A></LI>  
  49.         <LI class="menu_line"></LI>  
  50.     </UL>  
  51.       <div id=menu_con>  
  52.         <div id=qh_con0 style="DISPLAY: block">  
  53.           <UL>  
  54.           <c:forEach items="${sessionScope.cs}" var="c">  
  55.                 <LI><A href="${pageContext.request.contextPath}/clientServlet?operation=showCategoryBook&categoryId=${c.id}"><SPAN>${c.name }</SPAN></A></LI>  
  56.                 <LI class=menu_line2></LI>  
  57.             </c:forEach>  
  58.             </UL>  
  59.          </div>  
  60.       </div>  
  61.     </div>  
  62.   </div>  
  63.   </div>  

【listOrder.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4.     <h1>您近期的订单如下:</h1>  
  5.         <table border="1" width="88%" style="text-align:center" align="center">  
  6.             <tr>  
  7.                 <th>订单号</th>  
  8.                 <th>金额</th>  
  9.                 <th>订单状态</th>  
  10.                 <th>明细</th>  
  11.               
  12.             </tr>  
  13.             <c:forEach items="${ os}" var="o">  
  14.                 <tr>  
  15.                     <td>${o.ordernum}</td>  
  16.                     <td>¥${o.price }元</td>  
  17.                     <td>${o.state==0?'未发货':'已发货'}</td>  
  18.                     <td>  
  19.                         <a href="${pageContext.request.contextPath}/clientServlet?operation=showOrdersDetail&ordersId=${o.id}">订单详情</a>  
  20.                     </td>  
  21.                 </tr>  
  22.             </c:forEach>  
  23.         </table>  
  24.   </body>  
  25. </html>  


【login.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4.     <h1>用户登录</h1>     
  5.     <form action="${pageContext.request.contextPath}/clientServlet?operation=login" method="post">   
  6.         <table border="1" width="88%" style="text-align:center" align="center">  
  7.             <tr>  
  8.                 <td>用户名</td>  
  9.                 <td>  
  10.                     <input type="text" name="username"/>  
  11.                 </td>  
  12.             </tr>  
  13.             <tr>  
  14.                 <td>密码</td>  
  15.                 <td>  
  16.                     <input type="password" name="password"/>  
  17.                 </td>  
  18.             </tr>  
  19.             <tr>  
  20.                 <td colspan="2">  
  21.                     <input type="submit" value="登录"/>  
  22.                 </td>  
  23.             </tr>  
  24.               
  25.         </table>  
  26.     </form>  
  27.   </body>  
  28. </html>  


【orderMsg.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4.     订单号:${o.ordernum}  </br>金额:¥${o.price }元</br>  
  5.     明细如下:</br>  
  6.         <table border="1" width="88%" style="text-align:center" align="center">  
  7.             <tr>  
  8.                 <th>书名</th>  
  9.                 <th>作者</th>  
  10.                 <th>单价</th>  
  11.                 <th>小计</th>  
  12.                 <th>数量</th>  
  13.             </tr>  
  14.             <c:forEach items="${o.items }" var="i">  
  15.                 <tr>  
  16.                     <td>${i.book.name}</td>  
  17.                     <td>${i.book.author}</td>  
  18.                     <td>¥${i.book.price}元</td>  
  19.                     <td>${i.num}</td>  
  20.                     <td>¥${i.price}元</td>  
  21.                 </tr>  
  22.             </c:forEach>  
  23.         </table>  
  24.     收货信息如下:</br>  
  25.         地址:${sessionScope.user.address}</br>        
  26.         电话:${sessionScope.user.cellphone}</br>  
  27.   </body>  
  28. </html>  

【regist.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4.     <h1>新用户注册</h1>    
  5.     <form action="${pageContext.request.contextPath}/clientServlet?operation=regist" method="post">   
  6.         <table border="1" width="88%" style="text-align:center" align="center">  
  7.             <tr>  
  8.                 <td>用户名</td>  
  9.                 <td>  
  10.                     <input type="text" name="username" />  
  11.                 </td>  
  12.             </tr>  
  13.             <tr>  
  14.                 <td>密码</td>  
  15.                 <td>  
  16.                     <input type="password" name="password" />  
  17.                 </td>  
  18.             </tr>  
  19.             <tr>  
  20.                 <td>确认密码</td>  
  21.                 <td>  
  22.                     <input type="password" name="password1" />  
  23.                 </td>  
  24.             </tr>  
  25.             <tr>  
  26.                 <td>电话</td>  
  27.                 <td>  
  28.                     <input type="text" name="cellphone" />  
  29.                 </td>  
  30.             </tr>  
  31.             <tr>  
  32.                 <td>手机</td>  
  33.                 <td>  
  34.                     <input type="text" name="mobilephone" />  
  35.                 </td>  
  36.             </tr>  
  37.             <tr>  
  38.                 <td>住址</td>  
  39.                 <td>  
  40.                     <input type="text" name="address" />  
  41.                 </td>  
  42.             </tr>  
  43.             <tr>  
  44.                 <td>邮箱</td>  
  45.                 <td>  
  46.                     <input type="text" name="email" />  
  47.                 </td>  
  48.             </tr>  
  49.             <tr>  
  50.                 <td colspan="2">  
  51.                     <input type="submit" value="注册" />  
  52.                 </td>  
  53.             </tr>  
  54.         </table>    
  55.     </form>  
  56.   </body>  
  57. </html>  


【showChart.jsp】


[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4.     <h1>您购买的商品如下</h1>  
  5.     <c:if test="${empty sessionScope.cart.items}">  
  6.         <img height="180" width="120" src="${pageContext.request.contextPath }/files/0.jpg"/><br/>对不起,您没有购买任何商品  
  7.     </c:if>  
  8.     <c:if test="${!empty sessionScope.cart.items}">  
  9.         <table border="1" width="88%" style="text-align:center" align="center">  
  10.             <tr>  
  11.                 <th>书名</th>  
  12.                 <th>作者</th>  
  13.                 <th>单价</th>  
  14.                 <th>数量</th>  
  15.                 <th>小计</th>  
  16.                 <th>操作</th>  
  17.             </tr>  
  18.             <c:forEach items="${ sessionScope.cart.items}" var="me">  
  19.                 <tr>  
  20.                     <td>${me.value.book.name}</td>  
  21.                     <td>${me.value.book.author }</td>  
  22.                     <td>${me.value.book.price }</td>  
  23.                     <td>${me.value.num }</td>  
  24.                     <td>${me.value.price}</td>  
  25.                     <td>  
  26.                         <a href="#" >删除</a>  
  27.                     </td>  
  28.                 </tr>  
  29.             </c:forEach>  
  30.             <tr>  
  31.                 <td colspan="6" align="right">  
  32.                     总数量:${sessionScope.cart.num}    
  33.                     付款金额:${sessionScope.cart.price}    
  34.                     <a href="${pageContext.request.contextPath }/clientServlet?operation=genOrders">生成订单</a>  
  35.                 </td>  
  36.             </tr>  
  37.         </table>  
  38.     </c:if>  
  39.   </body>  
  40. </html>  

【welcome.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4. <h1>欢迎光临</h1>  
  5.     <!-- 显示分页数据,不分类的 -->  
  6.     <table align="center">  
  7.         <tr >  
  8.             <c:forEach items="${page.records}" var="b">  
  9.                 <td>  
  10.                     <table>  
  11.                         <tr>  
  12.                             <td>  
  13.                                 <img src="${pageContext.request.contextPath}/files/${b.image}"/>  
  14.                             </td>  
  15.                         </tr>  
  16.                         <tr>  
  17.                             <td>  
  18.                                 书名:${b.name }<br />  
  19.                                 作者:${b.author }<br />  
  20.                                 原价:<strike>888</strike><br/>  
  21.                                 震撼价:${b.price}  
  22.                             </td>  
  23.                         </tr>  
  24.                         <tr>  
  25.                             <td>  
  26.                                 <a href="${pageContext.request.contextPath}/clientServlet?operation=buyBook&bookId=${b.id}">购买</a>  
  27.                             </td>  
  28.                         </tr>  
  29.                     </table>  
  30.                 </td>  
  31.             </c:forEach>  
  32.         </tr>  
  33.     </table>  
  34.               
  35.         <tr align="center">  
  36.             <td>  
  37.                 <%@ include file="/commons/page.jsp" %>  
  38.             </td>  
  39.         </tr>  
  40.       
  41.   </body>  
  42. </html>  

2. 前台manager相关页面

【header.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>  
  4. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  
  5. <%@ taglib uri="http://hw.com/jsp/jstl/myfunctions" prefix="myfn" %>  
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8.     <link href="${pageContext.request.contextPath}/css/css.css" rel="stylesheet" type="text/css" />  
  9.   <head>    
  10.     <title>首页</title>     
  11.   </head>  
  12.     
  13.   <body style="text-align:center">  
  14.     
  15.   <br />  
  16. <br />  
  17. <script language="javascript">  
  18.     function qiehuan(num){  
  19.         for(var id = 0;id<=9;id++)  
  20.         {  
  21.             if(id==num)  
  22.             {  
  23.                 document.getElementById("qh_con"+id).style.display="block";  
  24.                 document.getElementById("mynav"+id).className="nav_on";  
  25.             }  
  26.             else  
  27.             {  
  28.                 document.getElementById("qh_con"+id).style.display="none";  
  29.                 document.getElementById("mynav"+id).className="";  
  30.             }  
  31.         }  
  32.     }  
  33. </script>  
  34. <div id=menu_out>  
  35.   <div id=menu_in>  
  36.     <div id=menu>  
  37.       <UL id=nav>  
  38.         <LI><A class=nav_on id=mynav0 onmouseover=javascript:qiehuan(0) href="#"><SPAN>分类管理</SPAN></A></LI>  
  39.         <LI class="menu_line"></LI>  
  40.         <li><a href="#" onmouseover="javascript:qiehuan(1)" id="mynav1" class="nav_off"><span>图书管理</span></a></li>  
  41.         <li class="menu_line"></li>  
  42.         <li><a href="#" onmouseover="javascript:qiehuan( 2)" id="mynav2" class="nav_off"><span>订单管理</span></a></li>  
  43.         <li class="menu_line"></li>  
  44.           
  45.           
  46.       </UL>  
  47.       <div id=menu_con>  
  48.         <div id=qh_con0 style="DISPLAY: block">  
  49.           <UL>  
  50.             <LI><a href="${pageContext.request.contextPath}/manage/addCategory.jsp"><span>添加分类</span></A></LI>  
  51.             <LI class=menu_line2></LI>  
  52.             <LI><A href="${pageContext.request.contextPath}/manageServlet?operation=listCategory"><SPAN>查询分类</SPAN></A></LI>  
  53.             <LI class=menu_line2></LI>  
  54.              
  55.           </UL>  
  56.         </div>  
  57.         <div id=qh_con1 style="DISPLAY: none">  
  58.           <UL>  
  59.             <LI><a href="${pageContext.request.contextPath}/manageServlet?operation=showCategoryUI"><span>添加图书</span></A></LI>  
  60.             <LI class=menu_line2></LI>  
  61.             <LI><A href="${pageContext.request.contextPath}/manageServlet?operation=showAllBook"><SPAN>查询图书</SPAN></A></LI>  
  62.             <LI class=menu_line2></LI>  
  63.              
  64.           </UL>  
  65.         </div>  
  66.         <div id=qh_con2 style="DISPLAY: none">  
  67.           <UL>  
  68.             <LI><a href="${pageContext.request.contextPath}/manageServlet?operation=showAllOrders0"><span>待处理订单</span></A></LI>  
  69.             <LI class=menu_line2></LI>  
  70.             <LI><A href="${pageContext.request.contextPath}/manageServlet?operation=showAllOrders1"><SPAN>已处理订单</SPAN></A></LI>  
  71.             <LI class=menu_line2></LI>  
  72.           </UL>  
  73.         </div>    
  74.       </div>  
  75.     </div>  
  76.   </div>  
  77. </div>  


【listBook.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/manage/header.jsp" %>  
  4. <h3>书籍列表</h3>  
  5.     <table border="1" width="88%" align="center" style="text-align:center">  
  6.         <tr>  
  7.             <th>书名</th>  
  8.             <th>作者</th>  
  9.             <th>描述</th>  
  10.             <th>所属分类</th>  
  11.             <th>图片</th>  
  12.             <th>操作</th>  
  13.         </tr>  
  14.         <c:forEach items="${page.records}" var="b">  
  15.             <tr>  
  16.                 <td>${ b.name}</td>  
  17.                 <td>${b.author }</td>  
  18.                 <td>${b.description }</td>  
  19.                 <td>${myfn:getCategoryNameByIdEL(b.category_id)}</td>  
  20.                 <td>  
  21.                     <a href="${pageContext.request.contextPath}/files/${b.image}">查看图片</a>  
  22.                 </td>  
  23.                 <td>  
  24.                     <a href="#" >[修改]</a>    
  25.                     <a href="#" >[删除]</a>  
  26.                 </td>  
  27.             </tr>  
  28.         </c:forEach>  
  29.     </table>  
  30.     <!-- 视频内容简单分页内容开始 -->  
  31.     <!--    
  32.     第${page.pagenum}页/共${page.totalpage}页    
  33.     <a href="${pageContext.request.contextPath}/manageServlet?operation=showAllBook&pagenum=  
  34.         ${page.pagenum-1>0?pagenum-1:1}">上一页</a>  
  35.     <a href="${pageContext.request.contextPath}/manageServlet?operation=showAllBook&pagenum=  
  36.         ${page.pagenum+1>page.totalpage?page.totalpage:(page.pagenum+1)}">下一页</a>  
  37.         -->  
  38.     <%@ include file="/commons/page.jsp" %>  
  39.           
  40.     <!-- 视频内容简单分页内容结束 -->  
  41.   </body>  
  42. </html>  


【listCategory.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/manage/header.jsp" %>  
  4.     <h2>分类列表</h2>  
  5.     <c:if test="${empty cs}">  
  6.         对不起,没有分类,请先添加  
  7.     </c:if>  
  8.     <c:if test="${!empty cs}">  
  9.     <table border="1" width="88%" style="text-align:center" align="center">  
  10.         <tr>  
  11.             <th>选择</th>  
  12.             <th>分类名称</th>  
  13.             <th>描述</th>  
  14.             <th>操作</th>  
  15.         </tr>  
  16.         <c:forEach items="${cs}" var="c">  
  17.             <tr>  
  18.                 <td>  
  19.                     <input type="checkbox" name="cids" value="${c.id }"/>  
  20.                 </td>  
  21.                 <td>${c.name }</td>  
  22.                 <td>${c.description }</td>  
  23.                 <td>  
  24.                     <a href="#" >更改</a>  
  25.                     <a href="#" >删除</a>  
  26.                 </td>  
  27.             <tr>  
  28.         </c:forEach>  
  29.     </table>  
  30.     </c:if>  
  31.   </body>  
  32. </html>  


【addBook.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/manage/header.jsp" %>  
  4.     <h2 align="center">添加图书</h2>  
  5.     <form action="${pageContext.request.contextPath}/manageServlet?operation=addBook" method="post" enctype="multipart/form-data" >  
  6.         <table border="0" width="88%" align="center">  
  7.             <tr>  
  8.                 <td>书名</td>  
  9.                 <td>  
  10.                     <input type="text" name="name"/>  
  11.                 </td>  
  12.             </tr>  
  13.             <tr>  
  14.                 <td>作者</td>  
  15.                 <td>  
  16.                     <input type="text" name="author"/>  
  17.                 </td>  
  18.             </tr>  
  19.             <tr>  
  20.                 <td>售价</td>  
  21.                 <td>  
  22.                     <input type="text" name="price"/>  
  23.                 </td>  
  24.             </tr>  
  25.             <tr>  
  26.                 <td>图片</td>  
  27.                 <td>  
  28.                     <input type="file" name="img"/> <!-- ★和javabean的名字不一样 -->  
  29.                 </td>  
  30.             </tr>  
  31.             <tr>  
  32.                 <td>描述</td>  
  33.                 <td>  
  34.                     <textarea rows="3" cols="38" name="description"></textarea>  
  35.                 </td>  
  36.             </tr>  
  37.             <tr>  
  38.                 <td>所属分类</td>  
  39.                 <td>  
  40.                     <select name="category_id">  
  41.                         <c:forEach items="${cs}" var="c">  
  42.                             <option value="${c.id}">${c.name}</option>   
  43.                         </c:forEach>  
  44.                     </select>  
  45.                 </td>  
  46.             </tr>  
  47.             <tr>  
  48.                 <td>  
  49.                     <input type="submit" value="添加图书"></td>  
  50.             </tr>  
  51.         </table>  
  52.     </form>  
  53.     ${message}  
  54.   </body>  
  55. </html>  


【addCategory.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/manage/header.jsp" %>  
  4.     <form action="${pageContext.request.contextPath}/manageServlet?operation=addCategory" method="post">    
  5.         <table align="center"  border="1" width="88%" >  
  6.             <tr>  
  7.                 <td>*分类名称</td>  
  8.                 <td>  
  9.                     <input type="text" name="name"/>  
  10.                 </td>  
  11.             </tr>  
  12.             <tr>  
  13.                 <td>概述</td>  
  14.                 <td>  
  15.                     <textarea rows="3" cols="34" name="description"></textarea>  
  16.                 </td>  
  17.             </tr>  
  18.             <tr>  
  19.                 <td colspan="2">  
  20.                     <input type="submit" value="添加"/>  
  21.                 </td>  
  22.             </tr>  
  23.           
  24.         </table>  
  25.     </form>  
  26.   </body>  
  27. </html>  

【showOrders.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/client/header.jsp" %>  
  4.     <h1>未发货订单如下:</h1>  
  5.         <table border="1" width="88%" style="text-align:center" align="center">  
  6.             <tr>  
  7.                 <th>用户</th>  
  8.                 <th>订单号</th>  
  9.                 <th>金额</th>  
  10.                 <th>订单状态</th>  
  11.                 <th>明细</th>  
  12.               
  13.             </tr>  
  14.             <c:forEach items="${ os}" var="o">  
  15.                 <tr>  
  16.                     <td>${o.user.username}  
  17.                     <td>${o.ordernum}</td>  
  18.                     <td>¥${o.price }元</td>  
  19.                     <td>${o.state==0?'未发货':'已发货'}</td>  
  20.                     <td>  
  21.                         <a href="${pageContext.request.contextPath}/manageServlet?operation=showOrdersDetail&ordersId=${o.id}">订单详情</a>  
  22.                     </td>  
  23.                 </tr>  
  24.             </c:forEach>  
  25.         </table>  
  26.   </body>  
  27. </html>  

【orderMsg.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/manage/header.jsp" %>  
  4.     订单号:${o.ordernum}  </br>金额:¥${o.price }元</br>  
  5.     明细如下:</br>  
  6.         <table border="1" width="88%" style="text-align:center" align="center">  
  7.             <tr>  
  8.                 <th>书名</th>  
  9.                 <th>作者</th>  
  10.                 <th>单价</th>  
  11.                 <th>小计</th>  
  12.                 <th>数量</th>  
  13.             </tr>  
  14.             <c:forEach items="${o.items }" var="i">  
  15.                 <tr>  
  16.                     <td>${i.book.name}</td>  
  17.                     <td>${i.book.author}</td>  
  18.                     <td>¥${i.book.price}元</td>  
  19.                     <td>${i.num}</td>  
  20.                     <td>¥${i.price}元</td>  
  21.                 </tr>  
  22.             </c:forEach>  
  23.         </table>  
  24.     收货信息如下:</br>  
  25.         地址:${o.user.address}</br>           
  26.         电话:${o.user.cellphone}</br>  
  27.         </hr>  
  28.         <c:if test="${o.state==0 }">  
  29.         <a href="${pageContext.request.contextPath}/manageServlet?operation=sureSend&ordersId=${o.id}">确认发货</a>  
  30.     </c:if>  
  31.   </body>  
  32. </html>  

【welcome.jsp】

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  
  2.       contentType="text/html;charset=UTF-8"%>  
  3. <%@ include file="/manage/header.jsp" %>  
  4.     <h1 align="center">欢迎使用</h1>  
  5.   </body>  
  6. </html>  

3. 后台代码

后台代码管理员和客户两种基本角色各自一个Servlet解决:

客户servlet:ClientServlet

[java]  view plain copy
  1. public class ClientServlet extends HttpServlet {  
  2.     private BusinessService bs = new BusinessServiceImpl();  
  3.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  4.             throws ServletException, IOException {  
  5.         String operation = request.getParameter("operation");  
  6.         if("showIndexCategory".equals(operation)){  
  7.             showIndexCategory(request,response);  
  8.         }  
  9.         if("showCategoryBook".equals(operation)){  
  10.             showCategoryBook(request,response);  
  11.         }  
  12.         if("buyBook".equals(operation)){  
  13.             buyBook(request,response);  
  14.         }  
  15.         if("genOrders".equals(operation)){  
  16.             genOrders(request,response);  
  17.         }  
  18.         if("regist".equals(operation)){  
  19.             regist(request,response);  
  20.         }  
  21.         if("login".equals(operation)){  
  22.             login(request,response);  
  23.         }  
  24.         if("logout".equals(operation)){  
  25.             logout(request,response);  
  26.         }  
  27.         if("showUsersOrders".equals(operation)){  
  28.             showUsersOrders(request,response);  
  29.         }  
  30.         if("showOrdersDetail".equals(operation)){  
  31.             showOrdersDetail(request,response);  
  32.         }  
  33.     }  
  34.     private void showOrdersDetail(HttpServletRequest request,  
  35.             HttpServletResponse response) throws ServletException, IOException {  
  36.         //1.判断用户是否登录。1.1没有登录,转向登录页面  
  37.         HttpSession session = request.getSession();  
  38.         User user = (User)session.getAttribute("user");  
  39.         if(user==null){  
  40.             request.setAttribute("message""请先登录!2秒后将自动转向登录页面。<meta http-equiv='Refresh' content='2;" +  
  41.                     "URL="+request.getContextPath()+"/client/login.jsp'/>");  
  42.             request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  43.             return ;  
  44.         }  
  45.         String ordersId=request.getParameter("ordersId");  
  46.         Orders o = bs.findOrdersById(ordersId);//★★查询的是订单明细,与通过用户id查订单是不同的,明细中还要查出书的信息  
  47.         request.setAttribute("o", o);  
  48.         request.getRequestDispatcher("/client/ordersMsg.jsp").forward(request, response);  
  49.     }  
  50.     //依据用户id查询用户订单  
  51.     private void showUsersOrders(HttpServletRequest request,  
  52.             HttpServletResponse response) throws ServletException, IOException {  
  53.         //1.判断用户是否登录。1.1没有登录,转向登录页面  
  54.         HttpSession session = request.getSession();  
  55.         User user = (User)session.getAttribute("user");  
  56.         if(user==null){  
  57.             request.setAttribute("message""请先登录!2秒后将自动转向登录页面。<meta http-equiv='Refresh' content='2;" +  
  58.                     "URL="+request.getContextPath()+"/client/login.jsp'/>");  
  59.             request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  60.             return ;  
  61.         }  
  62.         List<Orders> os = bs.findOrdersByUserId(user.getId());  
  63.         request.getSession().setAttribute("os", os);  
  64.         request.getRequestDispatcher("client/listOrders.jsp").forward(request,response);//转向主页  
  65.     }  
  66.     private void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  67.         request.getSession().invalidate();  
  68.         //注意:注销时是直接到根目录下  
  69.         request.getRequestDispatcher("/").forward(request, response);  
  70.     }  
  71.     private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  72.         String username = request.getParameter("username");  
  73.         String password = request.getParameter("password");  
  74.         User user = bs.login(username,password);  
  75.         if(user==null){  
  76.             request.setAttribute("message""用户名或密码错误!");  
  77.             request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  78.         }else{  
  79.             request.getSession().setAttribute("user", user);  
  80.             response.sendRedirect(request.getContextPath());//转向主页  
  81.         }  
  82.     }  
  83.     private void regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  84.         User user = WebUtil.fillBean(request, User.class);  
  85.         if(!(user.getPassword()).equals(user.getPassword1())){//这里是比较  
  86.             request.setAttribute("message""两次密码输入不匹配");  
  87.             request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  88.         }  
  89.         bs.regist(user);  
  90.         request.setAttribute("message""注册成功");  
  91.         request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  92.     }  
  93.     //生成订单,把订单和订单项的信息存到数据库中  
  94.     private void genOrders(HttpServletRequest request,  
  95.             HttpServletResponse response) throws ServletException, IOException {  
  96.         //1.判断用户是否登录。1.1没有登录,转向登录页面  
  97.         HttpSession session = request.getSession();  
  98.         User user = (User)session.getAttribute("user");  
  99.         if(user==null){  
  100.             request.setAttribute("message""请先登录!2秒后将自动转向登录页面。<meta http-equiv='Refresh' content='2;" +  
  101.                     "URL="+request.getContextPath()+"/client/login.jsp'/>");  
  102.             request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  103.             return ;  
  104.         }  
  105.         //2.如果已经登录,则将购物车里面的东西按规则生成订单信息  
  106.         //取出购物车:Cart Map<String,CartItem>   
  107.         Cart cart  = (Cart)session.getAttribute("cart");//购物车<->订单  
  108.         Orders orders = new Orders();  
  109.         orders.setNum(cart.getNum());  
  110.         orders.setPrice(cart.getPrice());  
  111.         //★▲弄购物项  
  112.         List<OrdersItem> ordersItems = new ArrayList<OrdersItem>();//订单项<->订单项  
  113.         for(Map.Entry<String, CartItem> item:cart.getItems().entrySet()){//★▲▲填充模型  
  114.             CartItem i = item.getValue();//得到购物项  
  115.             OrdersItem orderItem = new OrdersItem();  
  116.             orderItem.setNum(i.getNum());  
  117.             orderItem.setPrice(i.getPrice());  
  118.             orderItem.setBook(i.getBook());  
  119.             ordersItems.add(orderItem);  
  120.         }  
  121.         orders.setItems(ordersItems);  
  122.         bs.addOrders(orders,user);  
  123.         //删除购物车  
  124.         request.getSession().removeAttribute("cart");  
  125.         request.setAttribute("message","订单生成成功!购物车为空");  
  126.         request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  127.     }  
  128.   
  129.     private void buyBook(HttpServletRequest request,  
  130.             HttpServletResponse response) throws ServletException, IOException {  
  131.         //购买书的id  
  132.         String bookId = request.getParameter("bookId");  
  133.         //获取要购买的书  
  134.         Book book = bs.findBookById(bookId);  
  135.         HttpSession session = request.getSession();  
  136.         //★▲从HttpSession中取出购物车  
  137.         Cart cart = (Cart)session.getAttribute("cart");  
  138.         //>创建购物车(判断是否有购物车)并放到httpsession中(购物车)  
  139.         if(cart==null){  
  140.             cart = new Cart();  
  141.             session.setAttribute("cart",cart);  
  142.         }  
  143.         //把书放到购物车中  
  144.         cart.addBook(book);  
  145.         //提示购买成功  
  146.         request.setAttribute("message""购买成功,2秒后返回主页面。<meta http-equiv='Refresh' content='2;" +  
  147.                     "URL="+request.getContextPath());  
  148.         //页面转发  
  149.         request.getRequestDispatcher("/client/message.jsp").forward(request, response);  
  150.     }  
  151.     //按照分类进行分页书籍查询  
  152.     private void showCategoryBook(HttpServletRequest request,  
  153.             HttpServletResponse response) throws ServletException, IOException {  
  154.         String pagenum = request.getParameter("pagenum");  
  155.         String categoryId = request.getParameter("categoryId");//★1.相对于下面那个方法再添加的  
  156.         Page page = bs.findPageRecords(pagenum,categoryId);//★2.相对于下面那个方法再添加的  
  157.         page.setUrl("/clientServlet?operation=showCategoryBook&categoryId="+categoryId);//★3.相对于下面那个方法再添加的  
  158.         request.setAttribute("page", page);  
  159.         request.getRequestDispatcher("/client/welcome.jsp").forward(request,response);  
  160.     }  
  161.     //查询所有分类,封装后,便于前端主页的显示  
  162.     private void showIndexCategory(HttpServletRequest request,  
  163.             HttpServletResponse response) throws ServletException, IOException {  
  164.         List<Category> cs = bs.findAllCategory();  
  165.         request.getSession().setAttribute("cs", cs);//★★用session放大范围以保持header.jsp部分的数据维护  
  166.         //查询所有书籍,还要分页  
  167.         String pagenum = request.getParameter("pagenum");  
  168.         Page page = bs.findPageRecords(pagenum);  
  169.         page.setUrl("/clientServlet?operation=showIndexCategory");  
  170.         request.setAttribute("page", page);  
  171.         request.getRequestDispatcher("/client/welcome.jsp").forward(request,response);  
  172.     }  
  173.   
  174.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  175.             throws ServletException, IOException {  
  176.         request.setCharacterEncoding("UTF-8");  
  177.         response.setContentType("text/html;charset=UTF-8");  
  178.         this.doGet(request, response);  
  179.     }  
  180. }  
  181. </span>  

  • 解决管理员基本功能的servlet:ManageServlet

[java]  view plain copy
  1. public class ManageServlet extends HttpServlet {  
  2.     private BusinessService  bs = new BusinessServiceImpl();  
  3.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  4.             throws ServletException, IOException {  
  5.         String operation = request.getParameter("operation");  
  6.         if("addCategory".equals(operation))  
  7.             addCategory(request,response);  
  8.         if("listCategory".equals(operation))  
  9.             listCategory(request,response);  
  10.         if("showCategoryUI".equals(operation))  
  11.             showCategoryUI(request,response);  
  12.         if("addBook".equals(operation))  
  13.             addBook(request,response);  
  14.         if("showAllBook".equals(operation))  
  15.             showAllBook(request,response);  
  16.         if("showAllOrders0".equals(operation)){  
  17.             showAllOrders0(request,response);  
  18.         }  
  19.         if("showAllOrders1".equals(operation)){  
  20.             showAllOrders1(request,response);  
  21.         }  
  22.         if("showOrdersDetail".equals(operation)){  
  23.             showOrdersDetail(request,response);  
  24.         }  
  25.         if("sureSend".equals(operation)){  
  26.             sureSend(request,response);  
  27.         }  
  28.     }  
  29.     private void sureSend(HttpServletRequest request,  
  30.             HttpServletResponse response) throws ServletException, IOException {  
  31.         String ordersId = request.getParameter("ordersId");  
  32.         bs.sureOrders(ordersId);  
  33.         request.setAttribute("message","成功发货");  
  34.         request.getRequestDispatcher("/message.jsp").forward(request, response);  
  35.     }  
  36.     private void showOrdersDetail(HttpServletRequest request,  
  37.             HttpServletResponse response) throws ServletException, IOException {  
  38.         //哪个用户的也要查询出来  
  39.         String ordersId = request.getParameter("ordersId");  
  40.         Orders o = bs.findOrdersById(ordersId);  
  41.         request.setAttribute("o", o);  
  42.         request.getRequestDispatcher("/manage/ordersMsg.jsp").forward(request, response);  
  43.     }  
  44.     private void showAllOrders1(HttpServletRequest request,  
  45.             HttpServletResponse response) throws ServletException, IOException {  
  46.         List<Orders> os = bs.findOrdersByState(1);  
  47.         request.setAttribute("os", os);  
  48.         request.getRequestDispatcher("/manage/showOrders.jsp").forward(request, response);  
  49.     }  
  50.     //显示所有为发货的订单  
  51.     private void showAllOrders0(HttpServletRequest request,  
  52.             HttpServletResponse response) throws ServletException, IOException {  
  53.         List<Orders> os = bs.findOrdersByState(0);  
  54.         request.setAttribute("os", os);  
  55.         request.getRequestDispatcher("/manage/showOrders.jsp").forward(request, response);  
  56.     }  
  57.     //后台查询所有图书分页  
  58.     private void showAllBook(HttpServletRequest request,  
  59.             HttpServletResponse response) throws ServletException, IOException {  
  60.         String pagenum = request.getParameter("pagenum");  
  61.         Page page = bs.findPageRecords(pagenum);  
  62.         page.setUrl("manageServlet?operation=showAllBook");//第二种分页方式传递到jsp页面的数据  
  63.         request.setAttribute("page",page);  
  64.         request.getRequestDispatcher("/manage/listBook.jsp").forward(request, response);  
  65.     }  
  66.     //添加书籍到数据库:jsp页面传过来的是mutipart类型  
  67.     private void addBook(HttpServletRequest request,  
  68.             HttpServletResponse response) throws ServletException, IOException {  
  69.         String resultPath = "";  
  70.         String storePath = getServletContext().getRealPath("/files");  
  71.         try {  
  72.             Book book = new Book();  
  73.             DiskFileItemFactory factory = new DiskFileItemFactory();  
  74.             ServletFileUpload upload = new ServletFileUpload(factory);  
  75.             List<FileItem> items = upload.parseRequest(request);//获得待解析数据  
  76.             //解析数据  
  77.             for(FileItem item:items){  
  78.                 if(item.isFormField()){  
  79.                     //封装数据到javabean中  
  80.                     String filedName = item.getFieldName();//字段名,即javabean的属性名,除了图片  
  81.                     String filedValue = item.getString(request.getCharacterEncoding());//保证得到的字符串是UTF-8格式  
  82.                     BeanUtils.setProperty(book,filedName,filedValue);//到这一步,除了图片路径,其它数据都有了  
  83.                 }else{  
  84.                     //处理文件上传  
  85.                     InputStream in = item.getInputStream();  
  86.                     String fileName = item.getName();//用户上传文件路径名  
  87.                     //从用户上传的文件路径名中截取文件名。然后在加随机码,以防止用户上传的文件名相同发生冲突  
  88.                     fileName = UUID.randomUUID()+fileName.substring(fileName.lastIndexOf("\\")+1);  
  89.                     //设置存储的图片文件名  
  90.                     book.setImage(fileName);  
  91.                     OutputStream out = new FileOutputStream(storePath+"\\"+fileName);  
  92.                     byte b[] = new byte[1024];  
  93.                     int len = -1;  
  94.                     while((len=in.read(b))!=-1){  
  95.                         out.write(b,0,len);  
  96.                     }  
  97.                     out.close();  
  98.                     in.close();  
  99.                     item.delete();//★删除临时文件  
  100.                 }  
  101.             }  
  102.             //System.out.println(book);  
  103.             bs.addBook(book);//★★先测试,然后看方法对不对,在写service和dao层中写该方法    
  104.             List<Category> cs = bs.findAllCategory();  
  105.             request.setAttribute("cs", cs);//如果没有这两句,添加完成后添加页面将不会显示图书分类  
  106.             resultPath = "/manage/addBook.jsp";  
  107.             request.setAttribute("message","<script type='text/javascript'>alert('添加成功')</script>");  
  108.         } catch (Exception e) {  
  109.             e.printStackTrace();  
  110.             resultPath="/message.jsp";  
  111.             //TODO  
  112.             request.setAttribute("message""上传出问题了");  
  113.         }  
  114.         request.getRequestDispatcher(resultPath).forward(request, response);  
  115.     }  
  116.   
  117.     private void showCategoryUI(HttpServletRequest request,  
  118.             HttpServletResponse response) throws ServletException, IOException {  
  119.         List<Category> cs = bs.findAllCategory();  
  120.         request.setAttribute("cs", cs);  
  121.         request.getRequestDispatcher("/manage/addBook.jsp").forward(request, response);  
  122.     }  
  123.   
  124.     private void listCategory(HttpServletRequest request,  
  125.             HttpServletResponse response) throws ServletException, IOException {  
  126.         List<Category> cs = bs.findAllCategory();  
  127.         request.setAttribute("cs", cs);  
  128.         request.getRequestDispatcher("/manage/listCategory.jsp").forward(request, response);      
  129.     }  
  130.   
  131.     private void addCategory(HttpServletRequest request,  
  132.             HttpServletResponse response) throws ServletException, IOException {  
  133.         Category ca = WebUtil.fillBean(request, Category.class);  
  134.         bs.addCategory(ca);  
  135.         request.setAttribute("message""<script type='text/javascript'>alert('添加成功')</script>");  
  136.         request.getRequestDispatcher("/manage/addCategory.jsp").forward(request, response);       
  137.     }  
  138.   
  139.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  140.             throws ServletException, IOException {  
  141.         request.setCharacterEncoding("UTF-8");  
  142.         response.setContentType("text/html;charset=UTF-8");  
  143.         this.doGet(request, response);  
  144.   
  145.     }  
  146.   
  147. }  

这篇关于最简单的小型商城实现:Serlvet+Jsp经典案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/237504

相关文章

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert