考试要求:
1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分)
2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分)
3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分)
4学号:要求八位数字组成,前四位为“2018”开头,输入自己学号;(1分)
5姓名:输入自己的姓名;
5电子邮箱:要求判断正确格式xxxx@xxxx.xxxx;(1分)
6点击“添加”按钮,将学生个人信息存储到数据库中。(3分)
7可以演示连接上数据库。(2分)
步骤:
一、建立输入的数据对应的类和相应的函数。
package com.entry; public class user { private String id;//账号 private String password;//密码 private String name;//姓名 private String sex;//性别 private String number;//学号 private String mail;//邮箱 private String xueyuan;//学院 private String xi;//系 private String banji;//班级 private String nian;//年 private String shengyuandi;//生源地 private String beizhu;//备注 public String getBeizhu() { return beizhu; } public void setBeizhu(String beizhu) { this.beizhu = beizhu; } public String getShengyuandi() { return shengyuandi; } public void setShengyuandi(String shengyuandi) { this.shengyuandi = shengyuandi; } public String getNian() { return nian; } public void setNian(String nian) { this.nian = nian; } public String getBanji() { return banji; } public void setBanji(String banji) { this.banji = banji; } public String getXi() { return xi; } public void setXi(String xi) { this.xi = xi; } public String getXueyuan() { return xueyuan; } public void setXueyuan(String xueyuan) { this.xueyuan = xueyuan; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } public user(){} public user(String name, String password) { this.name = name; this.password = password; }; public user(String id, String password, String name, String sex, String number, String mail, String xueyuan, String xi, String banji, String nian, String shengyuandi, String beizhu) { super(); this.id = id; this.password = password; this.name = name; this.sex = sex; this.number = number; this.mail = mail; this.xueyuan = xueyuan; this.xi= xi; this.banji = banji; this.nian = nian; this.shengyuandi = shengyuandi; this.beizhu = beizhu; } }
二、建立有关数据库连接,导入的类。
package com.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.entry.user; import com.util.DBUtil; public class userDao { //添加 public boolean add(user user) { String sql = "insert into user2(id,sex,password,number,mail,name,xueyuan,xi,banji,nian,shengyuandi,beizhu)" + "values('" + user.getId() + "','" + user.getName() + "','" + user.getPassword() + "','" + user.getSex() + "','" + user.getMail() + "','" + user.getNumber() + "','" + user.getXueyuan() + "','" + user.getXi() + "','" + user.getBanji() + "','" + user.getNian() + "','" + user.getShengyuandi() + "','" + user.getBeizhu() + "')'" ; //创建数据库链接 Connection conn = DBUtil.getConn(); Statement state = null; boolean f = false; int a = 0; try { state = conn.createStatement(); state.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } finally { //关闭连接 DBUtil.close(state, conn); } if (a > 0) { f = true; } return f; } /* * 验证名称是否唯一 * true --- 不唯一 */ public boolean id(String id) { boolean f = false; String sql = "select id from user2 where name = '" + id + "'"; //c创建数据库连接 Connection conn = DBUtil.getConn(); Statement state = null; ResultSet rs = null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while (rs.next()) { f = true; } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(rs, state, conn); } return f; } }
package com.service; import com.dao.userDao; import com.entry.user; public class userservice { userDao cDao = new userDao(); /*添加*/ public boolean add(user user) { boolean f = false; if(!cDao.id(user.getId())) { cDao.add(user); f = true; } return f; } }
package com.servlet; 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; import com.entry.user; import com.service.userservice; @WebServlet("/AddServlet") public class AddServlet extends HttpServlet { private static final long serialVersionUID = 1L; userservice service = new userservice(); protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String method = req.getParameter("method"); if("add".equals(method)) doGet(req,resp); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //获取数据 String id = request.getParameter("id"); String password = request.getParameter("password"); String sex = request.getParameter("sex"); String number = request.getParameter("number"); String name = request.getParameter("name"); String mail = request.getParameter("mail"); String xueyuan = request.getParameter("xueyuan"); String xi = request.getParameter("xi"); String banji = request.getParameter("banji"); String nian = request.getParameter("nian"); String shengyuandi = request.getParameter("shengyuandi"); String beizhu = request.getParameter("beizhu"); user user = new user(id,password,sex,number,name,mail,xueyuan,xi,banji,nian,shengyuandi,beizhu); System.out.println(id); //添加后消息显示 if(service.add(user)) { request.setAttribute("message", "添加成功"); request.getRequestDispatcher("NewFile.jsp").forward(request,response); } else { request.setAttribute("message", "用户名重复,请重新录入"); request.getRequestDispatcher("NewFile.jsp").forward(request,response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /* * 数据库连接工具 */ public class DBUtil { public static String db_url = "jdbc:mysql://localhost:3306/user?useSSL=false"; public static String db_user = "root"; public static String db_pass = "root"; public static Connection getConn () { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver");//加载驱动 conn = DriverManager.getConnection(db_url, db_user, db_pass); } catch (Exception e) { e.printStackTrace(); } return conn; } /*10关闭连接*/ public static void close (Statement state, Connection conn) { if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close (ResultSet rs, Statement state, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args) throws SQLException { Connection conn = getConn(); PreparedStatement pstmt = null; ResultSet rs = null; String sql ="select * from user"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if(rs.next()){ System.out.println("空"); }else{ System.out.println("不空"); } } }
三、建立jsp文件,在lib中导入需要的jdbc。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>Insert title here</title> <meta charset="UTF-8"> <title>注册页面</title> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h6 style="color: black;">注册</h6> <form name = "form1" action="AddServlet?method=add" method="post" onsubmit="return check_submit()"> <table> <tr> <td>登陆账号:</td> <td colspan="2"> <input type="text" id="id" name="id" maxlength="12" onblur="blur_id()" onfocus="focus_id()"/></td> <td width="300"><div id="result"></td> </tr> <tr> <td>登陆密码:</td> <td colspan="2"> <input type="password" id="password" name="password" onblur="blur_pass()" onfocus="focus_pass()" /></td> <td width="300"><div id="result1"></td> </tr> <tr> <td>性别:</td> <td colspan="2"><input type="radio" id="sex" name="sex" value="男">男 <input type="radio" id="sex"name="sex" value="女">女</td> </tr> <tr> <td>学号:</td> <td colspan="2"><input type="number" id="number" name="number" onblur="blur_num()" onfocus="focus_num()" /></td> <td width="300"><div id="result2"></td> </tr> <tr> <td>姓名:</td> <td colspan="2"><input type="text" id="name" name="name" onblur="blur_name()" onfocus="focus_name()" /></td> <td width="300"><div id="result4"></td> </tr> <tr> <td>电子邮箱:</td> <td colspan="2"><input type="email" id="mail" name="mail" onblur="blur_mail()" onfocus="focus_mail()" /></td> <td width="300"><div id="result3"></td> </tr> <tr> <td>所在学院:</td> <td colspan="2"><input type="text" id="xueyuan" name="xueyuan" onblur="blur_xueyuan()" onfocus="focus_xueyuan()" /></td> <td width="300"><div id="result5"></td> </tr> <tr> <td>所在系:</td> <td colspan="2"><input type="text" id="xi" name="xi" onblur="blur_xi()" onfocus="focus_xi()" /></td> <td width="300"><div id="result6"></td> </tr> <tr> <td>所在班级:</td> <td colspan="2"><input type="text" id="banji" name="banji" onblur="blur_banji()" onfocus="focus_banji()"/></td> <td width="300"><div id="result7"></td> </tr> <tr> <td>入学年份(届):</td> <td colspan="2"> <select name="nian" id="nian"> <option value="2019" >2019</option> <option value="2018" >2018</option> <option value="2017" >2017</option> <option value="2016" >2016</option> <option value="2015" >2015</option> <option value="2014" >2014</option> </select>届</td> </tr> <tr> <td>生源地:</td> <td colspan="2"><input type="text" id="shengyuandi" name="shengyuandi" onblur="blur_shengyuandi()" onfocus="focus_shengyuandi()"/></td> <td width="300"><div id="result8"></td> </tr> <tr> <td>备注:</td> <td colspan="2"><input type="text" id="beizhu" name="beizhu" onblur="blur_beizhu()" onfocus="focus_beizhu()" /></td> <td width="300"><div id="result9"></td> </tr> <tr> <td colspan="3"> <button type="submit" class="b">添加</button> </td> </tr> </table> </form> </div> <script type="text/javascript"> /* 表单验证 */ var flag = false; // flag 如果为true(即用户名合法)就允许表单提交, 如果为false(即用户名不合法)阻止提交 function focus_pass() { var nameObj = document.getElementById("result1"); nameObj.innerHTML = "由八位以上字符和数字组成"; nameObj.style.color="#999"; } function blur_pass() { var nameObj = document.getElementById("result1"); // 判断用户名是否合法 var str2 = check_user_pass(document.form1.password.value); nameObj.style.color="red"; if ("密码合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_pass(str) { var str2 = "密码合法"; if ("" == str) { str2 = "密码为空"; return str2; } else if (str.length<8) { str2 = "密码应是八位以上组成"; return str2; } else if (!check_word(str)) { str2 = "未含有英文字符"; return str2; } return str2; } function focus_num() { var nameObj = document.getElementById("result2"); nameObj.innerHTML = "由八位数字组成,由“2018”开头"; nameObj.style.color="#999"; } function blur_num() { var nameObj = document.getElementById("result2"); // 判断用户名是否合法 var str2 = check_user_number(document.form1.number.value); nameObj.style.color="red"; if ("学号合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_number(str) { var str2 = "学号合法"; if ("" == str) { str2 = "学号为空"; return str2; } else if (str.length!=8) { str2 = "学号应是八位组成"; return str2; } else if(!check_firstnum(str)) { str2 = "必须以“2018”开头"; return str2; } return str2; } function focus_beizhu() { var nameObj = document.getElementById("result9"); nameObj.style.color="#999"; } function blur_beizhu() { var nameObj = document.getElementById("result9"); // 判断用户名是否合法 var str2 = check_user_beizhu(document.form1.beizhu.value); nameObj.style.color="red"; if ("备注合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_beizhu(str) { var str2 = "备注合法"; if ("" == str) { str2 = "备注为空"; return str2; } return str2; } function focus_shengyuandi() { var nameObj = document.getElementById("result8"); nameObj.style.color="#999"; } function blur_shengyuandi() { var nameObj = document.getElementById("result8"); // 判断用户名是否合法 var str2 = check_user_shengyuandi(document.form1.shengyuandi.value); nameObj.style.color="red"; if ("生源地合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_shengyuandi(str) { var str2 = "生源地合法"; if ("" == str) { str2 = "生源地为空"; return str2; } return str2; } function focus_banji() { var nameObj = document.getElementById("result7"); nameObj.style.color="#999"; } function blur_banji() { var nameObj = document.getElementById("result7"); // 判断用户名是否合法 var str2 = check_user_banji(document.form1.banji.value); nameObj.style.color="red"; if ("班级合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_banji(str) { var str2 = "班级合法"; if ("" == str) { str2 = "班级为空"; return str2; } return str2; } function focus_xi() { var nameObj = document.getElementById("result6"); nameObj.style.color="#999"; } function blur_xi() { var nameObj = document.getElementById("result6"); // 判断用户名是否合法 var str2 = check_user_xi(document.form1.xi.value); nameObj.style.color="red"; if ("系名合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_xi(str) { var str2 = "系名合法"; if ("" == str) { str2 = "系名为空"; return str2; } return str2; } function focus_xueyuan() { var nameObj = document.getElementById("result5"); nameObj.style.color="#999"; } function blur_xueyuan() { var nameObj = document.getElementById("result5"); // 判断用户名是否合法 var str2 = check_user_xueyuan(document.form1.xueyuan.value); nameObj.style.color="red"; if ("学院名合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_xueyuan(str) { var str2 = "学院名合法"; if ("" == str) { str2 = "学院名为空"; return str2; } return str2; } function focus_name() { var nameObj = document.getElementById("result4"); nameObj.style.color="#999"; } function blur_name() { var nameObj = document.getElementById("result4"); // 判断用户名是否合法 var str2 = check_user_name(document.form1.name.value); nameObj.style.color="red"; if ("姓名合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_name(str) { var str2 = "姓名合法"; if ("" == str) { str2 = "姓名为空"; return str2; } return str2; } function focus_mail() { var nameObj = document.getElementById("result3"); nameObj.innerHTML = "格式要求:xxxx@xxxx.xxxx"; nameObj.style.color="#999"; } function blur_mail() { var nameObj = document.getElementById("result3"); // 判断用户名是否合法 var str2 = check_user_mail(document.form1.mail.value); nameObj.style.color="red"; if ("邮箱合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_mail(str) { var str2 = "邮箱合法"; var regex = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/; if ("" == str) { str2 = "邮箱为空"; return str2; } else if(!regex.test(str)) { str2 = "邮箱格式错误"; return str2; } return str2; } function focus_id() { var nameObj = document.getElementById("result"); nameObj.innerHTML = "由六到十二英文字符和数字组成"; nameObj.style.color="#999"; } function blur_id() { var nameObj = document.getElementById("result"); // 判断用户名是否合法 var str2 = check_user_id(document.form1.id.value); nameObj.style.color="red"; if ("账号合法" == str2) { flag = true; nameObj.innerHTML = str2; } else { nameObj.innerHTML = str2; } } function check_user_id(str) { var str2 = "账号合法"; if ("" == str) { str2 = "账号为空"; return str2; } else if ((str.length<=4)||(str.length>=12)) { str2 = "账号应是六到十二位组成"; return str2; } else if (!check_word(str)) { str2 = "未含有英文字符"; return str2; } else if(!check_firstword(str)) { str2 = "必须以英文字母开头"; return str2; } return str2; } function check_firstnum(str) { var arr = ["2","0","1","8"]; if((arr[0] == str.charAt(0))&& (arr[1] == str.charAt(1))&& (arr[2] == str.charAt(2))&& (arr[3] == str.charAt(3))) { return true; } else { return false; } } function check_firstword(str) { var arr = ["a", "b", "c", "d", "e", "f", "g", "h","i","j", "k", "l", "m", "n", "o", "p", "q","r", "s", "t", "u", "v", "w", "x", "y","z","A", "B", "C", "D", "E", "F", "G", "H","I","J", "K", "L", "M", "N", "O", "P", "Q","R","S", "T", "U", "V", "W", "X", "Y", "Z"]; for (var i = 0; i < arr.length; i++) { if (arr[i] == str.charAt(0)) { return true; } } return false; } function check_word(str) { var arr = ["a", "b", "c", "d", "e", "f", "g", "h","i","j", "k", "l", "m", "n", "o", "p", "q","r", "s", "t", "u", "v", "w", "x", "y","z","A", "B", "C", "D", "E", "F", "G", "H","I","J", "K", "L", "M", "N", "O", "P", "Q","R","S", "T", "U", "V", "W", "X", "Y", "Z"]; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < str.length; j++) { if (arr[i] == str.charAt(j)) { return true; } } } return false; } // 验证用户名是否含有特殊字符 function check_other_char(str) { var arr = ["&", "\", "/", "*", ">", "<", "@", "!"]; for (var i = 0; i < arr.length; i++) { for (var j = 0; j < str.length; j++) { if (arr[i] == str.charAt(j)) { return true; } } } return false; } // 根据验证结果确认是否提交 function check_submit() { if (flag == false) { return false; } return true; } </script> </head> </body> </html>
四、在Navicat中建立相应的表。
完成。