Java簡單使用者管理系統
Dbutil.java
-----------------------------------------------------------------------------------
package com.ceshi.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 封裝資料常用操作
* @author Administrator
*
*/
public class DbUtil {
/**
* 取得Connection
* @return
*/
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String username = "drp1";
String password = "drp1";
conn = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 關閉conn
* @param conn
*/
public static void close(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 關閉PreparedStatement
* @param pstmt
*/
public static void close(PreparedStatement pstmt){
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 關閉ResultSet
* @param pstmt
*/
public static void close(ResultSet rs ) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 測試資料庫是否連線成功
* @param args
*/
public static void main(String args[]){
System.out.println("資料庫連線成功!"+DbUtil.getConnection());
}
}
-----------------------------------------------------------------------------------
PageModel.java
-----------------------------------------------------------------------------------
package com.ceshi.util;
import java.util.List;
/**
* 封裝分頁資訊
* @author Administrator
*
*/
public class PageModel<E> {
//結果集
private List<E> list;
//查詢記錄數
private int totalRecords;
//每頁多少條資料
private int pageSize;
//第幾頁
private int pageNo;
/**
* 總頁數
* @return
*/
public int getTotalPages() {
return (totalRecords + pageSize - 1) / pageSize;
}
/**
* 取得首頁
* @return
*/
public int getTopPageNo() {
return 1;
}
/**
* 上一頁
* @return
*/
public int getPreviousPageNo() {
if (pageNo <= 1) {
return 1;
}
return pageNo - 1;
}
/**
* 下一頁
* @return
*/
public int getNextPageNo() {
if (pageNo >= getBottomPageNo()) {
return getBottomPageNo();
}
return pageNo + 1;
}
/**
* 取得尾頁
* @return
*/
public int getBottomPageNo() {
return getTotalPages();
}
public List<E> getList() {
return list;
}
public void setList(List<E> list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
-----------------------------------------------------------------------------------
UserManager.java
-----------------------------------------------------------------------------------
package com.ceshi.manager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.ceshi.entity.User;
import com.ceshi.util.DbUtil;
import com.ceshi.util.PageModel;
/**
* 採用單例管理使用者
* @author Administrator
*
*/
public class UserManager {
private static UserManager instance = new UserManager();
private UserManager(){}
/**
* 提供一個入口方法
* @return
*/
public static UserManager getInstance(){
return instance;
}
/**
* 新增使用者的方法
* @param user
*/
public void addUser(User user){
String sql = "insert into t_user (user_id, user_name, password, contact_tel, email, create_date) values (?,?,?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUserId());
pstmt.setString(2, user.getUserName());
pstmt.setString(3, user.getPassword());
pstmt.setString(4, user.getContactTel());
pstmt.setString(5, user.getEmail());
pstmt.setTimestamp(6, new Timestamp(new Date().getTime()));//能儲存年月日 時分秒
pstmt.executeQuery();
} catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
/**
* 修改使用者
* @param user
*/
public void modifyUser(User user) {
StringBuilder sbSql = new StringBuilder();
sbSql.append("update t_user ")
.append("set user_name = ?, ")
.append("password = ?, ")
.append("contact_tel = ?, ")
.append("email = ? ")
.append("where user_id = ? ");
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sbSql.toString());
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
pstmt.setString(3, user.getContactTel());
pstmt.setString(4, user.getEmail());
pstmt.setString(5, user.getUserId());
pstmt.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
/**
* 根據使用者程式碼刪除
* @param userId
*/
public void delUser(String userId) {
String sql = "delete from t_user where user_id=?";
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
pstmt.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(pstmt);
DbUtil.close(conn);
}
}
/**
* 根據使用者程式碼查詢
* @param userId
* @return 如果存在返回User物件,否則返回null
*/
public User findUserById(String userId) {
String sql = "select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id=?";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
User user = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setUserId(rs.getString("user_id"));
user.setUserName(rs.getString("user_name"));
user.setPassword(rs.getString("password"));
user.setContactTel(rs.getString("contact_tel"));
user.setEmail(rs.getString("email"));
user.setCreateDate(rs.getTimestamp("create_date"));
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return user;
}
/**
* 分頁查詢
* @param pageNo 第幾頁
* @param pageSize 每頁多少條資料
* @return pageModel
*/
public PageModel<User> findUserList(int pageNo, int pageSize) {
StringBuffer sbSql = new StringBuffer();
sbSql.append("select user_id, user_name, password, contact_tel, email, create_date ")
.append("from ")
.append("( ")
.append("select rownum rn, user_id, user_name, password, contact_tel, email, create_date ")
.append("from ")
.append("( ")
.append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id <> 'root' order by user_id ")
.append(") where rownum <= ? ")
.append(") where rn > ? ");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
PageModel<User> pageModel = null;
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sbSql.toString());
pstmt.setInt(1, pageNo * pageSize);
pstmt.setInt(2, (pageNo - 1) * pageSize);
rs = pstmt.executeQuery();
List<User> userList = new ArrayList<User>();
while (rs.next()) {
User user = new User();
user.setUserId(rs.getString("user_id"));
user.setUserName(rs.getString("user_name"));
user.setPassword(rs.getString("password"));
user.setContactTel(rs.getString("contact_tel"));
user.setEmail(rs.getString("email"));
user.setCreateDate(rs.getTimestamp("create_date"));
userList.add(user);
}
pageModel = new PageModel<User>();
pageModel.setList(userList);
pageModel.setTotalRecords(getTotalRecords(conn));
pageModel.setPageSize(pageSize);
pageModel.setPageNo(pageNo);
}catch(SQLException e) {
e.printStackTrace();
}finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return pageModel;
}
/**
* 取得總記錄數
* @param conn
* @return
*/
private int getTotalRecords(Connection conn)
throws SQLException {
String sql = "select count(*) from t_user where user_id <> 'root'";
PreparedStatement pstmt = null;
ResultSet rs = null;
int count = 0;
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
rs.next();
count = rs.getInt(1);
}finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
}
return count;
}
}
-----------------------------------------------------------------------------------
User.java
-----------------------------------------------------------------------------------
package com.ceshi.entity;
import java.util.Date;
public class User {
private String userId; //使用者ID
private String userName; //使用者名稱稱
private String password; //使用者密碼
private String contactTel; //使用者電話
private String email; //電子郵件
private Date createDate; //建立日期
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getContactTel() {
return contactTel == null ? "": contactTel;
}
public void setContactTel(String contactTel) {
this.contactTel = contactTel;
}
public String getEmail() {
return email == null ? "": email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
-----------------------------------------------------------------------------------
add_query.jsp
-----------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="com.ceshi.manager.*"%>
<%@ page import="com.ceshi.util.*"%>
<%@ page import="com.ceshi.entity.*"%>
<%
request.setCharacterEncoding("GB18030");
String command = request.getParameter("command");
if ("del".equals(command)) {
String[] userIds = request.getParameterValues("selectFlag");
for (int i=0; i<userIds.length; i++) {
UserManager.getInstance().delUser(userIds[i]);
}
}
int pageNo = 1;
int pageSize = 4; //每頁設定的大小
String pageNoString = request.getParameter("pageNo");
if (pageNoString != null) {
pageNo = Integer.parseInt(pageNoString);
}
PageModel<User> pageModel = UserManager.getInstance().findUserList(pageNo, pageSize);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>使用者維護</title>
<script type="text/javascript">
function addUser() {
//點新增按鈕時 跳向user_add.jsp頁面
window.self.location = "user_add.jsp";
}
function modifyUser() {
var selectFlags = document.getElementsByName("selectFlag");
var count = 0;
var j = 0;
for (var i=0; i<selectFlags.length; i++) {
if (selectFlags[i].checked) {
j = i;
count++;
}
}
if (count == 0) {
alert("請選擇需要修改的使用者!");
return;
}
if (count > 1) {
alert("一次只能修改一個使用者!");
return;
}
window.self.location = "user_modify.jsp?userId=" + selectFlags[j].value;
}
function deleteUser() {
var selectFlags = document.getElementsByName("selectFlag");
var flag = false;
for (var i=0; i<selectFlags.length; i++) {
if (selectFlags[i].checked) {
flag = true;
break;
}
}
if (!flag) {
alert("請選擇需要刪除的使用者!");
return;
}
if (window.confirm("確認刪除嗎?")) {
with (document.getElementById("userform")) {
action="user_main.jsp?command=del";
method="post";
submit();
}
}
}
function checkAll(field) {
var selectFlags = document.getElementsByName("selectFlag");
for (var i=0; i<selectFlags.length; i++) {
selectFlags[i].checked = field.checked;
}
}
function topPage() {
window.self.location = "user_main.jsp?pageNo=<%=pageModel.getTopPageNo()%>";
}
function previousPage() {
window.self.location = "user_main.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>";
}
function nextPage() {
window.self.location = "user_main.jsp?pageNo=<%=pageModel.getNextPageNo()%>";
}
function bottomPage() {
window.self.location = "user_main.jsp?pageNo=<%=pageModel.getBottomPageNo()%>";
}
</script>
</head>
<body class="body1" bgcolor="#CCCCCC">
<br>
<form name="userform" id="userform">
<div align="center">使用者維護介面</div><br>
<table width="800px" border="1" cellspacing="0" cellpadding="0" align="center" class="table1">
<tr>
<td width="55" class="rd6">
<input type="checkbox" name="ifAll" onClick="checkAll(this)">
</td>
<td width="119" class="rd6">
使用者程式碼
</td>
<td width="152" class="rd6">
使用者名稱稱
</td>
<td width="166" class="rd6">
聯絡電話
</td>
<td width="150" class="rd6">
email
</td>
<td width="200" class="rd6">
建立日期
</td>
</tr>
<%
List<User> userList = pageModel.getList();
for (Iterator<User> iter=userList.iterator(); iter.hasNext();) {
User user = iter.next();
%>
<tr>
<td class="rd8">
<input type="checkbox" name="selectFlag" class="checkbox1"
value="<%=user.getUserId() %>">
</td>
<td class="rd8">
<%=user.getUserId() %>
</td>
<td class="rd8">
<%=user.getUserName() %>
</td>
<td class="rd8">
<%=user.getContactTel()%>
</td>
<td class="rd8">
<%=user.getEmail() %>
</td>
<td class="rd8">
<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate()) %>
</td>
</tr>
<%
}
%>
</table>
<table width="800px" height="30" border="0" align="center"
cellpadding="0" cellspacing="0" class="rd1">
<tr>
<td nowrap class="rd19" height="2">
<div align="left">
共 <font color="red"><%=pageModel.getTotalPages() %></font> 頁
當前第<font color="red"><%=pageModel.getPageNo() %></font>頁
</div>
</td>
<td nowrap class="rd19">
<div align="right">
<input name="btnTopPage" class="button1" type="button" id="btnTopPage" value=" << " title="首頁" onClick="topPage()">
<input name="btnPreviousPage" class="button1" type="button" id="btnPreviousPage" value=" < " title="上頁" onClick="previousPage()">
<input name="btnNextPage" class="button1" type="button" id="btnNextPage" value=" > " title="下頁" onClick="nextPage()">
<input name="btnBottomPage" class="button1" type="button" id="btnBottomPage" value=" >> " title="尾頁" onClick="bottomPage()">
<input name="btnAdd" type="button" class="button1" id="btnAdd" value="新增" onClick="addUser()">
<input name="btnDelete" class="button1" type="button" id="btnDelete" value="刪除" onClick="deleteUser()">
<input name="btnModify" class="button1" type="button" id="btnModify" value="修改" onClick="modifyUser()">
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------------------------------------------------------------------
add_modify.jsp
-----------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="com.ceshi.entity.*" %>
<%@ page import="com.ceshi.manager.*" %>
<%
request.setCharacterEncoding("GB18030");
String command = request.getParameter("command");
String userId = request.getParameter("userId");
User user = UserManager.getInstance().findUserById(userId);
if ("modify".equals(command)) {
user.setUserId(request.getParameter("userId"));
user.setUserName(request.getParameter("userName"));
user.setPassword(request.getParameter("password"));
user.setContactTel(request.getParameter("tel"));
user.setEmail(request.getParameter("email"));
UserManager.getInstance().modifyUser(user);
out.println("修改使用者成功!");
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>修改使用者</title>
<script type="text/javascript">
function modifyUser(){
with (document.getElementById("userForm")) {
method="post";
action="user_modify.jsp?command=modify";
submit();
}
}
function userMain() {
window.self.location = "user_main.jsp";
}
</script>
</head>
<body bgcolor="#CCCCCC" >
<form name="userForm" target="_self" id="userForm">
<input type="hidden" name="command" value="modify">
<br><div align="center">修改使用者<br><br>
</div><table align="center" width="300" border="1">
<tr>
<td width="83" align="right">使用者程式碼</td>
<td width="201">
<input type="text" name="userId" id="userId" value="<%=user.getUserId() %>"/>
</td>
</tr>
<tr>
<td align="right">使用者名稱稱</td>
<td>
<input type="text" name="userName" id="userName" value="<%=user.getUserName() %>"/>
</td>
</tr>
<tr>
<td align="right">密碼</td>
<td>
<input type="password" name="password" id="password" value="<%=user.getPassword() %>"/>
</td>
</tr>
<tr>
<td align="right">聯絡電話</td>
<td>
<input type="tel" name="tel" id="tel" value="<%=user.getContactTel() %>"/>
</td>
</tr>
<tr>
<td align="right">E-mail</td>
<td>
<input type="email" name="email" id="email" value="<%=user.getEmail() %>"/>
</td>
</tr>
<tr>
<td>
<br>
</td>
<td align="center">
<input type="submit" name="button" id="button" value="修改" onclick="modifyUser()"/>
<input type="button" name="btnAdd" class="button1" id="btnAdd" value="返回" onclick="userMain()">
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------------------------------------------------------------------
add_add.jsp
-----------------------------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="com.ceshi.entity.*" %>
<%@ page import="com.ceshi.manager.*" %>
<%
request.setCharacterEncoding("GB18030");
String command = request.getParameter("command");
String userId = "";
String userName = "";
String contactTel = "";
String email = "";
if("add".equals(command)){//會很好的防止空指標異常
if(UserManager.getInstance().findUserById(request.getParameter("userId")) == null)
{
User user = new User();
user.setUserId(request.getParameter("userId"));
user.setUserName(request.getParameter("userName"));
user.setPassword(request.getParameter("password"));
user.setContactTel(request.getParameter("tel"));
user.setEmail(request.getParameter("email"));
UserManager.getInstance().addUser(user);
out.println("新增使用者成功!");
}else {
userId = request.getParameter("userId");
userName = request.getParameter("userName");
contactTel = request.getParameter("contactTel");
email = request.getParameter("email");
out.println("使用者程式碼已經存在,程式碼=【" + request.getParameter("userId") + "】");
}
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>新增使用者</title>
<script type="text/javascript">
function addUser(){
with (document.getElementById("userForm")) {
action="user_add.jsp";
method="post";
submit();
}
}
function userMain() {
window.self.location = "user_main.jsp";
}
</script>
</head>
<body bgcolor="#CCCCCC" >
<form name="userForm" target="_self" id="userForm">
<input type="hidden" name="command" value="add">
<br><div align="center">新增使用者<br><br>
</div><table align="center" width="300" border="1">
<tr>
<td width="83" align="right">使用者程式碼</td>
<td width="201">
<input type="text" name="userId" id="userId" />
<span id="spanUserId"></span>
</td>
</tr>
<tr>
<td align="right">使用者名稱稱</td>
<td>
<input type="text" name="userName" id="userName" />
</td>
</tr>
<tr>
<td align="right">密碼</td>
<td>
<input type="password" name="password" id="password" />
</td>
</tr>
<tr>
<td align="right">聯絡電話</td>
<td>
<input type="tel" name="tel" id="tel" />
</td>
</tr>
<tr>
<td align="right">E-mail</td>
<td>
<input type="email" name="email" id="email" />
</td>
</tr>
<tr>
<td>
<br>
</td>
<td align="center">
<input type="submit" name="button" id="button" value="儲存資訊" onclick="addUser()"/>
<input type="button" name="btnAdd" class="button1" id="btnAdd" value="返回" onclick="userMain()">
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------------------------------------------------------------------
no fy
-----------------------------------------------------------------------------------
/**
* 取得使用者列表
* @return
*/
public List<User> getUsers(){//如果不是static 我們取使用者的時候可能要new 一個新的使用者
String sql = "select * from t_user";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
User user = null;
List<User> users = new ArrayList<User>();
try {
conn = DbUtil.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setTel(rs.getString("tel"));
user.setEmail(rs.getString("email"));
user.setCreateDate(rs.getTimestamp("create_date"));
users.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return users;
}
-----------------------------------------------------------------------------------
<%
List<User> users = UserManager.getInstance().getUsers();
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
%>
<tr>
<td class="rd8">
<input type="checkbox" name="selectFlag" class="checkbox1" value="<%=user.getId()%>">
</td>
<td class="rd8">
<%=user.getName() %>
</td>
<td class="rd8">
<%=user.getPassword() %>
</td>
<td class="rd8">
<%=user.getTel()%>
</td>
<td class="rd8">
<%=user.getEmail() %>
</td>
<td class="rd8">
<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate()) %>
</td>
</tr>
<%
}
%>
-----------------------------------------------------------------------------------
Junit.java
-----------------------------------------------------------------------------------
package com.ceshi.manager;
import java.util.List;
import java.util.Scanner;
import junit.framework.TestCase;
import com.ceshi.entity.User;
public class TestUserManager extends TestCase{
//測試刪除操作
public void testDelUser(){
Scanner str = new Scanner(System.in);
System.out.print("請輸入要刪除的使用者Id:");
String userId = str.next();
UserManager.getInstance().delUser(userId);
}
//測試查詢操作
public void testGetUsers(){
List<User> users = UserManager.getInstance().getUsers();
for (int i = 0; i < users.size(); i++) {
User user = users.get(i);
System.out.print(user.getName());//獲取名字
}
}
//測試使用者新增
public void testAddUser(){
User user = new User();
Scanner str = new Scanner(System.in);
System.out.print("請輸入使用者Id:");
String id = str.next();
System.out.print("請輸入使用者name:");
String name = str.next();
System.out.print("請輸入使用者password:");
String password = str.next();
System.out.print("請輸入使用者tel:");
String tel = str.next();
System.out.print("請輸入使用者email:");
String email = str.next();
user.setId(id);
user.setName(name);
user.setPassword(password);
user.setTel(tel);
user.setEmail(email);
UserManager.getInstance().addUser(user);
}
//根據使用者Id查詢
public void testFindUserById(){
Scanner str = new Scanner(System.in);
System.out.print("請輸入使用者Id:");
String userId = str.next();
UserManager.getInstance().findUserById(userId);
User user = new User();
System.out.print("使用者的名字:"+user.getName());
}
}
-----------------------------------------------------------------------------------