课程添加程序
代码由四个文件组成,其中一个.jsp文件,三个.java文件。
1、jsp文件代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%--设置页面的脚本支持语言为java—导入util包中的类—申明编码方式为UTF-8--%> <% request.setCharacterEncoding("UTF-8"); //设置响应的编码为UTF-8 response.setCharacterEncoding("UTF-8"); //设置响应的编码为UTF-8 %> <% String path = request.getContextPath(); //相对Path设置 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; //相对Path设置 %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>用户注册</title> <style> a{ text-decoration: none; } </style> <script type="text/javascript"> function check() { var user = document.getElementById("user").value; var password = document.getElementById("password").value; var sex = document.getElementById("sex").value; var name = document.getElementById("name").value; var xuehao = document.getElementById("xuehao").value; var mail = document.getElementById("mail").value; var school = document.getElementById("school").value; var xi = document.getElementById("xi").value; var banji = document.getElementById("banji").value; var nianfen = document.getElementById("nianfen").value; var place = document.getElementById("place").value; var beizhu = document.getElementById("beizhu").value; var res=/^[0-9a-zA-Z]*$/; //必须是数字和英文组合 var myPattern = new RegExp("^[a-zA-Z]");//以英文字母开头 var userlength=document.getElementById("user").value.length; if(!((res.test(user))&&(myPattern.test(user))&&userlength>5&&userlength<=12)) { alert('用户名必须为字母数字组成且必须为6为组成首字母大写'); document.getElementById("user").focus(); return false; } if((res.test(password)&&password.length<8)) { alert('由八位英文和数字组成'); document.getElementById("password").focus(); return false; } if(sex=="") { alert('性别不能为空!'); document.getElementById("sex").focus(); return false; } if((xuehao[0]!=2||xuehao[1]!=0||xuehao[2]!=1||xuehao[3]!=8)||xuehao.length!=8){ alert("学号格式不正确"); document.getElementById("xuehao").focus(); return false; } var kao=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; if(!(kao.test(mail))) {alert("邮箱格式不正确"); document.getElementById("mail").focus(); return false;} } </script> </head> <body> <table border="0px" cellspacing="0px" cellpadding="0px" align="center" width="95%" height="100%"> <!-- 网站头部 --> <tr> <td> <!-- 一个一行三列的表格 --> <table width="100%" height="50px" cellpadding="0px" cellspacing="0px" border="0px" align="center"> <tr height="50px"> <td width="33.3%"> <a href="https://user.qzone.qq.com/794133319?ADUIN=794133319&ADSESSION=1569985311&ADTAG=CLIENT.QQ.5659_MyTip.0&ADPUBNO=26941&source=namecardhoverstar"><img src="img/header/webheader.png" height="50px"></a> </td> <td width="33.3%"> <img src="img/header/header.png" height="47px" > </td> <td width="33.3%"> <a href="#">登陆</a> <a href="#">注册</a> <a href="#">购物车</a> </td> </tr> </table> </td> </tr> <!-- 导航栏 --> <tr height="50px" bgcolor="black"> <td> <a href="index.html"><font color="whitesmoke" size="4">首页</font></a> <a href="#"><font color="whitesmoke" size="3">手机数码</font></a> <a href="#"><font color="whitesmoke" size="3">电脑办公</font></a> <a href="#"><font color="whitesmoke" size="3">鞋靴箱包</font></a> <a href="#"><font color="whitesmoke" size="3">生活电器</font></a> </td> </tr> <!-- 注册表单 --> <tr height="700px"> <td background="img/hot/regist_bg.jpg"> <!-- 嵌套一个十行两列的表格 --> <form action="ZhuceServlet?method=add" method="post" onsubmit="return check()"> <table border="0px" cellspacing="0px" cellpadding="0px" align="center" bgcolor="white" width="750px" height="500px"> <tr align="center"> <td> 登陆账号: <input type="text" name="user" required="required" id="user"/> </td> </tr> <tr align="center"> <td> 登陆密码: <input type="password" name="password" required="required" id="password"/> </td> </tr> <tr align="center"> <td> 性别: <select name="sex" id="sex"> <option value="">--请选择--</option> <option value="男">男</option> <option value="女">女</option> </td> </tr> <tr align="center"> <td> 姓名: <input type="text" name="name" required="required" id="name"/> </td> </tr> <tr align="center"> <td> 学号: <input type="text" name="xuehao" required="required" id="xuehao"/> </td> </tr> <tr align="center"> <td> 电子邮件: <input type="text" name="mail" id="mail"/> </td> </tr> <tr align="center"> <td> 所在学校: <input type="text" name="school" id="school"/> </td> </tr> <tr align="center"> <td> 所在系: <input type="text" name="xi" id="xi"/> </td> </tr> <tr align="center"> <td> 所在班级: <input type="text" name="banji" id="banji"/> </td> </tr> <tr align="center"> <td> 入学年份(届): <select name="nianfen" id="nianfen"> <option value="">--请选择--</option> <option value="1999">1999</option> <option value="1997">1997</option> <option value="1996">1996</option> <option value="1995">1995</option> </select> 届 </td> </tr> <tr align="center"> <td> 生源地: <input type="text" name="place" id="place"/> </td> </tr> <tr align="center"> <td> 备注: <textarea rows="3" name="beizhu" id="beizhu"></textarea> </td> </tr> <tr align="center"> <td> <input type="submit" value="添加" /> </td> </tr> </table> </form> </td> </tr> <!-- 广告 --> <tr> <td> <img src="img/ad/footer.jpg" width="100%"> </td> </tr> <!-- 关于我们 --> <tr align="center"> <td> <a href="#">关于我们</a> <a href="#">联系我们</a> <a href="#">招贤纳士</a> <a href="#">法律声明</a> <a href="#">友情链接</a> <a href="#">支付方式</a> <a href="#">配送方式</a> <a href="#">服务声明</a> <a href="#">广告声明</a> </td> </tr> </table> </body> </html>
2、ZhuceServlet.java 文件
package RegisterServlet; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import TextLogin.TextLogin; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ZhuceServlet */ @WebServlet("/ZhuceServlet") public class ZhuceServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String method = req.getParameter("method"); System.out.println(method); if ("add".equals(method)) { System.out.println("ok"); String user = req.getParameter("user"); String password = req.getParameter("password"); String sex = req.getParameter("sex"); String name = req.getParameter("name"); String xuehao = req.getParameter("xuehao"); String mail = req.getParameter("mail"); String school = req.getParameter("school"); String xi = req.getParameter("xi"); String banji = req.getParameter("banji"); String nianfen = req.getParameter("nianfen"); String place = req.getParameter("place"); String beizhu = req.getParameter("beizhu"); boolean pd=TextLogin.add(user, password, sex, name, xuehao, mail, school, xi, banji, nianfen, place, beizhu); if(pd) { req.setAttribute("message", "注册成功"); req.getRequestDispatcher("Register.jsp").forward(req,resp); }else { req.setAttribute("message", "注册失败,请重新注册"); req.getRequestDispatcher("Register.jsp").forward(req,resp); } } } public ZhuceServlet() { 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 response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
3、TextLogin.java文件
package TextLogin; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.junit.Test; import UTILS.JDBCUtil; public class TextLogin { // @Test // public void ce() { // // add("2", "1", "1", "1", "1", "1", "1"); // } public static boolean add(String user,String password,String sex,String name,String xuehao,String mail,String school,String xi,String banji,String nianfen,String place,String beizhu) { Connection conn = null; PreparedStatement pstmt = null; boolean pd = false; System.out.println("add run!"); try { //获取连接 conn = JDBCUtil.getConn(); //编写语句 String sql = "insert into ceshi values(?,?,?,?,?,?,?,?,?,?,?,?)"; //预编译 pstmt = conn.prepareStatement(sql); //设置数据 pstmt.setString(1, user); pstmt.setString(2, password); pstmt.setString(3, sex); pstmt.setString(4, name); pstmt.setString(5, xuehao); pstmt.setString(6, mail); pstmt.setString(7, school); pstmt.setString(8, xi); pstmt.setString(9, banji); pstmt.setString(10, nianfen); pstmt.setString(11, place); pstmt.setString(12, beizhu); //执行 int res = pstmt.executeUpdate(); //判断 if(res>0) { pd=true; }else { pd=false; } } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtil.close(conn,pstmt); } return pd; } // public static boolean add(String user,String password,String name,String sex,String place,String phone,String mail) { // boolean pd = false; // Connection conn = null; // Statement stmt = null; // String sql = "insert into register2 values('"+user+"','"+password+"','"+name+"','"+sex+"','"+place+"','"+phone+"','"+mail+"')"; // try { // conn = JDBCUtil.getConn(); // stmt = conn.createStatement(); // stmt.executeUpdate(sql); // } catch (Exception e) { // e.printStackTrace(); // }finally { // JDBCUtil.close(conn, stmt); // pd=true; // } // return pd; // } }
4、JDBCUtil.java 文件
package UTILS; 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 JDBCUtil { private static String url="jdbc:mysql://localhost:3306/register?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8"; private static String user="root"; private static String password="newpassword"; public static Connection getConn() { Connection conn = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void close(Connection conn,Statement stmt,ResultSet rs) { if(rs!=null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(stmt!=null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn,PreparedStatement pstmt) { if(pstmt!=null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(Connection conn,Statement stmt) { if(stmt!=null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
四、代码分析
1、Register.jsp
这是网页的主页面的代码,在画出页面后加入了表单的校验,当数据校验成功后会将表单数据发送到servlet层。
2、ZhuceServlet.java
这个文件接收来自jsp页面的数据,然后调用Dao层的函数来进行数据库的写入。
3、TextLogin.java
这个文件里存放的是用来写入数据库的代码,在该文件里调用了JDBCUtil类来获取和数据库的连接。
4、JDBCUtil.java
这个文件里存放的类是用来注册驱动、获取和数据库的连接以及关闭相应的连接的方法,用来供TextLogin调用。