• Servlet | 连接数据库、使用IDEA工具开发Servlet


    ✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!

    📃个人主页:@每天都要敲代码的个人主页

    🔥系列专栏:Web后端 | Servlet

    目录

    一:servlet中编写JDBC程序连接数据库

    二:使用IDEA工具开发Servlet


    一:servlet中编写JDBC程序连接数据库

    承接上文,我们知道javaweb程序员只需要编写Servlet接口的实现类,然后将其注册到web.xml文件中即可。所以我们不妨在创建一个ConnectJDBC类,用来连接MySQL数据库,在service(ServletRequest request,ServletResponse response)方法中进行JDBC代码的编写即可

    第一步:实现Servlet接口,在service()方法中编写JDBC代码

    1. package com.bjpowernode.servlet;
    2. import javax.servlet.Servlet;
    3. import javax.servlet.ServletException;
    4. import javax.servlet.ServletRequest;
    5. import javax.servlet.ServletResponse;
    6. import javax.servlet.ServletConfig;
    7. import java.io.IOException;
    8. import java.io.PrintWriter;
    9. import java.sql.*;
    10. public class ConnectJDBC implements Servlet{
    11. // 5个方法
    12. public void init(ServletConfig config) throws ServletException{
    13. }
    14. public void service(ServletRequest request,ServletResponse response)
    15. throws ServletException , IOException{
    16. // 设置识别代码的类型
    17. response.setContentType("text/html");
    18. // 设置打印到浏览器上
    19. PrintWriter out = response.getWriter();
    20. // 编写JDBC代码,进行链接数据库代码的编写
    21. Connection con = null;
    22. PreparedStatement ps = null;
    23. ResultSet rs = null;
    24. try {
    25. //1、注册驱动
    26. Class.forName("com.mysql.jdbc.Driver");
    27. //2、获取连接
    28. String url = "jdbc:mysql://localhost:3306/bjpowernode";
    29. String username = "root";
    30. String password = "***";
    31. con = DriverManager.getConnection(url,username,password);
    32. //3、获取预编译的数据库操作对象
    33. String sql = "select empno,ename,sal from emp";
    34. ps = con.prepareStatement(sql);
    35. //4、执行sql
    36. rs = ps.executeQuery();
    37. //5、处理查询结果集
    38. while(rs.next()){ //tru表示有数据
    39. //取数据,getString(列的下标)
    40. String empno = rs.getString("empno");
    41. String ename = rs.getString("ename");
    42. String sal = rs.getString("sal");
    43. System.out.println(empno+","+ename+","+sal);
    44. // 在浏览器上进行打印
    45. out.print(empno+","+ename+","+sal+"
      "
      );
    46. }
    47. } catch (Exception e) {
    48. e.printStackTrace();
    49. }finally {
    50. //6、释放资源
    51. if (rs != null) {
    52. try {
    53. rs.close();
    54. } catch (SQLException e) {
    55. e.printStackTrace();
    56. }
    57. }
    58. if (ps != null) {
    59. try {
    60. ps.close();
    61. } catch (SQLException e) {
    62. e.printStackTrace();
    63. }
    64. }
    65. if (con != null) {
    66. try {
    67. con.close();
    68. } catch (SQLException e) {
    69. e.printStackTrace();
    70. }
    71. }
    72. }
    73. }
    74. public void destroy(){
    75. }
    76. public String getServletInfo(){
    77. return "";
    78. }
    79. public ServletConfig getServletConfig(){
    80. return null;
    81. }
    82. }

    第二步:进行编译通过后,把.class文件放到classes中;然后进行配置文件web.xml的更改

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
    5. https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
    6. version="5.0"
    7. metadata-complete="true">
    8. <servlet>
    9. <servlet-name>jdbcservlet-name>
    10. <servlet-class>com.bjpowernode.servlet.ConnectJDBCservlet-class>
    11. servlet>
    12. <servlet-mapping>
    13. <servlet-name>jdbcservlet-name>
    14. <url-pattern>/Connectionurl-pattern>
    15. servlet-mapping>
    16. web-app>

    第三步:因为我们连接了数据库,所以需要数据库的驱动;把MySQL的jar包放入lib里面

    第四步:先startup启动Tomcat服务器,然后访问我们的Web应用:http://127.0.0.1:8080/crm/Connection ;我们就设置让它在控制台和浏览器上都打印

    当然也可以通过超链接的方式进行访问,修改index.html代码:

    1. html>
    2. <html>
    3. <head>
    4. <title>index pagetitle>
    5. head>
    6. <body>
    7. <a href="http://127.0.0.1:8080/crm/Connection">ConnectJDBCa>
    8. body>
    9. html>

    在Servlet中连接数据库,总结:

    (1)Servlet是Java程序,所以在Servlet中完全可以编写JDBC代码连接数据库。

    (2)在一个webapp中去连接数据库,需要将驱动jar包放到WEB-INF/lib目录下。(com.mysql.jdbc.Driver 这个类就在驱动.jar包当中)

    二:使用IDEA工具开发Servlet

    使用IDEA集成开发工具开发Servlet

    • 第一步:New Project(先创建一个Empty Project【空工程】,然后在空工程下新建Module【模块】,也可以直接新建非空的Project),这个Empty Project起名为:javaweb(只是一个名字,一般情况下新建的Project的名字最好和目录的名字一致)

    • 第二步:新建模块(File --> new --> Module...)

      • 这里就先新建一个普通的JavaSE模块(这里先不要新建Java Enterprise模块)

      • 这个Module自动会被放在javaweb的project下面。

      • 这个Module起名:servlet01

    • 第三步:让Module变成JavaEE的模块(让Module变成webapp的模块,符合webapp规范,符合Servlet规范的Module)

      • 在Module上点击右键:Add Framework Support...(添加框架支持

      • 在弹出的窗口中,选择Web Application(选择的是webapp的支持)

      • 选择了这个webapp的支持之后,IDEA会自动给你生成一个符合Servlet规范的webpp目录结构。

      • 重点注意:在IDEA工具中根据Web Application模板生成的目录中有一个web目录,这个目录就代表webapp的根

    • 第四步(非必须):根据Web Application生成的资源中有index.jsp文件,还没有学,可以暂且先删除这个index.jsp文件。

    • 第五步:编写Servlet(StudentServlet)

      • class StudentServlet implements Servlet(com.bjpowernode.javaweb.servlet包下的);会报错,因为JDK中没有Servlet,它是属于JavaEE的,所以我们需要导入jar包!

      • 这个时候发现Servlet.class文件没有。怎么办?将CATALINA_HOME/lib/servlet-api.jar和jsp-api.jar这两个jar包添加到classpath当中(这里的classpath说的是IDEA的classpath)

        File --> Project Structrue(工程结构) --> Modules --> + 加号 --> Add JARS....(目前只加进去连那两个jar包,不需要把整个库都加进去)
      • 实现jakarta.servlet.Servlet接口中的5个方法。 

    • 第六步:在Servlet当中的service方法中编写业务代码(这里就是连接数据库了)

    1. package com.bjpowernode.javaweb.servlet;
    2. import javax.servlet.*;
    3. import java.io.IOException;
    4. import java.io.PrintWriter;
    5. import java.net.ConnectException;
    6. import java.sql.*;
    7. /**
    8. * @Author:朗朗乾坤
    9. * @Package:com.bjpowernode.javaweb.servlet
    10. * @Project:JavaWeb
    11. * @name:StudentServlet
    12. * @Date:2022/10/13 17:45
    13. */
    14. public class StudentServlet implements Servlet {
    15. @Override
    16. public void init(ServletConfig servletConfig) throws ServletException {
    17. }
    18. @Override
    19. public ServletConfig getServletConfig() {
    20. return null;
    21. }
    22. @Override
    23. public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
    24. // 设置响应的内容类型
    25. response.setContentType("text/html");
    26. // 在浏览器上进行打印
    27. PrintWriter out = response.getWriter();
    28. // 连接数据库
    29. Connection conn = null;
    30. PreparedStatement ps = null;
    31. ResultSet rs = null;
    32. try {
    33. // 注册驱动
    34. Class.forName("com.mysql.jdbc.Driver");
    35. // 获取连接
    36. String url = "jdbc:mysql://localhost:3306/bjpowernode";
    37. String username = "root";
    38. String password = "***";
    39. conn = DriverManager.getConnection(url,username,password);
    40. // 获取数据库预编译对象
    41. String sql = "select empno,ename,sal from emp";
    42. ps = conn.prepareStatement(sql);
    43. // 执行sql
    44. rs = ps.executeQuery();
    45. // 处理查询结果集
    46. while(rs.next()){
    47. System.out.println(rs.getString("empno"));
    48. System.out.println(rs.getString("ename"));
    49. System.out.println(rs.getString("sal"));
    50. // 在浏览器上打印
    51. out.print("empno"+","+"ename"+","+"sal"+"
      "
      );
    52. }
    53. } catch (ClassNotFoundException e) {
    54. e.printStackTrace();
    55. } catch (SQLException e) {
    56. e.printStackTrace();
    57. }finally {
    58. // 释放资源
    59. if (rs != null) {
    60. try {
    61. rs.close();
    62. } catch (SQLException e) {
    63. e.printStackTrace();
    64. }
    65. }
    66. if (ps != null) {
    67. try {
    68. ps.close();
    69. } catch (SQLException e) {
    70. e.printStackTrace();
    71. }
    72. }
    73. if (conn != null) {
    74. try {
    75. conn.close();
    76. } catch (SQLException e) {
    77. e.printStackTrace();
    78. }
    79. }
    80. }
    81. }
    82. @Override
    83. public String getServletInfo() {
    84. return null;
    85. }
    86. @Override
    87. public void destroy() {
    88. }
    89. }

    第七步:在WEB-INF目录下新建了一个子目录:lib(这个目录名必须是全部小写的lib),并且将连接数据库的驱动jar包放到lib目录下。 直接复制粘贴即可:

    第八步:在web.xml文件中完成StudentServlet类的注册。(请求路径和Servlet之间对应起来)  

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0">
    6. <servlet>
    7. <servlet-name>StudentServletservlet-name>
    8. <servlet-class>com.bjpowernode.javaweb.servlet.StudentServletservlet-class>
    9. servlet>
    10. <servlet-mapping>
    11. <servlet-name>StudentServletservlet-name>
    12. <url-pattern>/servlet/studenturl-pattern>
    13. servlet-mapping>
    14. web-app>

     第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的StudentServlet。

    • index.html这个文件不能放到WEB-INF目录里面,只能放到WEB-INF目录外面(是同级目录关系)。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>student pagetitle>
    6. head>
    7. <body>
    8. <a href="xmm/servlet/student">student lista>>
    9. body>
    10. html>
    • 第十步:让IDEA工具去关联Tomcat服务器。关联的过程当中将webapp部署到Tomcat服务器当中。

      • IDEA工具右上角,绿色小锤子右边有一个:Add Configuration(低版本的IDEA是EditConfiguration)

      • 点击左上角加号+,点击Tomcat Server --> local

      • 在弹出的界面中设置服务器Server的参数(基本上不用动)

      • 在当前窗口中有一个Deployment(点击这个用来部署webapp),继续点击加号,选择Artifat部署即可。

      • 修改 Application context为:/xmm

    • 第十一步:启动Tomcat服务器

      • 在右上角有绿色的箭头,或者绿色的小虫子,点击这个绿色的小虫子,可以采用debug的模式启动Tomcat服务器。

      • 开发中建议适用debug模式启动Tomcat

    • 第十二步:打开浏览器,在浏览器地址栏上输入:http://localhost:8080/xmm/index.html就能进行访问打印,代码中选择的是在窗口和浏览器上都打印:

  • 相关阅读:
    如何从 Ubuntu 卸载 Redis
    协程(二)——kotlin中协程启动的条件
    【C++】C++智能指针
    拥抱 Spring 全新 OAuth 解决方案
    【附源码】计算机毕业设计SSM网上购物系统
    从零开始写 Docker(三)---基于 cgroups 实现资源限制
    salesforce零基础学习(一百三十一)Validation 一次的bypass设计
    详解医疗大数据的分析与应用
    Amazon SageMaker:探索AI绘画云端部署新方案
    redis 源码分析:Jedis 哨兵模式连接原理
  • 原文地址:https://blog.csdn.net/m0_61933976/article/details/127191759