[TOC]
# 步驟 1 : 準備數據
因為用戶信息是前臺注冊的時候增加的,截至目前為止,還沒有講到前臺的功能。所以需要手動在數據庫中增加數據,以便于觀察運行的效果
~~~
insert into t_user values(null,'a1','123456');
insert into t_user values(null,'a2','123456');
insert into t_user values(null,'a3','123456');
insert into t_user values(null,'a4','123456');
insert into t_user values(null,'a5','123456');
~~~
# 步驟 2 : 先運行,看到效果,再學習
先將完整的項目(向老師要相關資料),配置運行起來,確認可用之后,再學習做了哪些步驟以達到這樣的效果。
# 步驟 3 : 模仿和排錯
在確保可運行項目能夠正確無誤地運行之后,再嚴格照著教程的步驟,對代碼模仿一遍。
模仿過程難免代碼有出入,導致無法得到期望的運行結果,此時此刻通過比較**正確答案** ( 可運行項目 ) 和自己的代碼,來定位問題所在。
采用這種方式,**學習有效果,排錯有效率**,可以較為明顯地提升學習速度,跨過學習路上的各個檻。
# 步驟 4 : 頁面截圖
用戶這部分做的比較簡單,只有查詢,為什么呢?
1. 用戶的增加,是交由前臺注冊行為產生的,后臺不需要自己進行增加
2. 用戶信息不能刪除。 用戶信息是最重要的業務信息,不可以刪除
3. 用戶資料的修改,也應該有前臺用戶自己進行,而不是后臺操作。比如修改密碼

# 步驟5:UserDao和UserDaoImpl
UserDao
```
package com.dodoke.dao.inter;
import java.util.List;
import com.dodoke.bean.User;
public interface UserDao {
/**
* 用戶分頁查詢
*
* @param start
* @param count
* @return
*/
public List<User> list(int start, int count);
/**
* 獲取用戶總數
*
* @return
*/
public int getTotal();
public User get(int id);
}
```
UserDaoImpl
```
package com.dodoke.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.dodoke.bean.User;
import com.dodoke.dao.inter.UserDao;
import com.dodoke.util.DBUtil;
public class UserDaoImpl implements UserDao {
private static UserDaoImpl daoImpl = new UserDaoImpl();
private UserDaoImpl() {
}
public static UserDaoImpl getInstance() {
return daoImpl;
}
@Override
public List<User> list(int start, int count) {
List<User> beans = new ArrayList<User>();
String sql = "select * from t_user order by id desc limit ?,? ";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, start);
ps.setInt(2, count);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
User bean = new User();
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
bean.setName(name);
bean.setPassword(password);
bean.setId(id);
beans.add(bean);
}
} catch (SQLException e) {
e.printStackTrace();
}
return beans;
}
@Override
public int getTotal() {
int total = 0;
String sql = "select count(*) from t_user";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ResultSet rs = ps.executeQuery();
while (rs.next()) {
total = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return total;
}
@Override
public User get(int id) {
User bean = null;
String sql = "select * from t_user where id = ?";
try (Connection c = DBUtil.getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
bean = new User();
String name = rs.getString("name");
String password = rs.getString("password");
bean.setName(name);
bean.setPassword(password);
bean.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
}
return bean;
}
}
```
# 步驟6:UserServlet
```
package com.dodoke.controller;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dodoke.bean.User;
import com.dodoke.util.Page;
/**
* Servlet implementation class UserServlet
*/
@WebServlet("/UserServlet")
public class UserServlet extends BaseBackServlet {
private static final long serialVersionUID = 1L;
@Override
public String add(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
@Override
public String delete(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
@Override
public String edit(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
@Override
public String update(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
@Override
public String list(HttpServletRequest request, HttpServletResponse response, Page page) {
List<User> us = userDao.list(page.getStart(), page.getCount());
int total = userDao.getTotal();
page.setTotal(total);
request.setAttribute("us", us);
request.setAttribute("page", page);
return "admin/listUser.jsp";
}
}
```
# 步驟7:listUser.jsp
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@include file="../include/admin/adminHeader.jsp"%>
<%@include file="../include/admin/adminNavigator.jsp"%>
<script>
</script>
<title>用戶管理</title>
<div class="workingArea">
<h1 class="label label-info">用戶管理</h1>
<br> <br>
<div class="listDataTableDiv">
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr class="success">
<th>ID</th>
<th>用戶名稱</th>
</tr>
</thead>
<tbody>
<c:forEach items="${us}" var="u">
<tr>
<td>${u.id}</td>
<td>${u.name}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="pageDiv">
<%@include file="../include/admin/adminPage.jsp"%>
</div>
</div>
<%@include file="../include/admin/adminFooter.jsp"%>
```
# 增加,刪除,修改功能
增加交由前臺用戶注冊功能
刪除不提供(用戶信息是最重要的資料)
修改不提供,應該由前臺用戶自己完成
- 項目簡介
- 功能一覽
- 前臺
- 后臺
- 開發流程
- 需求分析-展示
- 首頁
- 產品頁
- 分類頁
- 搜索結果頁
- 購物車查看頁
- 結算頁
- 確認支付頁
- 支付成功頁
- 我的訂單頁
- 確認收貨頁
- 評價頁
- 頁頭信息展示
- 需求分析-交互
- 分類頁排序
- 立即購買
- 加入購物車
- 調整訂單項數量
- 刪除訂單項
- 生成訂單
- 訂單頁功能
- 確認付款
- 確認收貨
- 提交評價信息
- 登錄
- 注冊
- 退出
- 搜索
- 前臺需求列表
- 需求分析后臺
- 分類管理
- 屬性管理
- 產品管理
- 產品圖片管理
- 產品屬性設置
- 用戶管理
- 訂單管理
- 后臺需求列表
- 表結構設計
- 數據建模
- 表與表之間的關系
- 實體類設計
- DAO類設計
- 工具類
- CategoryDao設計
- Service業務類設計
- 后臺-分類管理
- 可運行的項目
- 靜態資源
- FILTER配合SERVLET
- JSP包含關系
- 查詢
- 分頁
- 增加
- 刪除
- 編輯
- 修改
- 后臺其他管理
- 屬性管理
- 產品管理
- 產品圖片管理
- 產品屬性值設置
- 用戶管理
- 訂單管理