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

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

🔥系列专栏:Web后端 | Servlet

目录

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

二:使用IDEA工具开发Servlet


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

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

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

package com.bjpowernode.servlet;

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletConfig;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;


public class ConnectJDBC implements Servlet{

	// 5个方法
	public void init(ServletConfig config) throws ServletException{
	
	}

	public void service(ServletRequest request,ServletResponse response)
		throws ServletException , IOException{
		// 设置识别代码的类型
		response.setContentType("text/html");
        // 设置打印到浏览器上
		PrintWriter out = response.getWriter();

		// 编写JDBC代码,进行链接数据库代码的编写
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
            //1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、获取连接
			String url = "jdbc:mysql://localhost:3306/bjpowernode";
			String username = "root";
			String password = "***";
            con = DriverManager.getConnection(url,username,password);
            //3、获取预编译的数据库操作对象
			String sql = "select empno,ename,sal from emp";
            ps = con.prepareStatement(sql);
            //4、执行sql
            rs = ps.executeQuery(); 
            //5、处理查询结果集
            while(rs.next()){ //tru表示有数据
                //取数据,getString(列的下标)
				String empno = rs.getString("empno");
                String ename = rs.getString("ename");
                String sal = rs.getString("sal");
                System.out.println(empno+","+ename+","+sal);

				// 在浏览器上进行打印
				out.print(empno+","+ename+","+sal+"<br>"); 

            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //6、释放资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
 
            if (ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
 
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
	}

	public void destroy(){
	
	}

	public String getServletInfo(){
		return "";
	}

	public ServletConfig getServletConfig(){
		return null;
	}
}

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

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
  version="5.0"
  metadata-complete="true">


	<servlet>
		<servlet-name>jdbc</servlet-name>
		<servlet-class>com.bjpowernode.servlet.ConnectJDBC</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>jdbc</servlet-name>
		<url-pattern>/Connection</url-pattern>
	</servlet-mapping>
	
</web-app>

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

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

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

<!doctype html>
<html>
	<head>
		<title>index page</title>
	</head>
	<body>
		<a href="http://127.0.0.1:8080/crm/Connection">ConnectJDBC</a>
	</body>
</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方法中编写业务代码(这里就是连接数据库了)

package com.bjpowernode.javaweb.servlet;

import javax.servlet.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.sql.*;

/**
 * @Author:朗朗乾坤
 * @Package:com.bjpowernode.javaweb.servlet
 * @Project:JavaWeb
 * @name:StudentServlet
 * @Date:2022/10/13 17:45
 */
public class StudentServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        // 设置响应的内容类型
        response.setContentType("text/html");
        // 在浏览器上进行打印
        PrintWriter out = response.getWriter();
        // 连接数据库
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;


        try {
            // 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获取连接
            String url = "jdbc:mysql://localhost:3306/bjpowernode";
            String username = "root";
            String password = "***";
            conn = DriverManager.getConnection(url,username,password);
            // 获取数据库预编译对象
            String sql = "select empno,ename,sal from emp";
            ps = conn.prepareStatement(sql);
            // 执行sql
            rs = ps.executeQuery();
            // 处理查询结果集
            while(rs.next()){
                System.out.println(rs.getString("empno"));
                System.out.println(rs.getString("ename"));
                System.out.println(rs.getString("sal"));

                // 在浏览器上打印
                out.print("empno"+","+"ename"+","+"sal"+"<br>");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 释放资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

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

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

<?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>StudentServlet</servlet-name>
        <servlet-class>com.bjpowernode.javaweb.servlet.StudentServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>StudentServlet</servlet-name>
        <url-pattern>/servlet/student</url-pattern>
    </servlet-mapping>
</web-app>

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student page</title>
</head>
<body>
    <!--前面的/xmm是项目名,先写死;目前没有学JSP无法动态获取-->
    <a href="xmm/servlet/student">student list</a>>
</body>
</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就能进行访问打印,代码中选择的是在窗口和浏览器上都打印:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐