jsp+jdbc+servlet实现对数据库的操作

环境配置

tomcat+MySQL

如果还没有配置好的可以通过以下链接来配置:

tomcat:https://www.cnblogs.com/gifted35/p/9775273.html

MySQL:https://www.cnblogs.com/gifted35/p/9775689.html

在命令行或者navicat中新建一个学生表student

表中有3个属性:ID(String), name(String), age(int)

在目录 WebContent/WEB-INF/lib 下粘贴 jdbc的jar包mysql-connector-java-5.1.9.jar

(如果出现报错可能是版本和MySQL的版本不符)

jsp页面

addStudnet.jsp

用来输入要操作的数据

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加学生</title>
</head>
<body>
	<form action="servletInsert" method="POST">
		<table>
			<tr>
				<td>请输入要添加的学生的ID</td>
				<td> <input name="ID" id="ID" type="text" maxlength="20"/> </td>
				<td>姓名</td>
				<td> <input name="name" id="name" type="text" maxlength="20"/> </td>
				<td>年龄</td>
				<td> <input name="age" id="age" type="text" maxlength="20"/> </td>
				<td>
					<input name="Submit" type="submit" value="添加" onclick=getParameter>
				</td>
			</tr>
		</table>
	</form>
	
	<form action="servletSelect" method="POST">
		请输入要查询的学号:
		<input name="ID" id="ID" type="text" maxlength="20"/>
		<input name="submit" type="submit" value="查询">
	</form>
	
	<form action="servletDelete" method="POST">
		请输入要删除的学生的姓名:
		<input name="name" id="name" type="text" maxlength="20"/>
		<input name="submit" type="submit" value="删除">
	</form>
</body>
</html>

result.jsp

用来展示查询操作的结果

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="jdbcTest.*"%>
<%@page import="java.util.ArrayList" %>
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<base href="<%=basePath%>">
<title>查询结果</title>
</head>
<body>
	<%
		ArrayList list = (ArrayList) request.getAttribute("list");
	%>
	<table>
		<tr>
			<td>学号</td>
			<td>姓名</td>
			<td>年龄</td>
		</tr>
		<% 
			for(int i=0;i<list.size();i++)
			{
				Student stu = (Student) list.get(i);
			
		%>
		<tr>
			<td><%= stu.getID()%></td>
			<td><%= stu.getName()%></td>
			<td><%= stu.getAge()%></td>
		</tr>
		<%
			}
		%>
	</table>
</body>
</html>

jdbc

Student.java

用来保存学生的信息

package jdbcTest;

public class Student {
	public static String id;
	public static String name;
	public static int age;
	
	public String getID()
	{
		return id;
	}
	public String getName()
	{
		return name;
	}
	public int getAge()
	{
		return age;
	}
	void setID(String myID)
	{
		id = myID;
	}
	void setName(String myName)
	{
		name = myName;
	}
	void setAge(int myAge)
	{
		age = myAge;
	}
}

jdbcInsert.java

实现连接数据库并插入数据

package jdbcTest;

import javax.servlet.http.HttpServlet;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class jdbcInsert extends HttpServlet
{
	public static String myID;
	private static String myName;
	private static int myAge;

	void setID(String id)
	{
		myID = id;
	}

	void setName(String name)
	{
		myName = name;
	}

	void setAge(int age)
	{
		myAge = age;
	}

	public static void insert()
	{
		try
		{
			// 加载数据库驱动,注册到驱动管理器
			Class.forName("com.mysql.jdbc.Driver");
			// 数据库连接字符串
			String url = "jdbc:mysql://127.0.0.1:3306/mysql_javaee";
			// 数据库用户名
			String username = "root";
			String password = "7890";
			Connection conn = DriverManager.getConnection(url, username, password);
			if (conn != null)
			{
				// 输出连接信息
				System.out.println("数据库连接成功1!");
				String sql = "INSERT INTO Student VALUE(?,?,?);";
				PreparedStatement ps = conn.prepareStatement(sql);

				ps.setString(1, myID);
				ps.setString(2, myName);
				ps.setInt(3, myAge);

				ps.executeUpdate();

				conn.close();
			} 
			else
			{
				// 输出连接信息
				System.out.println("数据库连接失败!");
			}

		} catch (ClassNotFoundException e)
		{
			e.printStackTrace();
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
}

jdbcSelect.java

实现连接数据库并查找数据

package jdbcTest;


import javax.servlet.http.HttpServlet;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class jdbcSelect extends HttpServlet {
	public static String myID;
	static int flag = 0;
	static ArrayList<Student> list = new ArrayList<Student>();

	void setID(String id)
	{
		myID = id;
	}
	
	//返回一个含有查询结果的列表
	ArrayList<Student> returnList()
	{
		return list;
	}
	
	public static void select() {
		try {
			// 加载数据库驱动,注册到驱动管理器
			Class.forName("com.mysql.jdbc.Driver");
			// 数据库连接字符串
			String url = "jdbc:mysql://127.0.0.1:3306/mysql_javaee";
			// 数据库用户名
			String username = "root";
			String password = "7890";
			Connection conn = DriverManager.getConnection(url, username, password);
			if (conn != null) {
				// 输出连接信息
				System.out.println("数据库连接成功2!");
				String sql = "SELECT * FROM student WHERE id=?;";
				PreparedStatement ps = conn.prepareStatement(sql);
				ps.setString(1, myID);
				ResultSet rs = ps.executeQuery();		//不需要加参数
				
				
	            while(rs.next()){
	            	flag = 1;
	                //rs.get+数据库中对应的类型+(数据库中对应的列别名)
	                String id = rs.getString("id");
	                String name = rs.getString("name");
	                int age = rs.getInt("age");
	                Student stu = new Student();
	                stu.setID(id);
	                stu.setName(name);
	                stu.setAge(age);
	                list.add(stu);
	            }
	            
				conn.close();
			} else {
				// 输出连接信息
				System.out.println("数据库连接失败!");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

jdbcDelete.java

实现连接数据库和删除数据

package jdbcTest;


import javax.servlet.http.HttpServlet;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class jdbcDelect extends HttpServlet
{
	public static String myName;

	void setName(String name)
	{
		myName = name;
	}

	public static void delect()
	{
		try
		{
			// 加载数据库驱动,注册到驱动管理器
			Class.forName("com.mysql.jdbc.Driver");
			// 数据库连接字符串
			String url = "jdbc:mysql://127.0.0.1:3306/mysql_javaee";
			// 数据库用户名
			String username = "root";
			String password = "7890";
			Connection conn = DriverManager.getConnection(url, username, password);
			if (conn != null)
			{
				// 输出连接信息
				System.out.println("数据库连接成功3!");
				//参数化的sql语句,?为参数位置
				String sql = "DELETE FROM student WHERE name=? ;";
				PreparedStatement ps = conn.prepareStatement(sql);
				//设第一个参数为myName
				ps.setString(1, myName);
				//执行sql语句
				int result = ps.executeUpdate(); // 不需要加参数

				conn.close();
			} else
			{
				// 输出连接信息
				System.out.println("数据库连接失败!");
			}

		} catch (ClassNotFoundException e)
		{
			e.printStackTrace();
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
	}
}

servlet

servletInsert.java

获取表单servletInsert中的数据

package jdbcTest;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/servletInsert")
public class servletInsert extends HttpServlet
{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		// 设置响应内容类型
		response.setContentType("text/html;charset=UTF-8");
		String myID = new String(request.getParameter("ID").getBytes("ISO8859-1"), "UTF-8");
		String myName = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");
		String myStrAge = request.getParameter("age");
		// 把 String型 的myStrAge1 转成 int型
		int myAge = Integer.parseInt(myStrAge);
		jdbcInsert test1 = new jdbcInsert();
		test1.setID(myID);
		test1.setName(myName);
		test1.setAge(myAge);
		test1.insert();

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGet(request, response);
	}
}

servletSelect.java

获取表单servletSelect中的数据

package jdbcTest;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/servletSelect")
public class servletSelect extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String myID = new String(request.getParameter("ID").getBytes("ISO8859-1"), "UTF-8");
	
		jdbcSelect test = new jdbcSelect();
		test.setID(myID);
		test.select();
		ArrayList<Student> list = test.returnList();

		// 将list数据打包
		request.setAttribute("list", list);
		// 将list数据发送到.jap文件中,并跳转到result页面
		request.getRequestDispatcher("result.jsp").forward(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

servletDelete.java

获取表单servletDelete中的数据

package jdbcTest;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//获取表单delete的数据
@WebServlet("/servletDelete")
public class servletDelete extends HttpServlet
{
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		// 解决中文乱码问题
		String myName = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");
		jdbcDelect test = new jdbcDelect();
		test.setName(myName);
		test.delect();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		doGet(request, response);
	}
}

配置web.xml文件

查看WebContent/WEB-INF 下有无xml文件,如果没有自己新建一个

在xml文件中加入以下内容,其中路径等改成自己的

  <servlet>
    <servlet-name>servletInsert</servlet-name>
    <servlet-class>jdbcTest.servletInsert</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>sertletInsert</servlet-name>
    <url-pattern>/test3/servletInsert</url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>servletSelect</servlet-name>
    <servlet-class>jdbcTest.servletSelect</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletSelect</servlet-name>
    <url-pattern>/test3/servletSelect</url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>servletDelect</servlet-name>
    <servlet-class>jdbcTest.servletDelect</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>srvletDelect</servlet-name>
    <url-pattern>/test3/servletDelect</url-pattern>
  </servlet-mapping>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值