簡要說明:通過IDEA開發JavaEE項目,實現簡單的用戶管理系統,與數據庫進行數據交互,在web端實現數據的增刪改查功能。
定義的對象:
1.id,id是數據庫表中的主鍵,一般設置爲自增長型,所以在增加界面不需要顯示id。在Java代碼中定義爲int型。
2.userName,userName定義爲用戶名,在Java代碼中定義爲String類型。
3.userPassword,userPassword定義爲密碼,因爲密碼是用戶個人隱私信息,所以我們需要保存在數據庫中,但不要在web段和url中顯示出來,在Java代碼中定義爲String類型。
4.userBirthdate,userBirthdate定義爲出生日期,在數據庫中要定義成date類型,如果定義爲varchar類型也可以,但是不建議。在Java代碼中定義成String類型即可。
項目結構說明:
請先看圖:
我採用的方法是面像接口的編程方式。
1.com.znx.dao包下的UserDao接口是數據庫端的接口,UserDaoImpl是接口的實現類
2.com.znx.domain包下的User類主要定義了我們所需要的對象和方法。
3.com.znx.filter包下的CharseFilter類做一個攔截器,做一些在本項目中重複操作的內容,比如字符亂碼。
4.com.znx.mapper包下的userMapper.xml文件主要寫數據庫的SQL語句。
5.com.znx.service包下也是面向接口,主要面向服務端,可參照1內容
6.com.znx.servlet包下是做增刪改查的具體操作。
7.page包下都是jsp代碼塊。
話不多說,上代碼!!!!!!!!!!!!!!!!!!!!!!
UserDao:
package com.znx.dao;
import com.znx.domain.User;
import java.util.List;
public interface UserDao{
List<User> selectAllUsers();
User selectUserById(int id);
void insertUser(User user);
void updateUser(User user);
void deleteUserById(int id);
}
UserDaoImpl
package com.znx.dao.impl;
import com.znx.dao.UserDao;
import com.znx.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class UserDaoImpl implements UserDao {
static SqlSessionFactory sqlSessionFactory;
static {
InputStream inputStream;
try {
String resource = "mybatis-config.xml";
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void insertUser(User user) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao UserDao = sqlSession.getMapper(UserDao.class);
UserDao.insertUser(user);
sqlSession.commit();
sqlSession.close();
}
@Override
public void updateUser(User book) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao UserDao = sqlSession.getMapper(UserDao.class);
UserDao.updateUser(book);
sqlSession.commit();
sqlSession.close();
}
@Override
public void deleteUserById(int id) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao UserDao = sqlSession.getMapper(UserDao.class);
UserDao.deleteUserById(id);
sqlSession.commit();
sqlSession.close();
}
@Override
public User selectUserById(int id) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao UserDao = sqlSession.getMapper(UserDao.class);
sqlSession.commit();
return UserDao.selectUserById(id);
}
@Override
public List<User> selectAllUsers() {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao UserDao = sqlSession.getMapper(UserDao.class);
sqlSession.commit();
return UserDao.selectAllUsers();
}
}
User
package com.znx.domain;
public class User {
private int id;
private String userName;
private String userPassword;
private String userBirthdate;
public User() {
}
public User(int id, String userName, String userPassword, String userBirthdate) {
this.id = id;
this.userName = userName;
this.userPassword = userPassword;
this.userBirthdate = userBirthdate;
}
public User( String userName, String userPassword, String userBirthdate) {
this.userName = userName;
this.userPassword = userPassword;
this.userBirthdate = userBirthdate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserBirthdate() {
return userBirthdate;
}
public void setUserBirthdate(String userBirthdate) {
this.userBirthdate = userBirthdate;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", userPassword='" + userPassword + '\'' +
", userBirthdate='" + userBirthdate + '\'' +
'}';
}
}
CharseFilter
package com.znx.filter;
import javax.servlet.*;
import java.io.IOException;
public class CharseFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain Chain) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");
resp.setContentType("index.jsp;charset=utf-8");
Chain.doFilter(req,resp);
}
@Override
public void destroy() {
}
}
userMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.znx.dao.UserDao">
<insert id="insertUser" parameterType="com.znx.domain.User">
INSERT INTO umg (user_name,user_password,user_birthdate)
VALUES
(#{userName},#{userPassword},#{userBirthdate})
</insert>
<select id="selectAllUsers" resultType="com.znx.domain.User">
SELECT * FROM umg
</select>
<select id="selectUserById" resultType="com.znx.domain.User" parameterType="int">
SELECT * FROM umg where id = #{id}
</select>
<update id="updateUser" parameterType="com.znx.domain.User">
update umg set user_name = #{userName},user_password =#{userPassword},user_birthdate = #{userBirthdate}
where id = #{id}
</update>
<delete id="deleteUserById" parameterType="int">
delete from umg where id = #{id}
</delete>
<!-- <delete id="deleteBookById" parameterMap="com.bookstore.entity.Book">-->
<!-- DELETE FROM book WHERE id=#{id}-->
<!-- </delete>-->
</mapper>
UserService
package com.znx.service;
import com.znx.domain.User;
import java.util.List;
public interface UserService {
User selectUserById(int id);
List<User> selectAllUsers();
public void updateUser(User user);
public void deleteUserById(int id);
public void insertUser(User user) throws Exception;
}
UserServiceImpl
package com.znx.service.impl;
import com.znx.dao.UserDao;
import com.znx.dao.impl.UserDaoImpl;
import com.znx.domain.User;
import com.znx.service.UserService;
import java.awt.print.Book;
import java.util.List;
public class UserServiceImpl implements UserService {
private UserDao userDao = new UserDaoImpl();
@Override
public User selectUserById(int id) {
return userDao.selectUserById(id);
}
@Override
public List<User> selectAllUsers() {
return userDao.selectAllUsers();
}
@Override
public void updateUser(User user) {
userDao.updateUser(user);
}
@Override
public void deleteUserById(int id) {
userDao.deleteUserById(id);
}
@Override
public void insertUser(User user) throws Exception {
// userDao.insertUser(user);
// User b = userDao.selectUserById(user.getId());
// if (b == null) {
// userDao.insertUser(user);
// } else {
// System.out.println("保存失敗");
// }
userDao.insertUser(user);
}
}
ListAllUserServlet
package com.znx.servlet;
import com.znx.domain.User;
import com.znx.service.UserService;
import com.znx.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public class ListAllUserServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<User> users = userService.selectAllUsers();
req.setAttribute("users",users);
req.getRequestDispatcher("/WEB-INF/page/index.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
AddUserPageServlet
package com.znx.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddUserPageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF/page/addUser.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
AddUserServlet
package com.znx.servlet;
import com.znx.domain.User;
import com.znx.service.UserService;
import com.znx.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddUserServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// int id = Integer.parseInt(req.getParameter("id"));
String userName = req.getParameter("userName");
String userPassword = req.getParameter("userPassword");
String userBirthdate = req.getParameter("userBirthdate");
// System.out.println(id);
System.out.println(userName);
System.out.println(userBirthdate);
User user = new User(userName,userPassword,userBirthdate);
System.out.println(user);
try {
userService.insertUser(user);
} catch (Exception e) {
e.printStackTrace();
}
resp.sendRedirect("ListAllUserServlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
UpdateUserPageServlet
```java
```java
package com.znx.servlet;
import com.znx.domain.User;
import com.znx.service.UserService;
import com.znx.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class UpdateUserPageServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = userService.selectUserById(Integer.parseInt(req.getParameter("id")));
req.setAttribute("user", user);
req.getRequestDispatcher("/WEB-INF/page/updateUser.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
UpdateUserServlet
```bash
package com.znx.servlet;
import com.znx.domain.User;
import com.znx.service.UserService;
import com.znx.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class UpdateUserServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("id"));
String userName = req.getParameter("userName");
String userPassword = req.getParameter("userPassword");
String userBirthdate = req.getParameter("userBirthdate");
System.out.println("id:"+id);
System.out.println("userName:"+userName);
System.out.println("userPassword:"+userPassword);
System.out.println("userBirthdate:"+userBirthdate);
User user = new User(id,userName,userPassword,userBirthdate);
try {
userService.updateUser(user);
} catch (Exception e) {
e.printStackTrace();
}
resp.sendRedirect("ListAllUserServlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
DeleteUserServlet
package com.znx.servlet;
import com.znx.service.UserService;
import com.znx.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DeleteUserServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("id"));
// System.out.println("id:"+id);
userService.deleteUserById(id);
resp.sendRedirect("ListAllUserServlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
mybatis-config.xml(usermanager是數據庫名字,數據庫的密碼記得修改成自己的密碼)
```c
```c
```java
```css
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/usermanager?serverTimezone=GMT%2B8&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/znx/mapper/userMapper.xml" />
</mappers>
</configuration>
addUser.jsp
<%--
Created by IntelliJ IDEA.
User: Boom
Date: 2019/10/12
Time: 9:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加用戶信息</title>
<style>
.box{
width: 700px;
margin: 100px auto;
}
table{
width: 700px;
border-spacing: 0px;
border-top: 1px solid #000;
border-left: 1px solid #000;
margin-top: 5px;
}
table tr th , table tr td {
border: 1px solid #000;
border-left: none;
border-top: none;
text-align:center;
}
</style>
</head>
<body>
<form method="get" action="/AddUserServlet">
<table>
<tr><th>添加書籍</th></tr>
<%-- <tr><td><center> id:<input type="text" name="id"></center></td></tr>--%>
<tr><td><center> 用戶名:<input type="text" name="userName"></center></td></tr>
<tr><td><center> 密碼:<input type="text" name="userPassword"></center></td></tr>
<tr><td><center>出生日期:<input type="text" name="userBirthdate"></center></td></tr>
<tr><td><input type="submit" value="添加" style="float: right" ></td></tr>
</table>
</form>
</body>
</html>
index.jsp
<%--
Created by IntelliJ IDEA.
User: Boom
Date: 2019/10/11
Time: 9:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>顯示用戶信息</title>
<style>
.box{
width: 700px;
margin: 100px auto;
}
table{
width: 700px;
border-spacing: 0px;
border-top: 1px solid #000;
border-left: 1px solid #000;
margin-top: 5px;
}
table tr th , table tr td {
border: 1px solid #000;
border-left: none;
border-top: none;
text-align:center;
}
</style>
</head>
<body>
<a href="/AddUserPageServlet">添加</a>
<table>
<thead>
<tr>
<th>id</th><th>用戶名</th><th>出生日期</th><th colspan="2">功能</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${users}">
<tr>
<td>${user.id}</td>
<td>${user.userName}</td>
<td>${user.userBirthdate}</td>
<%-- <td>修改</td>--%>
<%-- <td>刪除</td>--%>
<td><a href="/UpdateUserPageServlet?id=${user.id}">修改</a></td>
<%-- <%– <td><a href="/UpdateBookPageServlet?id=${book.id}/&bookName=${book.bookName}&author=${book.author}&publishTime=${book.publishTime}">修改</a></td>–%>--%>
<td><a href="javascript:deleteUser(id=${user.id})">刪除</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<script type="text/javascript">
function deleteUser(id) {
var b = window.confirm("你確定要刪除此記錄麼?");
if (b) {
window.location.href = "DeleteUserServlet?id=" + id;
}
}
</script>
</body>
</html>
updateUser.jsp
<%--
Created by IntelliJ IDEA.
User: Boom
Date: 2019/10/13
Time: 14:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>更新用戶信息</title>
<style>
.box{
width: 700px;
margin: 100px auto;
}
table{
width: 700px;
border-spacing: 0px;
border-top: 1px solid #000;
border-left: 1px solid #000;
margin-top: 5px;
}
table tr th , table tr td {
border: 1px solid #000;
border-left: none;
border-top: none;
text-align:center;
}
</style>
</head>
<body>
<%--<% String bookName=request.getParameter("bookName");%>--%>
<%--<%=bookName%>--%>
<form action="/UpdateUserServlet" method="get">
<table>
<tr><th>修改書籍</th></tr>
<tr><td><center> id:<input type="text" name="id" value="${user.id}" readonly="true"></center></td></tr>
<tr><td><center> 用戶名:<input type="text" name="userName" value="${user.userName}"></center></td></tr>
<tr><td><center> 密碼:<input type="text" name="userPassword" value="${user.userPassword}"> </center></td></tr>
<tr><td><center>出生日期:<input type="text" name="userBirthdate" value="${user.userBirthdate}"></center></td></tr>
<tr><td><input type="submit" value="修改" style="float: right"></td></tr>
<%-- id:<input type="text" name="id"><br>--%>
<%-- 書名:<input type="text" name="bookName"><br>--%>
<%-- 作者:<input type="text" name="author"><br>--%>
<%-- 出版時間:<input type="text" name="publishTime"><br>--%>
<%-- <input type="submit" value="修改">--%>
</table>
</form>
</body>
</html>
數據庫:
附上幾張結果的展示