javaweb+mysql+servlet实现信息添加功能
1.题目要求
2.源代码及结果
1)文件结构:
2)添加信息界面 stuinfo.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="AddServlet" method="post"> <table align="center" width="600px" > <tr> <td align="center">登录账号:</td> <td><input type="text" name="uusername"></td> </tr> <tr> <td align="center">登录密码:</td> <td><input type="password" name="upwd"></td> </tr> <tr> <td align="center">性别:</td> <td> <select name="usex"> <option> 男</option> <option> 女</option> </select> </td> </tr> <tr> <td align="center">姓名:</td> <td><input type="text" name="uname"></td> </tr> <tr> <td align="center">学号:</td> <td><input type="text" name="ustuid"></td> </tr> <tr> <td align="center">电子邮件:</td> <td><input type="text" name="uemail"></td> </tr> <tr> <td align="center">所在学院:</td> <td><input type="text" name="uxy"></td> </tr> <tr> <td align="center">所在系:</td> <td><input type="text" name="ux"></td> </tr> <tr> <td align="center">所在班级:</td> <td><input type="text" name="ubj"></td> </tr> <tr> <td align="center">入学年份(届):</td> <td> <select name="uyear"> <option> 2019</option> <option> 2018</option> <option> 2017</option> <option> 2016</option> <option>2014</option> <option>2013</option> </select> </td> </tr> <tr> <td align="center">生源地:</td> <td><input type="text" name="uwhere"></td> </tr> <tr> <td align="center" >备注</td> <td><input type="text" name="ubeizhu"></td> </tr> <tr> <td align="center"><input type="submit" value="添加"> </td> </tr> </table> </form> </body> </html>
3)用户属性 User.java
package service; public class User { private String zh; private String pwd; private String sex; private String name; private String stuid; private String email; private String xueyuan; private String xi; private String bj; private String enter; private String wher; private String beizhu; public String getZh() { return zh; } public void setZh(String zh) { this.zh = zh; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStuid() { return stuid; } public void setStuid(String stuid) { this.stuid = stuid; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getXueyuan() { return xueyuan; } public void setXueyuan(String xueyuan) { this.xueyuan = xueyuan; } public String getXi() { return xi; } public void setXi(String xi) { this.xi = xi; } public String getBj() { return bj; } public void setBj(String bj) { this.bj = bj; } public String getEnter() { return enter; } public void setEnter(String enter) { this.enter = enter; } public String getWher() { return wher; } public void setWher(String wher) { this.wher = wher; } public String getBeizhu() { return beizhu; } public void setBeizhu(String beizhu) { this.beizhu = beizhu; } }
4)获取数据库链接 DBUtil.java
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBUtil { // 数据库连接地址 private static String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; // 数据库的用户名 private static String UserName = "root"; // 数据库的密码 private static String Password = "18735"; public static Connection getConnection() { Connection Conn=null; try { Class.forName("com.mysql.cj.jdbc.Driver"); // 加载驱动 System.out.println("加载驱动成功!!!"); } catch (ClassNotFoundException e) { // TODO: handle exception e.printStackTrace(); } try { //通过DriverManager类的getConenction方法指定三个参数,连接数据库 Conn = DriverManager.getConnection(URL, UserName, Password); System.out.println("连接数据库成功!!!"); //返回连接对象 //return Conn; } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } return Conn; } public static void main(String[] args)throws SQLException { //测试数据库是否连通 Connection conn = getConnection(); PreparedStatement pstmt = null; ResultSet rs = null; String sql ="select * from stuInfo"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); System.out.println(getConnection()); while(rs.next()){ System.out.println("空"); } } }
5)数据处理接口,提交数据到数据库 UserDao.java
package dao; import java.sql.*; import service.User; import util.DBUtil; public class UserDao { public boolean addx(User user) { //创建数据库连接 String sql="insert into stuinfo(zh,pwd,sex,name,stuid,email,xueyuan,xi,bj,enter,diqu,beizhu)values(\'"+user.getZh()+"\',\'"+user.getPwd()+"\',\'"+user.getSex()+"\',\'"+user.getName()+"\',\'"+user.getStuid()+"\',\'"+user.getEmail()+"\'," + "\'"+user.getXueyuan()+"\',\'"+user.getXi()+"\',\'"+user.getBj()+"\',\'"+user.getEnter()+"\',\'"+user.getWher()+"\',\'"+user.getBeizhu()+"\')"; Connection conn = DBUtil.getConnection(); Statement state = null; try { state = conn.createStatement(); int a= state.executeUpdate(sql); state.close(); return a>0?true:false; } catch (Exception e) { e.printStackTrace(); } return false; } }
6) 连接服务器,交互式的浏览和修改数据 AddServlet.java
package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.UserDao; import service.User; /** * Servlet implementation class AddServlet */ @WebServlet("/AddServlet") public class AddServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AddServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); doGet(request, response); String zh = request.getParameter("uusername"); System.out.println(zh); String pwd = request.getParameter("upwd"); String email = request.getParameter("uemail"); String name = request.getParameter("uname"); String sex = request.getParameter("usex"); String where = request.getParameter("uwhere"); String enter = request.getParameter("uyear"); String stuid = request.getParameter("ustuid"); String xy = request.getParameter("uxy"); String xi = request.getParameter("ux"); String bj = request.getParameter("ubj"); String beizhu = request.getParameter("ubeizhu"); Integer kpeople = Integer.valueOf(request.getParameter("ustuid")); //int s=Integer.parseInt(stuid); // 登录账号 String a = "^[a-zA-Z][a-zA-Z0-9]{6,12}$"; // E-mail String d = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; // String b = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,12}$"; if (!zh.matches(a)) { System.out.println(zh); PrintWriter out = response.getWriter(); out.print( "<script>alert(\'用户名有误\');window.location.href=\'stuInfo.jsp\'</script>"); } else if (!pwd.matches(b)) { PrintWriter out = response.getWriter(); out.print("<script>alert(\'密码有误!\');window.location.href=\'stuInfo.jsp\'</script>"); } else if (!email.matches(d)) { PrintWriter out = response.getWriter(); out.print("<script>alert(\'邮箱有误!\');window.location.href=\'stuInfo.jsp\'</script>"); } else if(stuid.length()!=8||kpeople<20180000||kpeople>20189999) { PrintWriter out = response.getWriter(); out.print("<script>alert(\'学号有误!\');window.location.href=\'stuInfo.jsp\'</script>"); } else { User user = new User(); user.setZh(zh); user.setPwd(pwd); user.setName(name); user.setSex(sex); user.setWher(where); user.setXueyuan(xy); user.setEmail(email); user.setXi(xi); user.setStuid(stuid); user.setBj(bj); user.setEnter(enter); user.setBj(bj); user.setBeizhu(beizhu); System.out.println(zh); UserDao user1 = new UserDao(); user1.addx(user); PrintWriter out = response.getWriter(); out.print("<script>alert(\'注册成功!\');</script>"); } } }
7)各项测试结果及表
3.学习收获
对数据库的操作还是个小白吧,信息填报界面完成后,然后进行连接数据库(成功),可惜最后惜败在了数据怎么也传不到数据库里。经过两个多小时的身心俱疲的排查也算有了眉目:
1)数据库里有一栏的命名和关键字重复,才知道不能随便命名
2)sql语句中前后项不匹配
3)sql语句中不知何时有了一个空格 (就像这样!!!!!),最后重新写了一次才成功,哎,成败只在一个 。
不得不说,”看似寻常最奇崛,成如容易却艰辛“,十年磨一剑,究竟何时才能铁柱磨成针?!