利用jdbc+jsp实现,文件结构如下,关于jdbc的导入以及javaweb的创建请参考博客https://www.cnblogs.com/raidenmei/p/9919249.html
数据库的建立,主键是学号id,name和age为其他字段,为了方便编写jsp,这里全都声明为varchar型
create table user(
id varchar(8),
name varchar(20),
age varchar(3),
primary key(id));
第一 实现学生的添加(注册)
这里并没有跳转的要求,所以直接在一个页面实现login.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" pageEncoding="utf-8" errorPage=""%> <%@ page import="java.sql.*" %> <head> <title>注册</title> </head> <body> <form id="form" method="post"> 学号:<br /> <input type="text" name="id"><hr /> 姓名: <br /> <input type="text" name="name"><hr /> 年龄: <br /> <input type="text" name="age"><hr /> 学号:<br /> <input type="text" name="id1"><hr /> 姓名: <br /> <input type="text" name="name1"><hr /> 年龄: <br /> <input type="text" name="age1"><hr /> 学号:<br /> <input type="text" name="id2"><hr /> 姓名: <br /> <input type="text" name="name2"><hr /> 年龄: <br /> <input type="text" name="age2"><hr /> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> <% //参数获取 request.setCharacterEncoding("utf-8"); String id = request.getParameter("id"); String name = request.getParameter("name"); String age = request.getParameter("age"); String id1 = request.getParameter("id1"); String name1 = request.getParameter("name1"); String age1 = request.getParameter("age1"); String id2 = request.getParameter("id2"); String name2 = request.getParameter("name2"); String age2 = request.getParameter("age2"); %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动 String url = "jdbc:mysql://localhost/hello?&serverTimezone=GMT"; //使用localhost端口,hello数据库 // 数据库用户名 String username = "root"; // 数据库密码 String password = "password"; // 创建Connection连接 Connection conn = DriverManager.getConnection(url, username, password); // 判断 数据库连接是否为空 if (conn != null) { // 输出连接信息 String sql = "insert into user values (?,?,?);"; PreparedStatement ps = conn.prepareStatement(sql); if(id!=null&&name!=null&&age!=null&&id!=""&&name!=""&&age!="")//第一次运行时为null,所以进行特判,如果没有填入信息,不传""进数据库 { ps.setString(1, id); ps.setString(2, name); ps.setString(3, age); ps.addBatch(); System.out.print(1); } if(id1!=null&&name1!=null&&age1!=null&&id1!=""&&name1!=""&&age1!="") { ps.setString(1, id1); ps.setString(2, name1); ps.setString(3, age1); ps.addBatch(); System.out.print(2); } if(id2!=null&&name2!=null&&age2!=null&&id2!=""&&name2!=""&&age2!="") { ps.setString(1, id2); ps.setString(2, name2); ps.setString(3, age2); ps.addBatch(); System.out.print(3); } ps.executeBatch(); ps.clearBatch(); conn.close(); } else { // 输出连接信息 System.out.println("数据库连接失败!"); } } catch (ClassNotFoundException e) { System.out.println("wrong"); } %> </body> </html>
效果如下图所示
第二 实现输入学号查询学生信息,跳转至指定页面
querystudent页面代码如下,使用action= xx.jsp可以跳转至指定页面
<%@ page contentType="text/html; charset=utf-8" language="java" pageEncoding="utf-8" errorPage=""%> <head> <title>查询</title> </head> <body> <form id="form" action="result.jsp" method="post"> 学号:<br /> <input type="text" name="id"><hr /> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> </body> </html>
result页面代码如下,使用prepareStatement进行预处理
<%@ page contentType="text/html; charset=utf-8" language="java" pageEncoding="utf-8" errorPage=""%> <%@ page import="java.sql.*" %> <head> <title>查询学生</title> </head> <body> <% request.setCharacterEncoding("utf-8"); String id = request.getParameter("id"); %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost/hello?&serverTimezone=GMT"; // 数据库用户名 String username = "root"; // 数据库密码 String password = "password"; // 创建Connection连接 Connection conn = DriverManager.getConnection(url, username, password); // 判断 数据库连接是否为空 if (conn != null) { // 输出连接信息 String sql = "select *from user where id=?;"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, id); ResultSet rs = ps.executeQuery(); int flag=0; while (rs.next()){ flag=1; String cur_id=rs.getString(1); String cur_name = rs.getString(2); String cur_age = rs.getString(3); out.println("id:"+cur_id+"\t"+"name:"+cur_name+"\t"+"age:"+cur_age); } if(flag==0) { out.print("没有该名学生!"); } conn.close(); } else { // 输出连接信息 System.out.println("数据库连接失败!"); } } catch (ClassNotFoundException e) { System.out.println("wrong"); } %> </body> </html>
第三 deleteStudent.jsp点击提交后按照姓名删除学生信息
<%@ page contentType="text/html; charset=utf-8" language="java" pageEncoding="utf-8" errorPage=""%> <%@ page import="java.sql.*" %> <head> <title>删除学生</title> </head> <body> <form id="form" method="post"> 姓名:<br /> <input type="text" name="name"><hr /> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> <% request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); //System.out.println(name); %> <% try { Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost/hello?&serverTimezone=GMT"; // 数据库用户名 String username = "root"; // 数据库密码 String password = "password"; // 创建Connection连接 Connection conn = DriverManager.getConnection(url, username, password); // 判断 数据库连接是否为空 if (conn != null) { // 输出连接信息 if(name!=null) { String sql = "delete from user where name=?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, name); ps.executeUpdate(); } conn.close(); } else { // 输出连接信息 System.out.println("数据库连接失败!"); } } catch (ClassNotFoundException e) { System.out.println("wrong"); } %> </body> </html>
第二次更新,优化了login界面的传值,最初的版本必须要同时填满所有的输入框,现在只需要填满3个框的其中一个就行
当所查询得学生不存在时,输出提示