这次的期中考试难度较低,只需要实现一个简单的添加功能,但是后续的增删改查四个功能会逐步完善。这个添加功能和我之前实现的课程添加相差不多,需要把选框中的数据闯进数据库。
知识:mysql数据库+Servlet+jsp+javaweb
环境:idea或eclipse,这次我用的是eclipse
这次的题目名称是形成信息统计系统,就是平常疫情统计信息时的表格。
目录结构
主页面
添加截图
下面是我的代码
1、在数据库进行建表(此处省略)和连接数据库
1 package dao; 2 3 import java.sql.*; 4 5 public class DBUtil { 6 static String url="jdbc:mysql://localhost:3306/数据库名"; 7 static String passwd="数据库密码"; 8 static String user="root"; 9 10 public static Connection getConnection(){ 11 Connection conn=null; 12 try { 13 Class.forName("com.mysql.jdbc.Driver"); 14 conn= DriverManager.getConnection(url,user,passwd); 15 System.out.println("连接成功"); 16 } catch (Exception e) { 17 System.out.println("连接失败"); 18 e.printStackTrace(); 19 } 20 return conn; 21 } 22 public static void close(Statement stmt, Connection conn, PreparedStatement ps, ResultSet rs){ 23 if(stmt!=null){ 24 try { 25 stmt.close(); 26 } catch (SQLException e) { 27 e.printStackTrace(); 28 } 29 } 30 if(conn!=null){ 31 try { 32 conn.close(); 33 } catch (SQLException e) { 34 e.printStackTrace(); 35 } 36 } 37 if(ps!=null){ 38 try { 39 ps.close(); 40 } catch (SQLException e) { 41 e.printStackTrace(); 42 } 43 } 44 45 if(rs!=null){ 46 try { 47 rs.close(); 48 } catch (SQLException e) { 49 e.printStackTrace(); 50 } 51 } 52 } 53 }
2、建立实体类,这里我均设置为字符串
1 package entity; 2 3 public class Stud { 4 private String stuname; 5 private String id; 6 private String stuclass; 7 private String college; 8 private String phone; 9 private String health; 10 private String trip; 11 private String other0; 12 13 public String getStuname() { 14 return stuname; 15 } 16 17 public void setStuname(String stuname) { 18 this.stuname = stuname; 19 } 20 21 public String getId() { 22 return id; 23 } 24 25 public void setId(String id) { 26 this.id = id; 27 } 28 29 public String getStuclass() { 30 return stuclass; 31 } 32 33 public void setStuclass(String stuclass) { 34 this.stuclass = stuclass; 35 } 36 37 public String getCollege() { 38 return college; 39 } 40 41 public void setCollege(String college) { 42 this.college = college; 43 } 44 45 public String getPhone() { 46 return phone; 47 } 48 49 public void setPhone(String phone) { 50 this.phone = phone; 51 } 52 53 public String getHealth() { 54 return health; 55 } 56 57 public void setHealth(String health) { 58 this.health = health; 59 } 60 61 public String getTrip() { 62 return trip; 63 } 64 65 public void setTrip(String trip) { 66 this.trip = trip; 67 } 68 69 public String getOther0() { 70 return other0; 71 } 72 73 public void setOther0(String other0) { 74 this.other0 = other0; 75 } 76 }
3、设计方法,将数据填进数据库
1 package dao; 2 3 import entity.Stud; 4 5 import java.sql.Connection; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.SQLException; 9 10 public class Add { 11 Connection conn=(Connection) DBUtil.getConnection(); 12 13 public boolean add(Stud stu){ 14 boolean flag=false; 15 ResultSet rs=null; 16 String sql="insert into 表名 values(?,?,?,?,?,?,?,?)"; 17 try { 18 PreparedStatement pstmt= conn.prepareStatement(sql); 19 pstmt.setString(1,stu.getStuname()); 20 pstmt.setString(2, stu.getId()); 21 pstmt.setString(3,stu.getStuclass()); 22 pstmt.setString(4, stu.getCollege()); 23 pstmt.setString(5, stu.getPhone()); 24 pstmt.setString(6,stu.getHealth()); 25 pstmt.setString(7,stu.getTrip()); 26 pstmt.setString(8,stu.getOther0()); 27 int i= pstmt.executeUpdate();//判断方法是否执行成功,可删去。 28 pstmt.close(); 29 conn.close(); 30 if(i>0) flag=true; 31 } catch (SQLException e) { 32 e.printStackTrace(); 33 } 34 return flag; 35 } 36 }
4、建立Servlet(其建立方法较特殊,下面我会介绍),后端数据处理,页面进行跳转
1 package Servlet; 2 3 import dao.Add; 4 import entity.Stud; 5 6 import javax.servlet.*; 7 import javax.servlet.http.*; 8 import javax.servlet.annotation.*; 9 import java.io.IOException; 10 import java.util.Arrays; 11 12 @WebServlet(name = "addServlet", value = "/addServlet") 13 public class addServlet extends HttpServlet { 14 @Override 15 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 16 request.setCharacterEncoding("UTF-8"); 17 response.setContentType("text/html;charset=utf-8"); 18 19 String stuname=request.getParameter("stuname"); 20 String id=request.getParameter("id"); 21 String stuclass=request.getParameter("stuclass"); 22 String college=request.getParameter("college"); 23 String phone=request.getParameter("phone"); 24 String health=request.getParameter("health"); 25 String [] h=request.getParameterValues("trip"); 26 String trip=Arrays.toString(h); 27 trip=trip.substring(1,trip.length()-1);//实现多选数据进库 28 String other0=request.getParameter("other0"); 29 30 31 Stud stud=new Stud(); 32 stud.setStuname(stuname); 33 stud.setId(id); 34 stud.setStuclass(stuclass); 35 stud.getStuclass(); 36 stud.setCollege(college); 37 stud.setPhone(phone); 38 stud.setHealth(health); 39 stud.setTrip(trip); 40 stud.setOther0(other0); 41 Add s=new Add(); 42 try{ 43 s.add(stud); 44 response.sendRedirect(request.getContextPath()+"/success.jsp"); 45 }catch(Exception e){ 46 response.sendRedirect(request.getContextPath()+"/fail.jsp"); 47 } 48 } 49 }
5、.jsp界面,在这之后会逐渐使用.html,这里只有main.jsp,success.jsp 和fail.jsp非常简单,不再介绍
1 <%-- 2 Created by IntelliJ IDEA. 3 User: 贾梓钊 4 Date: 2021/11/5 5 Time: 14:13 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <meta charset="UTF-8"> 12 <title>行程统计</title> 13 </head> 14 <body bgcolor="aqua"> 15 <div id="addSubjectForm" align="center"> 16 <form action="addServlet" method="post"> 17 <tr> 18 <td>姓名:</td> 19 <td><input type="text" name="stuname" size="20"><br></td> 20 </tr> 21 <tr> 22 <td>学号:</td> 23 <td><input type="text" name="id" size="20"><br></td> 24 </tr> 25 <tr> 26 <td>学生类别:</td> 27 <td><input type="checkbox" name="stuclass" value="本科生">本科生 28 <input type="checkbox" name="stuclass" value="研究生">研究生 29 </td> 30 </tr> 31 <br> 32 <tr> 33 <td>电话:</td> 34 <td><input type="text" name="phone" size="20"> 35 </tr> 36 <br> 37 <tr> 38 <td>院系:</td> 39 <select name="college"> 40 <option value="土木学院">土木学院</option> 41 <option value="机械学院" >机械学院</option> 42 <option value="交通学院" >交通学院</option> 43 <option value="信息学院" >信息学院</option> 44 <option value="经管学院" >经管学院</option> 45 </select> 46 </tr> 47 <br> 48 <tr> 49 <td>健康码:</td> 50 <td><input type="checkbox" name="health" value="绿色">绿色 51 <input type="checkbox" name="health" value="黄色">黄色 52 <input type="checkbox" name="health" value="红色">红色</td> 53 </tr> 54 <br> 55 <tr> 56 <td>行程统计:</td> 57 <td> 58 <input type="checkbox" name="trip" value="10月30日去过人民医院">10月30日去过人民医院<br> 59 <input type="checkbox" name="trip" value="10月25日以来去过深泽县人民医院">10月25日以来去过深泽县人民医院<br> 60 <input type="checkbox" name="trip" value="10月16日以来去过深泽县庄泽村">10月16日以来去过深泽县庄泽村<br> 61 <input type="checkbox" name="trip" value="10月29日以来去过黑龙江哈尔滨市或者黑河市">10月29日以来去过黑龙江哈尔滨市或者黑河市<br> 62 <input type="checkbox" name="trip" value="10月18日以来途径贵州遵义市;北京丰台、昌平">10月18日以来途径贵州遵义市;北京丰台、昌平<br> 63 <input type="checkbox" name="trip" value="10月17日以来到过湖南长沙;青海海东市">10月17日以来到过湖南长沙;青海海东市<br> 64 </td> 65 </tr> 66 <br> 67 <tr> 68 <td>其他涉疫信息需要填报的:</td> 69 <td><input type="text" name="other0" size="50"><br></td> 70 </tr> 71 <tr> 72 <td colspan="2"><div align="center"><input type="submit" value="提交"> 73 </div> 74 </form> 75 </div> 76 </body> 77 </html>
eclipse建立Servlet
右键src
选择other,进入下一界面
选择Servlet,如果没有,进行搜索即可。
至于idea建立servlet的方法,上一篇博客中有,这里就不再介绍。