用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现

分层解耦思想

用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第1张图片

实现步骤

首先准备数据

  • 表结构

    -- 创建表
    create table user (
    	id primary key auto_increment comment "用户编号",
       name varchar(20) not null comment "用户姓名",
       password varchar(20) not null comment "用户密码" 
    );
    
  • 表数据

    -- 插入数据
    insert into user values(null,"张三","123"),(null,"李四","456"),(null,"王五","123");
    

创建一个JavaEE项目

用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第2张图片

创建package,具体查看下图

用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第3张图片

引入jar包(7个)

用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第4张图片
用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第5张图片

准备数据源

  • druid.properties

    # 名称不要改
    url=jdbc:mysql://localhost:3306/db9?characterEncoding=utf-8
    # 驱动类名称
    dirverClassName=com.mysql.jdbc.Driver
    # 用户名
    username=root
    # 密码
    password=root
    # 最大的链接数量,最大为20
    maxActive=20
    # 初始化的连接池时当中链接的数量
    initialSize=10
    # 连接的超时时间 3000 代表3000毫秒 ,若3秒中未连接就报错,申请连接过了多长时间若没获取到就报错
    maxWait=3000
    

编写代码

  • JdbcUtils工具类

    public class JdbcUtils {
        // 变量的提升
        private static DataSource ds;
        // 读取配置文件
        static {
            try {
                // 创建Properties集合对象去
                Properties pro = new Properties();
                // 将配置文件中的内容加载到properties集合中去
                InputStream ios = JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties");
                System.out.println(ios != null?"获取到了...." : ios);
                pro.load(ios);
                // 获取链接池对象
                ds = DruidDataSourceFactory.createDataSource(pro);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // 获取链接对象
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
        // 获取链接池对象
        public static DataSource getDataSource() {
            return ds;
        }
    
        // 释放链接,先开启后关闭
        public static void close(ResultSet rs, Statement st, Connection conn) {
            if(rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(st != null) {
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void close(Statement st, Connection conn) {
            close(null, st, conn);
        }
    }
    
  • form.jsp表单

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        操作user表
    
    
    
    

    添加

    姓名:
    密码:


    删除

    id:
    <%-- return delFun(); --%>

    修改

    id   :
    姓名:
    密码:

实体类

  • User

    这里没用到,但实际开发过程中是有的

    public class User {
        /**
         * -- 创建表
         * create table user (
         * 	id primary key auto_increment comment "用户编号",
         *    name varchar(20) not null comment "用户姓名",
         *    password varchar(20) not null comment "用户密码" 
         * );
         */
        private Integer id;
        private String name;
        private String password;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }
    
    

Servlet层

  • DelUserServlet类

    @WebServlet("/delUserServlet")
    public class DelUserServlet extends HttpServlet {
        //接口: I表名Service     实现类:表名ServiceImpl  快捷键 :Alt+Enter
        //servlet层调用service层
        private IUserService userService = new UserServiceImpl();
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 获取请求参数
            String id = request.getParameter("id");
            // 编写Jdbc代码
            int resultLines = userService.removeUserById(id);
    
            // 处理结果
            System.out.println(resultLines > 0 ? "删除成功" : "删除失败");
        }
    }
    
  • AddUserServlet类

    @WebServlet("/addUserServlet")
    public class AddUserServlet extends HttpServlet {
        // 接口: I表名Service     实现类:表名ServiceImpl  快捷键 :Alt+Enter
        // servlet层调用service层
        private IUserService userService = new UserServiceImpl();
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 获取请求参数
            // 用户名
            String username = request.getParameter("name");
            // 密码
            String password = request.getParameter("psw");
            // 调用方法
            int resultLines = userService.addUser(username,password);
            // 处理结果
            System.out.println(resultLines > 0 ? "添加成功": "添加失败");
    
        }
    }
    
  • UpdateUserServlet类

    @WebServlet("/updateUserServlet")
    public class UpdateUserServlet extends HttpServlet {
        //接口: I表名Service     实现类:表名ServiceImpl  快捷键 :Alt+Enter
        //servlet层调用service层
        private IUserService userService = new UserServiceImpl();
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 获取请求参数
            String id = request.getParameter("id");
            String username = request.getParameter("name");
            String password = request.getParameter("psw");
            // 调用方法
            int resultLines = userService.updateUserById(id,username,password);
            // 处理结果
            System.out.println(resultLines > 0 ? "修改成功" : "修改失败");
    
        }
    }
    

Service层

  • IUserService接口

    public interface IUserService {
    
        // 定义一个updateUserById方法,实现根据用户id实现修改用户
        int updateUserById(String id, String username, String password);
    
        // 定义一个addUser方法,实现添加用户
        int addUser(String username, String password);
    
        // 定义一个removeUserById方法,实现根据用户id删除用户
        int removeUserById(String id);
    }
    
  • UserServiceImpl实现类

    /*
     * 方法名命名习惯;
     * service: add开头  find
     * dao:insert   query /select
     *
     * */
    public class UserServiceImpl implements IUserService {
        //调用dao层 ;注意包名和类名严格。 dao层接口:I表名Dao   实现类:表名DaoImpl
        private IUserDao userDao = new UserDaoImpl();
    
        @Override
        public int updateUserById(String id, String username, String password) {
            return userDao.updateUserById(id,username,password);
        }
    
        @Override
        public int addUser(String username, String password) {
            return userDao.insertUser(username,password);
        }
    
        @Override
        public int removeUserById(String id) {
            return userDao.delUserById(id);
        }
    }
    

Dao层

  • IUserDao接口

    public interface IUserDao {
    
        // 定义一个updateUserById方法,实现根据用户id实现修改用户
        int updateUserById(String id, String username, String password);
    
        // 定义一个insertUser方法,实现添加用户
        int insertUser(String username, String password);
    
        // 定义一个delUserById方法,实现根据用户id删除用户
        int delUserById(String id);
    }
    
  • UserDaoImpl实现类

    public class UserDaoImpl implements IUserDao {
        // 编写Jdbc代码
        // 创建JdbcTemplate对象
        private JdbcTemplate jtl = new JdbcTemplate(JdbcUtils.getDataSource());
        @Override
        public int updateUserById(String id, String username, String password) {
            // 定义sql
            String sql = "update user set username = ? , password = ? where id = ?";
            // 执行sql并返回结果
            return jtl.update(sql, username, password, id);
        }
    
        @Override
        public int insertUser(String username, String password) {
            // 定义DML语句
            String sql = "insert into user(username,password) values(?,?)";
            // 执行sql语句
            return  jtl.update(sql,username, password);
        }
    
        @Override
        public int delUserById(String id) {
            // 定义sql
            String sql = "delete from user where id = ?";
            return jtl.update(sql, id);
        }
    }
    

以上步骤都完成后,开启服务器,打开浏览器,地址栏输入"http://localhost:8080/虚拟目录/form.jsp",我这里的虚拟目录是/UserManagerSystem

  • 删除成功

    用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第6张图片

  • 添加成功
    用JdbcTemplate+HttpServlet+form表单技术实现操作User表(增删改),要求使用分层解耦思想实现_第7张图片

  • 修改成功

    在这里插入图片描述

你可能感兴趣的:(JavaWeb)