JavaWEB五: Servlet 之 通过jdbc连接数据库

Servlet一:通过jdbc连接数据库

  1. 创建基于tomcat的网页模块

    参考:JavaWEB四:在IDEA(21.1版本)下部署Tomcat8

  2. 创建add.html文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>add</title>
    </head>
    <body>
        <form action="add" method="post">
            序号:<input type="text" name="cust_id"/><br/>
            姓名:<input type="text" name="cust_name"/><br/>
            邮箱:<input type="text" name="cust_email"/><br/>
            生日:<input type="text" name="cust_birth"/><br/>
            <input type="submit" value="添加"/>
        </form>
    </body>
    </html>
    
  3. 增加依赖

    在这里插入图片描述

    在这里插入图片描述

  4. 创建接收组件
    package com.atguigu.servlets;
    
    import com.atguigu.bean.Customers;
    import com.atguigu.jdbcutils.JdbcUtils;
    import com.atguigu.optimization.CustomerDAOImpl;
    import javax.servlet.ServletException;
    import javax.servlet.http.*;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.sql.Connection;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @author e_n
     * @version 1.0.0
     * @ClassName AddServlet.java
     * @Description 用于接收客户端发来的组件
     * @CreateTime 2022/02/26 22:37
     */
    public class AddServlet extends HttpServlet {
        @Override
        /**
         * @title doPost
         * @Description 获取组件内的各参数
         * @author e_n
         * @param req
         * @param resp
         * @return void
         * @throws
         * @CreateTime 2022/2/26 22:48
         */
        public void doPost(HttpServletRequest req, HttpServletResponse resp) {
            Connection conn = null;
            try {
                // post方式下,设置编码,防止中文乱码
                req.setCharacterEncoding("UTF-8");
                String cust_name = req.getParameter("cust_name");
                String idStr = req.getParameter("cust_id");
                int cust_id = Integer.parseInt(idStr);
                String cust_email = req.getParameter("cust_email");
                String cust_birth = req.getParameter("cust_birth");
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                Date date = format.parse(cust_birth);
                Customers cust = new Customers(cust_id, cust_name, cust_email,date);
                conn = JdbcUtils.getConnection();
                CustomerDAOImpl dao = new CustomerDAOImpl();
                dao.insert(conn,cust);
                System.out.println("添加成功");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                JdbcUtils.closeResource(conn,null);
            }
        }
    }
    
  5. 修改web.xml文件

    xml文件的作用

    ​ ① 用户发请求:action=add
    ​ ② 在项目中的web.xml中的< servlet-mapping>中找到与用户请求相对应的url-pattern = /add
    ​ ③ 找到和< servlet-mapping>中的servlet-name相同的< servlet>
    ​ ④ 获取< servlet>中的< servlet-class>,这样就使得用户的请求同Java类对应上了
    ​ 用户发送的是post请求(method=post),因此tomcat服务器会自动执行对应Java类中的doPost方法。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <servlet>
            <servlet-name>AddServlet</servlet-name>
            <servlet-class>com.atguigu.servlets.AddServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>AddServlet</servlet-name>
            <url-pattern>/add</url-pattern>
        </servlet-mapping>    
    </web-app>
    
  6. 逻辑图

    在这里插入图片描述

  7. 遇到的问题

    在点击提交按钮后,报了空指针异常(JdbcUtils类中),原因是使用了ClassLoader

    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties")
    

    但是在JavaEE里面,要通过WebappClassLoader才能加载出来,使用 “当前类.class.getClassLoader()…”

    InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties")
    
参考资料
  1. web项目加载配置文件报空指针异常,不能使用ClassLoader加载_jay_4am的博客-CSDN博客
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

e_nanxu

感恩每一份鼓励-相逢何必曾相识

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值