0
点赞
收藏
分享

微信扫一扫

在Servlet中连接数据库查询学生信息

福福福福福福福福福 2022-03-31 阅读 51

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

编写jdbc代码

package servlet;

import jakarta.servlet.*;

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

public class StudentServlet implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        // 设置响应的内容类型是普通文本或html代码,可以让数据库数据直接显示在页面上
        servletResponse.setContentType("text/html");
        PrintWriter out = servletResponse.getWriter();

        //编写jdbc代码 ,连接数据库,查询所有学生信息
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            //第一步:注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            //第二部:获取连接
            String url = "jdbc:mysql://localhost:3306/bjpowernode";
            String user = "root";
            String password = "123";
            conn = DriverManager.getConnection(url,user,password);

            // 第三步:取预编译数据库的操作对象
            String sql = "select no,name from t_student";

            //第四步执行sql
            ps = conn.prepareStatement(sql);

            //处理查询结果集
            rs = ps.executeQuery();
            while (rs.next()){
                String no = rs.getString("no");
                String name = rs.getString("name");
                out.println(no +", "+name +"<br>");
            }

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


    }

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

    @Override
    public void destroy() {

    }
}

将StudentServlet.class(带包名一起)拷贝到WEB-INF\classes目录下文件放入

WEB-INF\classes\servlet\StudentServlet.class

在web.xml文件中编写配置信息,让“请求路径”和“Servlet类名”关联在一起

<?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>student</servlet-name>
		<servlet-class>servlet.StudentServlet</servlet-class>
     </servlet>
     <servlet-mapping>
		<servlet-name>student</servlet-name>
		<url-pattern>/molu/abc/sdf</url-pattern>
     </servlet-mapping>
</web-app>

设置一个超链接intex1.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>intex page</title>
	</head>
	<body>
		<a href="/crm/molu/abc/sdf">Student Servlet</a>
		<!--http://127.0.0.1:8080/crm/molu/abc/sdf 前面的端口和ip地址都可以省略 -->
	</body>
</html>

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

启动Tomcat服务器

打开浏览器,在浏览器地址栏上输入url:http://127.0.0.1:8080/crm/intex1.html

 

 

 程序对数据库增删改后,页面刷新后,显示数据也会自动同步,实现动态网页

举报

相关推荐

0 条评论