圖書管理系統之用戶信息--用戶信息修改,查看訂單詳情等功能

1.功能效果展示



2.user.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>user</title>
		<!--引入bootstrap.css-->
		<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/bootstrap/css/bootstrap.css"/>
		<!--引入myscss.css-->
		<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/myscss.css" />
		<!--引入jquery.js-->
		<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/js/jquery-3.1.1.js"></script>
		<!--bootstrap.js-->
		<script type="text/javascript" src="<%=request.getContextPath()%>/bootstrap/js/bootstrap.js"></script>
		<!--user.js-->
		<script type="text/javascript" src="<%=request.getContextPath()%>/foreground/user/user.js"></script>
		<!--contextPath-->
		<script type="text/JavaScript">
			var contextPath = "${pageContext.request.contextPath}";
		</script>
	</head>
	<body>
		<!--公用頭部-->
		<!-- <div id="navhead"></div> -->
		<%@include file="/foreground/common/head.jsp"%>
		<!--主體部分-->
		<div class="container">
			<div class="row padding">
				<div class="col-md-3">
					<!--左側導航欄-->
					<h2 class="text-danger">我的賬戶</h2>
					<hr />
					<ul class="nav nav-pills nav-stacked" role="tablist">
					  	<li class="active"><a href="#head"  data-toggle="tab">用戶信息修改</a></li>
					  	<li><a href="#profile"  data-toggle="tab">訂單查詢</a></li>
					  	<li><a href="../login/login.jsp"  data-toggle="tab" onclick="layout()">用戶退出</a></li>
					</ul>
				</div>
				<div class="col-md-9">
					<div class="tab-content">
						<!--用戶基本信息-->
						<div class="tab-pane active margintop" id="head">
							<form class="form-horizontal thumbnail paddingtop">
								<div class="form-group">
									<input type="hidden" class="form-control" id="id" name="id" value="${user.id }"/>
								</div>
								<div class="form-group">
									<label class="col-md-4 control-label">會員郵箱</label>
									<div class="col-md-4">
										<p class="form-control-static">${user.email }</p>
									</div>
								</div>
								<div class="form-group">
									<label class="col-md-4 control-label">會員名</label>
									<div class="col-md-4">
										<p class="form-control-static">${user.name }</p>
									</div>
								</div>
								<div class="form-group">
							   		<label for="pass" class="col-md-4 control-label">密碼</label>
								    <div class="col-md-5">
								      <input type="password" class="form-control" id="pass" name="pass" placeholder="請輸入密碼">
								    </div>
							  	</div>
							  	<div class="form-group">
								    <label for="repass" class="col-md-4 control-label">重複密碼</label>
								    <div class="col-md-5">
								      <input type="password" class="form-control" id="repass" placeholder="請再次輸入密碼">
								    </div>
							  	</div>
							   	<div class="form-group">
							    	<label for="gender" class="col-md-4 control-label">性別</label>
							    	<div class="col-md-5">
								     	<label class="radio-inline">
									    	<input type="radio" name="gender" id="gender" value="male" 
									    	<c:choose>
									    		<c:when test="${user.gender == 'male' }"> checked="checked"</c:when>
									    	</c:choose>>
									    	男
										</label>
									 	<label class="radio-inline">
									    	<input type="radio" name="gender" id="gender" value="female"
									    	<c:choose>
									    		<c:when test="${user.gender == 'female' }"> checked="checked"</c:when>
									    	</c:choose>> 
									    	女
									 	</label>
							   		 </div>
							  	</div>
							  	<div class="form-group">
							    	<label for="phone" class="col-md-4 control-label">聯繫電話</label>
							    	<div class="col-md-5">
							      		<input type="text" class="form-control" id="phone" name="phone" placeholder="請輸入電話">
							   		</div>
							 	</div>
							 
							 	<hr style="border: 1px dashed lightgray;width: 600px;"/>
							  	<div class="form-group">
							    	<input type="submit" onclick="modifyUser()" class="btn btn-success center-block" style="width: 300px;" value="確認"/>
							  	</div>
							</form>
						</div>
						<!--訂單查詢-->
						<div class="tab-pane" id="profile">
					    	<div class="panel panel-success margintop">
							  <div class="panel-heading text-center"><h3>歡迎來到XX商城</h3></div>
							 
							  <table class="table table-hover table-striped text-center">
							     <tr class="danger">
							     	<th class="text-center">訂單號</th>
							     	<th class="text-center">收件人</th>
							     	<th class="text-center">訂單時間</th>
							     	<th class="text-center">訂單狀態</th>
							     	<th class="text-center">操作</th>
							     </tr>
							     <c:forEach var="order" items="${orders }">
							     	<tr>
								     	<td>${order.id }</td>
								     	<td>${order.receiverName }</td>
								     	<td>${order.ordertime }</td>
								     	<td>
								     		<c:choose>
								     			<c:when test="${order.paystate==0 }">未支付</c:when>
								     			<c:when test="${order.paystate==0 }">已支付</c:when>
								     		</c:choose>
								     	</td>
								     	<td>
								     		<a href="javascript:void(0)" onclick="showOrderDetail('${order.id}')">查看</a>
								     		<a href="javascript:void(0)" onclick="deleteOrder('${order.id}',this)">刪除</a>
								     	</td>
								     </tr>
							     </c:forEach>
							  </table>
							</div>
					    </div>
						<!--用戶退出-->
						<div class="tab-pane" id="messages"></div>
					</div>
				</div>
			</div>
		</div>
		<!--彈出的模態框-->
		<div id="showorderdetail"></div>
		<!--<div>
			<div class="modal fade" tabindex="-1" id="myModal">
			  	<div class="modal-dialog" >
			    	<div class="modal-content">
			      		<div class="modal-header">
			        		<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
			        		<h4 class="modal-title">訂單詳情</h4>
			      		</div>
			      		<div class="modal-body paddingtop">
			        		<div class="panel panel-info table-responsive">
					  			<div class="panel-heading text-center"><h4><strong>購物車列表</strong></h4></div>
					  			<div id="carttable">
					  				<table class="table table-hover text-center">
										<tr class="danger">
										    <th class="text-center">序號</th>
										    <th class="text-center">商品名稱</th>
										    <th class="text-center">價格</th>
										    <th class="text-center">購買數量</th>
										    <th class="text-center">庫存</th>
										    <th class="text-center">小計</th>
										</tr>
										<tr>
										    <td>1</td>
										    <td>java模式</td>
										    <td>1</td>
										    <td>1</td>
										    <td>1000</td>
										    <td>20</td>
										</tr>
										<tr>
										    <td>1</td>
										    <td>javascript</td>
										    <td>1</td>
										   	<td>1</td>
										    <td>1000</td>
										    <td>20</td>
										</tr>
					    			</table>
					  			</div>
							</div>
			      			<div class="modal-footer" style="text-align: left!important;">
					        	<strong>地址:</strong> 無錫<br/>
					        	<strong>收貨人:</strong> 張三<br/>
					        	<strong>電話:</strong> 18928792792
			     			</div>
			    		</div>
			  		</div>
				</div>
			</div>
		</div>-->
		<!--靜態模態框2:如果用戶登錄信息已經過期,則再次返回該頁面的時候有彈出框提示-->
		<!--<div>
			<div class="modal fade" tabindex="0" id="myModal2">
			  	<div class="modal-dialog" >
			    	<div class="modal-content">
			      		<div class="modal-header text-center">
			        		<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
			        		<h4 class="modal-title">用戶信息已經過期-請重新登錄</h4>
			      		</div>
			      		<div class="modal-body paddingtop">
			        		<form class="form-horizontal" action="${pageContext.request.contextPath }/LoginServlet" method="post">
			        			<div class="form-group">
			        				<label for="name" class="col-md-4 control-label">用戶名</label>
									<div class="col-md-4">
								    	<input type="text" class="form-control" name="name" id="name" placeholder="請輸入用戶名">
								    </div>
			        			</div>
			        			<div class="form-group">
								    <label for="pass" class="col-md-4 control-label">密碼</label>
								    <div class="col-md-4">
								      <input type="password" class="form-control" id="pass" name="pass" placeholder="請輸入密碼">
								    </div>
								</div>						  
						 		<div class="form-group text-center">
						   			<input type="submit" class="btn btn-success" style="width: 200px;" value="登錄"/>
						 		</div>
			        		</form>
			    		</div>
			  		</div>
				</div>
			</div>
		</div>-->
		
	</body>
</html>

3.user.js

function layout(){
	window.location.href = getRootPath()+"/LayoutServlet";
}

/**
 * js獲取應用程序根路徑
 * @return {}
 */
function getRootPath() {
	//獲取當前網址,如: http://localhost:8083/uimcardprj/share/meun.jsp  
	var curWwwPath = window.document.location.href;
	//獲取主機地址之後的目錄,如: /uimcardprj/share/meun.jsp  
	var pathName = window.document.location.pathname;
	var pos = curWwwPath.indexOf(pathName);
	//獲取主機地址,如: http://localhost:8083  
	var localhostPaht = curWwwPath.substring(0, pos);
	//獲取帶"/"的項目名,如:/uimcardprj  
	var projectName = pathName
			.substring(0, pathName.substr(1).indexOf('/') + 1);
	return projectName;
}

/**
 * 每次頁面載入的時候都執行checkIsLogoIn方法,判斷用戶是否已經登錄
 */
function checkIsLogin(){
	var url = "/mybookstore/AjaxCheckIsLoginServlet";
	var sendData = null;
	$(function(){
		$.post(url,sendData,function(backData,textStatus,xmlHttpRequest){
			if(backData == "no"){
				$("#myModal2").modal({backdrop: false,keyboard: false});
				$("#myModal2").modal('show');
			}
		});
	});
}
checkIsLogin();
/**
 * 使用ajax提交修改用戶信息表單
 */
function modifyUser(){
	//1.得到表單數據
	var sendData = $("form").serialize();
	//2.得到請求的url信息
	var sendUrl = contextPath + "/AjaxModifyUserinfoServlet?time=" + new Date().getTime();
	//3.發送ajax請求
	$.ajax({
		type:"post",
		url:sendUrl,
		data:sendData,
		async:true,
		success:function(backData,textStatus,xmlHttpRequest){
			if(backData == "success"){
				alert("修改成功!");
			}else{
				alert(backData);
			}
		}
	});
}

/**
 * 顯示訂單詳情
 * 發送ajax請求到服務器,服務器返回詳情數據,本地js拼接數據顯示頁面
 */
function showOrderDetail(id){
	//1.得到請求的url信息
	var sendUrl = contextPath + "/AjaxShowOrderDetailServlet?id=" + id + "&time=" +new Date().getTime();
	//2.發送ajax請求
	$.ajax({
		type:"post",
		url:sendUrl,
		async:true,
		//3.請求成功的回調
		success:function(backData,textStatus,xmlHttpRequest){
			//給showorderdetail動態添加模態框
			$("#showorderdetail").html(backData);
			//彈出模態框
			$("#myModal").modal();
		}
	});
}
/**
 * 刪除訂單
 * 發送ajax請求到服務器,服務器刪除訂單,跳轉頁面
 */
function deleteOrder(id,caller){
	//1.得到請求的url信息
	var sendUrl = contextPath + "/AjaxDeleteOrderServlet?id="+id+"&time="+new Date().getTime();
	//2.發送ajax請求
	$.ajax({
		type:"post",
		url:sendUrl,
		async:true,
		//3.請求成功的回調
		success:function(backData,textSatus,xmlHttpRequest){
			if(backData == "success"){
				//刪除成功
				alert("刪除成功");
				$(caller).parent().remove();
			}else{
				alert(backData);
			}
		}
	});
}

4.LayoutServlet.java,實現用戶退出

package com.chinasoft.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author jf
 * 功能:實現用戶退出
 */
@WebServlet("/LayoutServlet")
public class LayoutServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public LayoutServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//清空session信息
		request.getSession().removeAttribute("user");
		request.getSession().invalidate();
		
		//退出登錄時清空cookie信息
		Cookie[] cookies = request.getCookies();
		for(Cookie c:cookies){
			if("autologin".equals(c.getName())){
				c.setMaxAge(0);
				response.addCookie(c);
			}
		}
		
		//跳轉頁面
		request.getRequestDispatcher("foreground/login/login.jsp").forward(request, response);
	}

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

}

5.檢測用戶是否登錄

package com.chinasoft.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.chinasoft.entity.User;

/**
 * @author jf
 * 功能:檢測用戶是否登錄
 */
@WebServlet("/AjaxCheckIsLoginServlet")
public class AjaxCheckIsLoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public AjaxCheckIsLoginServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		//獲取瀏覽器中存儲的session對象
		User user = (User) request.getSession().getAttribute("user");
		//user不爲空,說明用戶已經登錄
		if(user!=null){
			response.getWriter().write("yes");
		}else{
			response.getWriter().write("no");
		}
	}

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

}

6.處理修改用戶信息

package com.chinasoft.servlet;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import com.chinasoft.dao.impl.ImplUserDao;
import com.chinasoft.entity.User;

/**
 * @author jf
 * 處理修改用戶基本信息的表單
 */
@WebServlet("/AjaxModifyUserinfoServlet")
public class AjaxModifyUserinfoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public AjaxModifyUserinfoServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1.獲取請求參數
		Map<String,String[]> map = request.getParameterMap();
		//2.使用beanutils的方法實現對象屬性的拷貝
		User user = new User();
		try {
			BeanUtils.populate(user, map);
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		//3.修改用戶信息
		ImplUserDao implUserDao = new ImplUserDao();
		try {
			User user2 = implUserDao.modifyUser(user);
			//把新的修改後的用戶保存到session會話中
			request.getSession().setAttribute("user", user2);
			response.getWriter().write("success");
		} catch (SQLException e) {
			response.getWriter().write(e.getMessage());
			e.printStackTrace();
		}
	}

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

}

7.顯示訂單詳情

package com.chinasoft.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.chinasoft.entity.Order;
import com.chinasoft.entity.OrderItem;

/**
 * @author jf
 * 點擊查看,顯示訂單詳情
 */
@WebServlet("/AjaxShowOrderDetailServlet")
public class AjaxShowOrderDetailServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public AjaxShowOrderDetailServlet() {
        super();
    }

	@SuppressWarnings("unchecked")
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1.得到請求參數
		String id = request.getParameter("id");
		//2.獲取session中保存的訂單信息
		List<Order> orders = (List<Order>) request.getSession().getAttribute("orders");
		Order o = null;
		for(Order order : orders){
			if(id.equals(order.getId())){
				o = order;
				break;
			}
		}
		//3.拼接返回給客戶端的字符串
		String html = "";
		html+="<div>";
		html+=	"<div class='modal fade' tabindex='-1' id='myModal'>";
		html+=	  	"<div class='modal-dialog' >";
		html+=	    	"<div class='modal-content'>";
		html+=	      		"<div class='modal-header'>";
		html+=	        		"<button type='button' class='close' data-dismiss='modal'><span>×</span></button>";
		html+=	        		"<h4 class='modal-title'>訂單詳情</h4>";
		html+=	      		"</div>";
		html+=	      		"<div class='modal-body paddingtop'>";
		html+=	        		"<div class='panel panel-info table-responsive'>";
		html+=			  			"<div class='panel-heading text-center'><h4><strong>購物車列表</strong></h4></div>";
		html+=			  			"<div id='carttable'>";
		html+=			  				"<table class='table table-hover text-center'>";
		html+=								"<tr class='danger'>";
		html+=								    "<th class='text-center'>序號</th>";
		html+=								    "<th class='text-center'>商品名稱</th>";
		html+=								    "<th class='text-center'>價格</th>";
		html+=								    "<th class='text-center'>購買數量</th>";
		html+=								    "<th class='text-center'>庫存</th>";
		html+=								    "<th class='text-center'>小計</th>";
		html+=								"</tr>";
		for(int i=0 ; i<o.getOrderitems().size();i++){
			OrderItem item = o.getOrderitems().get(i);
			html+=							"<tr>";
			html+=							    "<td>"+i+"</td>";
			html+=							    "<td>"+item.getProduct().getName()+"</td>";
			html+=							    "<td>"+item.getProduct().getPrice()+"</td>";
			html+=							    "<td>"+item.getBuynum()+"</td>";
			html+=							    "<td>"+item.getProduct().getNum()+"</td>";
			html+=							    "<td>"+item.getBuynum()*item.getProduct().getPrice()+"</td>";
			html+=							"</tr>";
		}
		
		html+=			    			"</table>";
		html+=			  			"</div>";
		html+=					"</div>";
		html+=	      			"<div class='modal-footer' style='text-align: left!important;'>";
		html+=			        	"<strong>地址:</strong>"+o.getReceiverAddress()+"<br/>";
		html+=			        	"<strong>收貨人:</strong>"+o.getReceiverName()+"<br/>";
		html+=			        	"<strong>電話:</strong>"+o.getReceiverPhone();
		html+=	     			"</div>";
		html+=	    		"</div>";
		html+=	  		"</div>";
		html+=		"</div>";
		html+=	"</div>";
		html+="</div>";
		
		//4.給客戶端返回字符串
		response.getWriter().write(html);
	}

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

}


8.處理刪除訂單

package com.chinasoft.servlet;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.chinasoft.dao.impl.ImplOrderDao;
import com.chinasoft.entity.Order;

/**
 * @author jf
 * 處理刪除訂單的servlet
 */
@WebServlet("/AjaxDeleteOrderServlet")
public class AjaxDeleteOrderServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public AjaxDeleteOrderServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	//1.得到請求參數
    	String id = request.getParameter("id");
    	//2.獲取session中保存的訂單信息
    	@SuppressWarnings("unchecked")
		List<Order> orders = (List<Order>) request.getSession().getAttribute("orders");
    	Order o = null;
    	for(Order order:orders){
    		if(id.equals(order.getId())){
    			o = order;
    			break;
    		}
    	}
    	//3.刪除訂單
    	ImplOrderDao implOrderDao = new ImplOrderDao();
    	try {
    		//數據庫刪除訂單
			implOrderDao.deleteOrder(o);
			//域對象刪除訂單
			orders.remove(o);
			request.getSession().setAttribute("orders", orders);
			//給客戶端返回值
			response.getWriter().write("success");
			
		} catch (SQLException e) {
			response.getWriter().write(e.getMessage());
			e.printStackTrace();
		}
    }

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

}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章