主要实现基本用户信息的增删改功能,用户的信息显示在主页面。

  • 我的文件目录
    在这里插入图片描述
    在这里插入图片描述

lib中的包必须全部导入

1、JavaEE项目的三层框架

在这里插入图片描述

分层的目的是为了解耦。降低代码之间的耦合度,方便项目后期的维护和升级。

2 、本项目的目录文件(java文件)

JavaBean类(com.example.bean)Web层(com.example.servlet)Dao持久层(com.example.dao)(com.example.dao.impl)service层(com.example.sercice)(com.example.sercice.impl)Utils类(com.example.utils)
UserAddServlet LoginServletBaseDaoUserServiceJdbcUtils
DeleteServlet UpdateServletUserDaoUserServiceImpl
UserServlet OneUserServletUserDaoImpl

test测试类放在idea生成的test包下。

3、创建用户资源的数据表

数据表根据自己的需求自己创建,下面是该项目用到的数据库字段。

  • id 用户编号 int
  • username 用户名 varchar
  • password 密码 varchar
  • name 真实姓名 varchar
  • email 邮箱 varchar
  • telephone 手机号 varchar
3.1、编写数据库表对应的JavaBean对象
package com.example.bean;

public class User {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private String email;
    private String telephone;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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 getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public User(Integer id, String userName, String password, String name, String email, String telephone) {
        this.id = id;
        this.username = userName;
        this.password = password;
        this.name = name;
        this.email = email;
        this.telephone = telephone;
    }

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", useName='" + username + '\'' +
                ", password='" + password + '\'' +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", telephone='" + telephone + '\'' +
                '}';
    }
}

在如下包下面建立 jdbc.properties设置配置文件

在这里插入图片描述

//具体内容
username=root
password=123abc
url=jdbc:mysql://localhost:3306/***       //***为你的数据表所在数据库名称
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10		//最多同时获取连接的数量

4、编写JdbcUtils工具类(实现代码的重复利用)

  1. 读取 jdbc.properties 属性配置文件
  2. 从流中加载数据
  3. 创建数据库连接池
package com.example.utils;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * @program: ManageSystem
 * @description: 管理数据库连接池的工具类
 * @author: Mr.Zeng
 * @create: 2021-05-26 12:13
 **/
public class JdbcUtils {

    private static DruidDataSource dataSource;

    static {

        try {
            Properties properties = new Properties();
            // 读取jdbc.properties配置文件
            InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
            //从流中加载数据
            properties.load(inputStream);
            //创建 数据库连接 池
            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @Description: 获取数据库的连接  返回null则连接失败
     * @Param: []
     * @return: java.sql.Connection
     * @Author: Mr.Zeng
     * @Date: 2021/5/26
     */
    public static Connection getConnection() {
        Connection connection = null;

        try {
            connection = dataSource.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return connection;
    }

    /**
    * @Description: 放回数据库连接池
    * @Param: [connection]
    * @return: void
    * @Author: Mr.Zeng
    * @Date: 2021/5/26
    */

    public static void close(Connection connection){
        if (connection != null){
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

值得注意的是,在外面获取一个连接后,最后记得关闭连接放回连接池,在这里可以在test包下建立一个测试JdbcUtils的测试类。

Tips:

可能出错的原因:

  1. 数据库是否对应

  2. 没有导入相应的jar包 (druid) 可以到网页搜索下载,非常方便。

5、编写Dao持久层(用来和数据库交互)

5.1、导入DBUtils 的 jar包

commons-dbutils-1.7.jar ,我这里用的是1.7的版本。

5.2、编写BaseDao
package com.example.dao;

import com.example.utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * @program: ManageSystem
 * @description: 使用DBUtils操作数据库
 * @author: Mr.Zeng
 * @create: 2021-05-26 12:59
 **/
public abstract class BaseDao {
    //使用DBUtils操作数据库
    private QueryRunner queryRunner = new QueryRunner();

    /**
    * @Description: update()方法用来执行:Insert\Update\Delete语句
    * @Param: []
    * @return: int 返回-1表示执行失败,返回其他表示影响的行数
    * @Author: Mr.Zeng
    * @Date: 2021/5/26
    */
    public int update(String sql, Object...args){
        Connection connection = JdbcUtils.getConnection();
        try {
            return queryRunner.update(connection,sql,args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return  -1;
    }

    /**
    * @Description: 查询返回一个javaBean的sql语句
    * @Param: [type 返回的对象类型, sql 执行的sql语句, args sql对应的参数值]
    * @return: T 返回类型的泛型
    * @Author: Mr.Zeng
    * @Date: 2021/5/26
    */
    public <T> T queryForOne(Class<T> type,String sql, Object...args){
        Connection connection = JdbcUtils.getConnection();
        try {
            return queryRunner.query(connection,sql,new BeanHandler<T>(type),args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return null;
    }

    /**
     * @Description: 查询返回多个javaBean的sql语句
     * @Param: [type 返回的对象类型, sql 执行的sql语句, args sql对应的参数值]
     * @return: T 返回类型的泛型
     * @Author: Mr.Zeng
     * @Date: 2021/5/26
     */
    public <T>List<T> queryForList(Class<T> type,String sql, Object...args){
        Connection connection = JdbcUtils.getConnection();
        try {
            return queryRunner.query(connection,sql,new BeanListHandler<T>(type),args);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            JdbcUtils.close(connection);
        }
        return null;
    }
}

5.3、编写UserDao
package com.example.dao;

import com.example.bean.User;

import java.util.List;

public interface UserDao {

    /**
    * @Description: 根据用户名和密码查询用户信息,增删查改,返回全部用户的功能
    * @Param: [username 用户名 , password  密码]
    * @return: com.example.bean.User
    * @Author: Mr.Zeng
    * @Date: 2021/5/26
    */


    User queryUserByUsernameAndPassword(String username, String password);

    int add(User user);

    int deleteById(Integer id);

    int update(User user);

    User queryById(Integer id);

    List<User> queryUsers();
}


5.4、UserDao接口实现类UserDaoImpl
package com.example.dao.impl;

import com.example.bean.User;
import com.example.dao.BaseDao;
import com.example.dao.UserDao;

import java.util.List;

/**
 * @program: ManageSystem
 * @description:
 * @author: Mr.Zeng
 * @create: 2021-05-26 13:19
 **/
public class UserDaoImpl extends BaseDao implements UserDao {

    @Override
    public User queryUserByUsernameAndPassword(String username, String password) {
        String sql = "select * from user where username = ? and password = ?";
        return queryForOne(User.class, sql, username, password);
    }
    @Override
    public int add(User user) {
        String sql = "insert into user(username,password,name,email,telephone) values (?,?,?,?,?)";
        return update(sql, user.getUserName(), user.getPassword(), user.getName(),
                user.getEmail(), user.getTelephone());
    }

    @Override
    public int deleteById(Integer id) {
        String sql = "delete from user where id = ?";
        return update(sql, id);
    }

    @Override
    public int update(User user) {
        String sql = "update user set username=?,password=?,name=?,email=?,telephone=? where id = ?";
        return update(sql, user.getUserName(), user.getPassword(), user.getName(),
                user.getEmail(), user.getTelephone(), user.getId());
    }

    @Override
    public User queryById(Integer id) {
        String sql = "select * from user where id = ?";
        return queryForOne(User.class, sql, id);
    }

    @Override
    public List<User> queryUsers() {
        String sql = "select * from user";
        return queryForList(User.class, sql);
    }
}

7、编写Service(处理业务逻辑,调用Dao持久层操作数据库)

7.1、UserService接口
package com.example.service.impl;

import com.example.bean.User;

import java.util.List;

public interface UserService {

    User login(User user);

    void add(User user);

    void deleteById(Integer id);

    void update(User user);

    User queryById(Integer id);

    List<User> queryUsers();
}


7.2、UserService接口实现类UserServiceImpl
package com.example.service;

import com.example.bean.User;
import com.example.dao.UserDao;
import com.example.dao.impl.UserDaoImpl;
import com.example.service.impl.UserService;

import java.util.List;

/**
 * @program: ManageSystem
 * @description: 处理登入业务
 * @author: Mr.Zeng
 * @create: 2021-05-26 14:31
 **/
public class UserServiceImpl implements UserService {

    private final UserDao userDao = new UserDaoImpl();

    public User login(User user){
        return userDao.queryUserByUsernameAndPassword(user.getUserName(), user.getPassword());
    }

    @Override
    public void add(User user) {
        userDao.add(user);
    }

    @Override
    public void deleteById(Integer id) {
        userDao.deleteById(id);
    }

    @Override
    public void update(User user) {
        userDao.update(user);
    }

    @Override
    public User queryById(Integer id) {
        return userDao.queryById(id);
    }

    @Override
    public List<User> queryUsers() {
        return userDao.queryUsers();
    }
}

8、处理登录业务

8.1、业务逻辑(下同)

在这里插入图片描述

8.2、登录页面Login.jsp
<%--
  Created by IntelliJ IDEA.
  User: zengxiong
  Date: 2021/5/26
  Time: 0:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登入页面</title>
    <link type="text/css" rel="stylesheet" href="Login_css.css">
</head>
<body>
<div style="width:400px; height:400px;">
    <img src="2.jpg" width="394" height="444" style="margin-left:166px; margin-top:104px;" alt="图片无法显示">
</div>
<div id="login">
    <h1>用户管理系统</h1>

    <form action="LoginServlet" method="post">
        <input type="hidden" name="action" value="login">
        <label>
            <input type="text" required="required" placeholder="用户名" name="username">
        </label>
        <label>
            <input type="password" required="required" placeholder="密码" name="password">
        </label>
        <button class="but" type="submit">登录</button>
    </form>
</div>
</body>
</html>

8.3、Login_css.css(登录页面的美化文件)
html{
    width: 100%;
    height: 100%;
    overflow: hidden;
}
body{
    width: 100%;
    height: 100%;
    font-family: 'Open Sans',sans-serif;
    margin: 0;
    background-image:url("img.png");
}
#login{
    position: absolute;
    top: 50%;
    left:50%;
    margin: -150px 0 0 147px;
    width: 300px;
    height: 300px;
}
#login h1{
    color: #fff;
    text-shadow:0 0 10px;
    letter-spacing: 1px;
    text-align: center;
}
h1{
    font-size: 2em;
    margin: 0.67em 0;
}
input{
    width: 300px;
    height: 40px;
    margin-bottom: 10px;
    outline: none;
    padding: 10px;
    font-size: 13px;
    color: #fff;
    text-shadow:1px 1px 1px;
    border-top: 1px solid #312E3D;
    border-left: 1px solid #312E3D;
    border-right: 1px solid #312E3D;
    border-bottom: 1px solid #56536A;
    border-radius: 4px;
    background-color: #2D2D3F;
}
.but{
    width: 300px;
    min-height: 20px;
    display: block;
    background-color: #4a77d4;
    border: 1px solid #3762bc;
    color: #fff;
    padding: 9px 14px;
    font-size: 15px;
    line-height: normal;
    border-radius: 5px;
    margin: 0;
}  
8.4、编写LoginServlet
package com.example.web;



import com.example.bean.User;
import com.example.service.UserServiceImpl;
import com.example.service.impl.UserService;

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;

/**
 * @program: ManageSystem
 * @description: 用户登入功能实现
 * @author: Mr.Zeng
 * @create: 2021-05-26 14:47
 **/

@WebServlet(urlPatterns = "/LoginServlet")
public class LoginServlet extends HttpServlet {

    private final UserService userService = new UserServiceImpl();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //调用UserService.login()登录处理业务
        User loginUser = userService.login(new User(0, username, password, null, null, null));
        if (loginUser == null){
            //跳回到Login页面
            req.getRequestDispatcher("/Login.jsp").forward(req, resp);
        }else {
            //跳转到UserServlet
            req.getRequestDispatcher("/UserServlet").forward(req, resp);
        }

    }
}

8.5、注册servlet
  • 在这里我是直接在类里面注册的:
    1. @WebServlet(urlPatterns = “/LoginServlet”),你也可以在Web.xml里面进行注册
    2. 一般在一个程序里面只有一个Servlet(利用反射优化),这里我将Servlet全部分开,便于理解但会造成代码冗余,建议自己学习并实现代码优化
8.6、登入成功页面(显示所有用户)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: zengxiong
  Date: 2021/5/26
  Time: 15:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
    <title>用户管理系统</title>
    <link type="text/css" rel="stylesheet" href="login_success_css.css">
    <script>
        function test1(){
//        document.("表单的name值").action
//        document.("表单的name值").submit
            document.submitted.action="add_list.jsp";
            document.submitted.submit();
        }
        function test2() {
            document.submitted.action = "DeleteServlet";
            document.submitted.submit();
        }
    </script>
    <style>
        button.asd{
            margin-right: -818px;
            background-color: #4a77d4;
        }
        input.abc{
            margin-right: 20px;
            background-color: #89d289;
        }
        input.def{
            background-color: #d91e1e;
            width: 42px;
            height: 25px;
            text-align: center;
        }
    </style>
</head>
<body>
<form name="submitted" method="post">
<table id="mytable" cellspacing="0" summary="The technical specifications of the Apple PowerMac G5 series">
    <caption></caption>
    <tr>
        <th colspan="7"><button class="asd" οnclick="test1()">添加用户</button></th>
    </tr>
    <tr>
        <th scope="col" abbr="Configurations">编号</th>
        <th scope="col" abbr="Dual 1.8">用户名</th>
        <th scope="col" abbr="Dual 2">密码</th>
        <th scope="col" abbr="Dual 2">姓名</th>
        <th scope="col" abbr="Dual 2">邮箱</th>
        <th scope="col" abbr="Dual 2">电话</th>
        <th scope="col" abbr="Dual 2.5">操作</th>
    </tr>
    <c:forEach items="${requestScope.user}" var="user">
    <tr>
        <th scope="row" abbr="Model" class="spec" name="id">${user.id}</th>
        <td>${user.userName}</td>
        <td>${user.password}</td>
        <td>${user.name}</td>
        <td>${user.email}</td>
        <td>${user.telephone}</td>
        <td><label>
                <%--formaction直接设置行为,并且设置提交的数据值--%>
            <input formaction="OneUserServlet?id=${user.id}" type="submit" class="abc" value="修改">
        </label>
            <label>
                <%--formaction直接设置行为,并且设置提交的数据值--%>
                <input formaction="DeleteServlet?id=${user.id}" type="submit" class="def" value="删除">
            </label></td>
    </tr>
    </c:forEach>
</table>
</form>
</body>
</html>

8.7、登入成功页面的login_success_css.css文件
body {
    font-family: 'Open Sans', sans-serif;
    margin: 0;
    background-image: url("img.png");
    width: 100%;
    height: 100%;
    border: 1px solid red;
    text-align: center;
}

a {
    color: #c75f3e;
}

#mytable {
    width: 1000px;
    padding: 0;
    border: 1px solid green;
    margin: 100px auto 0;
    height: 300px;
}

caption {
    padding: 0 0 5px 0;
    width: 700px;
    font: italic 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
    text-align: right;
}

th {
    font: bold 26px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
    color: #4f6b72;
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    border-top: 1px solid #C1DAD7;
    letter-spacing: 2px;
    text-transform: uppercase;
    padding: 6px 6px 6px 12px;
    background: #CAE8EA no-repeat;
    text-align: center;
}
td {
    border-right: 1px solid #C1DAD7;
    border-bottom: 1px solid #C1DAD7;
    background: #fff;
    font-size: 11px;
    padding: 6px 6px 6px 12px;
    color: #4f6b72;
    text-align: center;
}

td.alt {
    background: #F5FAFA;
    color: #797268;
}

th.spec {
    border-left: 1px solid #C1DAD7;
    border-top: 0;
    background: #fff no-repeat;
    font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
}

th.specalt {
    border-left: 1px solid #C1DAD7;
    border-top: 0;
    background: #f5fafa no-repeat;
    font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
    color: #797268;
}
html > body td {
    font-size: 11px;
}
8.8、登入成功后页面数据请求(下同)

在这里插入图片描述

8.9、编写Userservlet
package com.example.web;

import com.example.bean.User;
import com.example.service.UserService_1;
import com.example.service.impl.UserService_1Impl;

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;

/**
 * @program: ManageResourceSystem
 * @description: 处理业务
 * @author: Mr.Zeng
 * @create: 2021-05-26 23:05
 **/
@WebServlet(urlPatterns = "/UserServlet")
public class UserServlet extends HttpServlet {


    UserService_1 userService1 = new UserService_1Impl();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //请求数据的中文乱码问题
        req.setCharacterEncoding("UTF-8");//客户端网页我们控制为UTF-8
        //通过UserService查询全部信息
        List<User> users = userService1.queryUsers();
        //把全部信息保存到Request域中
        req.setAttribute("user",users);
        //请求转发到LoginSuccess.jsp
        req.getRequestDispatcher("/LoginSuccess.jsp").forward(req, resp);
    }
}

9、添加用户

9.1、编写AddServlet
package com.example.web;

import com.example.bean.User;
import com.example.service.UserService_1;
import com.example.service.impl.UserService_1Impl;

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;

/**
 * @program: ManageResourceSystem
 * @description: 添加数据的处理业务
 * @author: Mr.Zeng
 * @create: 2021-05-27 08:01
 **/
@WebServlet(urlPatterns = "/AddServlet")
public class AddServlet extends HttpServlet {
    UserService_1 userService1 = new UserService_1Impl();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String name = req.getParameter("name");
        String email = req.getParameter("email");
        String telephone = req.getParameter("telephone");
        //调用add保存用户
        userService1.add(new User(null, username, password, name, email, telephone));
        //跳转到用户列表页面,此方法有表单重复提交
        //req.getRequestDispatcher("/UserServlet").forward(req, resp);

        //无重复添加
        resp.sendRedirect("UserServlet");
    }
}

9.2、添加用户页面
<%--
  Created by IntelliJ IDEA.
  User: zengxiong
  Date: 2021/5/27
  Time: 8:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加用户</title>
    <link type="text/css" rel="stylesheet" href="login_success_css.css">
    <style>
        form {
            margin-top: 200px;
            margin-left: 300px;
        }
        .but{
            width: 200px;
            min-height: 20px;
            display: block;
            background-color: #4a77d4;
            border: 1px solid #3762bc;
            color: #fff;
            padding: 9px 14px;
            font-size: 15px;
            line-height: normal;
            border-radius: 5px;
            margin-left: 364px;
            margin-top: 60px;
        }
    </style>
</head>
<body>
<form action="AddServlet" method="post">
    <table>
        <tr>
            <th scope="col" abbr="Dual 1.8">用户名</th>
            <th scope="col" abbr="Dual 2">密码</th>
            <th scope="col" abbr="Dual 2">姓名</th>
            <th scope="col" abbr="Dual 2">邮箱</th>
            <th scope="col" abbr="Dual 2">电话</th>
        </tr>
        <tr>
            <td><label>
                <input type="text" name="username">
            </label></td>
            <td><label>
                <input type="text" name="password">
            </label></td>
            <td><label>
                <input type="text" name="name">
            </label></td>
            <td><label>
                <input type="text" name="email">
            </label></td>
            <td><label>
                <input type="text" name="telephone">
            </label></td>
        </tr>
    </table>
    <input type="submit" value="提交" class="but">
</form>
</body>
</html>

10、修改用户

10.1、修改信息的显示页面
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: zengxiong
  Date: 2021/5/27
  Time: 8:05
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改用户</title>
    <link type="text/css" rel="stylesheet" href="login_success_css.css">
    <style>
        form {
            margin-top: 200px;
            margin-left: 300px;
        }
        .but{
            width: 200px;
            min-height: 20px;
            display: block;
            background-color: #4a77d4;
            border: 1px solid #3762bc;
            color: #fff;
            padding: 9px 14px;
            font-size: 15px;
            line-height: normal;
            border-radius: 5px;
            margin-left: 364px;
            margin-top: 60px;
        }
    </style>
</head>
<body>
<form method="post">
    <table>
        <tr>
            <th scope="col" abbr="Dual 1.8">用户名</th>
            <th scope="col" abbr="Dual 2">密码</th>
            <th scope="col" abbr="Dual 2">姓名</th>
            <th scope="col" abbr="Dual 2">邮箱</th>
            <th scope="col" abbr="Dual 2">电话</th>
        </tr>
        <tr>
            <td><label>
                <input type="text" name="username" value="${requestScope.user.userName}">
            </label></td>
            <td><label>
                <input type="text" name="password" value="${requestScope.user.password}">
            </label></td>
            <td><label>
                <input type="text" name="name" value="${requestScope.user.name}">
            </label></td>
            <td><label>
                <input type="text" name="email" value="${requestScope.user.email}">
            </label></td>
            <td><label>
                <input type="text" name="telephone" value="${requestScope.user.telephone}">
            </label></td>
        </tr>
    </table>
    <input formaction="UpdateServlet?id=${requestScope.user.id}" type="submit" value="提交" class="but">
</form>
</body>
</html>

10.2、编写UpdateServlet
package com.example.web;

import com.example.bean.User;
import com.example.service.UserServiceImpl;
import com.example.service.impl.UserService;

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;

/**
 * @program: ManageResourceSystem
 * @description: 修改图书的业务
 * @author: Mr.Zeng
 * @create: 2021-05-27 08:02
 **/
@WebServlet(urlPatterns = "/UpdateServlet")
public class UpdateServlet extends HttpServlet {

    UserService userService1 = new UserServiceImpl();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求参数
        String id = req.getParameter("id");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String name = req.getParameter("name");
        String email = req.getParameter("email");
        String telephone = req.getParameter("telephone");

        int i = 0;
        try {
            i = Integer.parseInt(id);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        //修改用户
        userService1.update(new User(i, username, password, name, email, telephone));

        //转到用户信息列表页面
        resp.sendRedirect("UserServlet");
    }
}

Tip :当我们要修改用户信息时,一般首先会展示原本用户的信息,在这里编写一个获取当前修改用户信息的OneUserServlet。

  • 编写OneUserServlet

    package com.example.web;
    
    import com.example.bean.User;
    import com.example.service.UserServiceImpl;
    import com.example.service.impl.UserService;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.annotation.*;
    import java.io.IOException;
    
    @WebServlet(urlPatterns = "/OneUserServlet")
    public class OneUserServlet extends HttpServlet {
    
        UserService userService1 = new UserServiceImpl();
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doGet(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取用户id
            String id = request.getParameter("id");
    
            int i = 0;
            try {
                i = Integer.parseInt(id);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
            //通过UserService查询此id用户信息
            User user = userService1.queryById(i);
    
            //把全部信息保存到Request域中
            request.setAttribute("user",user);
    
            //请求转发到update_list.jsp
            request.getRequestDispatcher("/update_list.jsp").forward(request, response);
        }
    }
    
    

11、删除用户

11.1、编写DeleteServlet
package com.example.web;

import com.example.service.UserServiceImpl;
import com.example.service.impl.UserService;

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;

/**
 * @program: ManageResourceSystem
 * @description: 删除数据的业务
 * @author: Mr.Zeng
 * @create: 2021-05-27 08:02
 **/
@WebServlet(urlPatterns = "/DeleteServlet")
public class DeleteServlet extends HttpServlet {

    UserService userService1 = new UserServiceImpl();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求的参数ID
        String id = req.getParameter("id");
        int i = 0;
        try {
            i = Integer.parseInt(id);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        //调用userServlet1的deleteById方法
        userService1.deleteById(i);

        //重返信息列表
        resp.sendRedirect("UserServlet");
    }
}

12、整体展示

  1. 登入页面
    在这里插入图片描述

  2. 列表页面
    在这里插入图片描述

  3. 添加页面

在这里插入图片描述

  1. 修改页面
    在这里插入图片描述
Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐