基于IDEA的JAVAWeb-Servlet开发,实现网页对MySQL进行简单的CRUD

发布于:2022-11-27 ⋅ 阅读:(229) ⋅ 点赞:(0)

目录

一、实现功能

二、 IDEA开发环境配置及代码编写(共六步)

三、项目演示

        1. 输入地址:http://127.0.0.1:8080/xmm/student.html

        2. 展示设定页面​编辑

        3. 点击student.list会访问实现的StudentServlet类中的service方法,该方法会通过jdbc连接MySQL数据库执行下面4条SQL语句:

        4.  结果返回:

四、结束语


一、实现功能

        基于IDEA进行简单的javaweb开发,主要实现Servlet的service方法,借助jdbc对MySQL进行删除表格、创建表格、新增记录、查询记录等功能。目的是为了熟悉并记录基础的javaweb开发。

        下面分别从IDEA配置、目录结构、代码编写、项目演示等方面进行讲解。

        版本:IEDA:2022.1; Tomcate:10.0.27; JDBC:mysql-connector-java-8.0.28.jar

二、 IDEA开发环境配置及代码编写(共六步)

  • 第一步:IDEA中新增项目(我命名为javaweb),并新增一个模块module(我命名为servlet01),在module处鼠标右键,点击“add Framwork Support”,选择其中的“Web Application”,最终生成的工程文件目录结构符合JavaEE规范,该web目录如下图所示:
  •  第二步:在src中新增package(我命名为com.bjpowernode.javaweb.servlet),在package中编写业务代码(实现Servlet接口,满足对MySQL数据库的增删改查功能),我这里命名为StudentServlet.class
package com.bjpowernode.javaweb.servlet;

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


public class StudentServlet implements Servlet{
    //Servlet接口共有5个方法,此处只实service业务方法
	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 conn = null;
		PreparedStatement ps = null;
		Statement stmt = null;
		ResultSet rs = null;
		try{
			// 注册驱动 (com.mysql.jdbc.Driver,这个已过时。)
			// 新版本中建议使用:com.mysql.cj.jdbc.Driver驱动。
			Class.forName("com.mysql.cj.jdbc.Driver");
			// 获取连接
			String url = "jdbc:mysql://localhost:3306/bjpowernode";
			String user = "root";
			String password = "******";
			conn = DriverManager.getConnection(url,user,password);
			// 3. 编写sql语句
			String dropTable = "drop table if exists t_javaweb";
			String createTable = "create table if not exists t_javaweb(" +
					"student_id int," +
					"student_name varchar(255)," +
					"sex char(6)," +
					"age int(3)," +
					"email varchar(255)," +
					"address varchar(255))";
			String insertData = "insert into t_javaweb values(001, 'Kate', 'f', 17, 'Kate@edu.csu.cn', '输入了')";
			String queryData = "select * from t_javaweb";
			Statement st = conn.createStatement();
			stmt = conn.createStatement();
			//执行sql
			//4. 执行sql
			int row1 = st.executeUpdate(dropTable);
			int row2 = st.executeUpdate(createTable);
			int row3 = st.executeUpdate(insertData);
			ps = conn.prepareStatement(queryData);
			// 执行SQL
			rs = ps.executeQuery();
			// 处理查询结果集
			while(rs.next()){
				String no = rs.getString("student_id");
				String name = rs.getString("student_name");
				//System.out.println(no + "," + name);
				out.print(no + "," + name + "<br>");
				System.out.println("添加数据成功");
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			// 释放资源
			if(rs != null){
				try{
					rs.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			if(ps != null){
				try{
					ps.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			if(conn != null){
				try{
					conn.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
	}

	public void destroy(){
	
	}

	public String getServletInfo(){
		return "";
	}

	public ServletConfig getServletConfig(){
		return null;
	}
}
  • 第三步:在web.xml(第一步自动生成的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>

该配置含义如下(由下向上):首先通过servlet-mapping:当用户访问/servlet/student路径,就会找到名称为studentServlet的servlet。然后再根据servlet找到名称为studentServlet的class地址:com.bjpowernode.javaweb.servlet.StudentServlet。也就将将实现类的请求路径与Servlet对应起来了。每个实现类用不同的请求路径进行对应。

  • 第四步:添加jdbc驱动包、servlet、jsp包。
    • 在生成的web->WEB_INF文件夹中新增文件夹lib,将本地文件中的jdbc包(我这里是mysql-connector-java-8.0.28.jar),复制到该位置(不要复制可展开的jar包)
    • 点击File->Project Structure->Modules->增加jsp-api.jar和servlet-api.jar包(这两个路径在本地tomcat服务器文件夹的->lib文件夹中)

  •  第五步:利用超链接访问所实现的servlet业务代码。在在生成的web->WEB_INF文件夹中新增html文件(我命名为student.html),即产生一个student page页面,点击student list,即可实现:新增一张表,并增加数据,并读取增加的数据。这里路径名省略了ip地址和port号,其中项目名自定义为:/xmm(注意要与第六步统一)。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student page</title>
</head>
<body>
    <!--这里的项目名暂时无法动态获取,先写死-->
    <a href="/xmm/servlet/student">student list</a>
</body>
</html>
  • 第六步:让IDEA工具关联Tomcat服务器,奖webapp部署到Tomcat服务器中。
    • 点击Add Configuration
    • 左上角+号,选择Tomcat Server->local
    • 在弹出的页面中设置服务器Server的参数(基本上是默认)
      •  在Deployment页面,点击+号
    • 添加tomcat文件夹(不是本项目,而是tomcat所在文件夹)中的webapps->ROOT文件夹,作为“根”,那么自写的webapp就会部署到Tomcat服务器中(在Tomcat文件夹中,即部署到了服务器中)
      • 点击“小铅笔”符号,添加tomcat文件中的webapps文件夹,那么自写的webapp就会部署到Tomcat服务器中(每次运行完文件,可以在out文件夹中看到)
    • 将application context改为:/xmm,即本webapp的名字(注意要与第五步统一)
  • 第七步:最终目录结构如下所示:

三、项目演示

        1. 输入地址:http://127.0.0.1:8080/xmm/student.html

        2. 展示设定页面

        3. 点击student.list会访问实现的StudentServlet类中的service方法,该方法会通过jdbc连接MySQL数据库执行下面4条SQL语句:

//删除表t_javaweb
String dropTable = "drop table if exists t_javaweb";
//创建表t_javaweb
String createTable = "create table if not exists t_javaweb(" +
					"student_id int," +
					"student_name varchar(255)," +
					"sex char(6)," +
					"age int(3)," +
					"email varchar(255)," +
					"address varchar(255))";
//新增1条记录
String insertData = "insert into t_javaweb values(001, 'Kate', 'f', 17, 'Kate@edu.csu.cn', '输入了')";
//查询表t_javaweb中记录
String queryData = "select * from t_javaweb";

        4.  结果返回:

                1. 浏览器

                

                2.  Tomcat服务器

                3.  MySQL服务器

四、结束语

        至此已经比较好的完成了,这个小demo,那么诸如后台管理系统之流的系统,都是基于这篇blog介绍的原理进行展开。只不过要考虑美观性、交互性以及系统性能等问题。这些问题的考虑及实现,留待后续介绍。


PS:需要项目代码的,在评论区留下邮箱号,看到之后会回复~


网站公告

今日签到

点亮在社区的每一天
去签到