案例:用户信息列表展示||1. 需求 2. 设计 3. 开发4. 测试 5. 部署运维
案例:用戶信息列表展示
1. 需求:用戶信息的增刪改查操作
2. 設計:
?? ?1. 技術選型:Servlet+JSP+MySQL+JDBCTemplate+Druid+BeanUtils+tomcat
?? ?2. 數(shù)據(jù)庫設計:
?? ??? ?create database day17; -- 創(chuàng)建數(shù)據(jù)庫
?? ??? ?use day17; ?? ??? ??? ? ? -- 使用數(shù)據(jù)庫
?? ??? ?create table user( ? -- 創(chuàng)建表
?? ??? ??? ?id int primary key auto_increment,
?? ??? ??? ?name varchar(20) not null,
?? ??? ??? ?gender varchar(5),
?? ??? ??? ?age int,
?? ??? ??? ?address varchar(32),
?? ??? ??? ?qq?? ?varchar(20),
?? ??? ??? ?email varchar(50)
?? ??? ?);
3. 開發(fā):
?? ?1. 環(huán)境搭建
?? ??? ?1. 創(chuàng)建數(shù)據(jù)庫環(huán)境
?? ??? ?2. 創(chuàng)建項目,導入需要的jar包
?? ?2. 編碼
4. 測試
5. 部署運維
User.java
package cn.itcast.domain;public class User {private int id;private String name;private String gender;private int age;private String address;private String qq;private String email;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", gender='" + gender + '\'' +", age=" + age +", address='" + address + '\'' +", qq='" + qq + '\'' +", email='" + email + '\'' +'}';} }UserListServlet.java
package cn.itcast.web.servlet;import cn.itcast.domain.User; import cn.itcast.service.UserService; import cn.itcast.service.impl.UserServiceImpl;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 java.io.IOException; import java.util.List;@WebServlet("/userListServlet") public class UserListServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.調(diào)用UserService完成查詢UserService service = new UserServiceImpl();List<User> users = service.findAll();//2.將list存入request域request.setAttribute("users",users);//3.轉發(fā)到list.jsprequest.getRequestDispatcher("/list.jsp").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);} }UserService.java
package cn.itcast.service;import cn.itcast.domain.User;import java.util.List;/*** 用戶管理的業(yè)務接口*/ public interface UserService {/*** 查詢所有用戶信息* @return*/public List<User> findAll(); }UserServiceImpl.java
package cn.itcast.service.impl;import cn.itcast.dao.UserDao; import cn.itcast.dao.impl.UserDaoImpl; import cn.itcast.domain.User; import cn.itcast.service.UserService;import java.util.List;public class UserServiceImpl implements UserService {private UserDao dao = new UserDaoImpl();@Overridepublic List<User> findAll() {//調(diào)用Dao完成查詢return dao.findAll();} }UserDao.java
package cn.itcast.dao;import cn.itcast.domain.User;import java.util.List;/*** 用戶操作的DAO*/ public interface UserDao {public List<User> findAll(); }UserDaoImpl.java
package cn.itcast.dao.impl;import cn.itcast.dao.UserDao; import cn.itcast.domain.User; import cn.itcast.util.JDBCUtils; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;public class UserDaoImpl implements UserDao {private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());@Overridepublic List<User> findAll() {//使用JDBC操作數(shù)據(jù)庫...//1.定義sqlString sql = "select * from user";List<User> users = template.query(sql, new BeanPropertyRowMapper<User>(User.class));return users;} }JDBCUtils.java
package cn.itcast.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties;/*** JDBC工具類 使用Durid連接池*/ public class JDBCUtils {private static DataSource ds ;static {try {//1.加載配置文件Properties pro = new Properties();//使用ClassLoader加載配置文件,獲取字節(jié)輸入流InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//2.初始化連接池對象ds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 獲取連接池對象*/public static DataSource getDataSource(){return ds;}/*** 獲取連接Connection對象*/public static Connection getConnection() throws SQLException {return ds.getConnection();} }index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>首頁</title><!-- 1. 導入CSS的全局樣式 --><link href="css/bootstrap.min.css" rel="stylesheet"><!-- 2. jQuery導入,建議使用1.9以上的版本 --><script src="js/jquery-2.1.0.min.js"></script><!-- 3. 導入bootstrap的js文件 --><script src="js/bootstrap.min.js"></script> </head> <body> <div align="center"><ahref="${pageContext.request.contextPath}/userListServlet" style="text-decoration:none;font-size:33px">查詢所有用戶信息</a> </div> </body> </html>list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html> <!-- 網(wǎng)頁使用的語言 --> <html lang="zh-CN"> <head><!-- 指定字符集 --><meta charset="utf-8"><!-- 使用Edge最新的瀏覽器的渲染方式 --><meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- viewport視口:網(wǎng)頁可以根據(jù)設置的寬度自動進行適配,在瀏覽器的內(nèi)部虛擬一個容器,容器的寬度與設備的寬度相同。width: 默認寬度與設備的寬度相同initial-scale: 初始的縮放比,為1:1 --><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3個meta標簽*必須*放在最前面,任何其他內(nèi)容都*必須*跟隨其后! --><title>用戶信息管理系統(tǒng)</title><!-- 1. 導入CSS的全局樣式 --><link href="css/bootstrap.min.css" rel="stylesheet"><!-- 2. jQuery導入,建議使用1.9以上的版本 --><script src="js/jquery-2.1.0.min.js"></script><!-- 3. 導入bootstrap的js文件 --><script src="js/bootstrap.min.js"></script><style type="text/css">td, th {text-align: center;}</style> </head> <body> <div class="container"><h3 style="text-align: center">用戶信息列表</h3><table border="1" class="table table-bordered table-hover"><tr class="success"><th>編號</th><th>姓名</th><th>性別</th><th>年齡</th><th>籍貫</th><th>QQ</th><th>郵箱</th><th>操作</th></tr><c:forEach items="${users}" var="user" varStatus="s"><tr><td>${s.count}</td><td>${user.name}</td><td>${user.gender}</td><td>${user.age}</td><td>${user.address}</td><td>${user.qq}</td><td>${user.email}</td><td><a class="btn btn-default btn-sm" href="update.html">修改</a> <a class="btn btn-default btn-sm" href="">刪除</a></td></tr></c:forEach><tr><td colspan="8" align="center"><a class="btn btn-primary" href="add.html">添加聯(lián)系人</a></td></tr></table> </div> </body> </html>?
總結
以上是生活随笔為你收集整理的案例:用户信息列表展示||1. 需求 2. 设计 3. 开发4. 测试 5. 部署运维的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVC:开发模式及其优缺点
- 下一篇: 虚拟机的网络连接三种形式的说明