课程添加程序
代码由四个文件组成,其中一个.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调用。

浙公网安备 33010602011771号