1.数据库表单的创建
?
使用naviccat在数据库jiaoli中创建xsa的表单,含数据如下:

?
?均为varcahr类型.
?
2.前端编写
包含数据的输入,与相关限制(如:账号必须为字母数字下划线6~12位,学号要以2018开头8位等).
实现截图:

?
?
源代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册界面</title>
</head>
<body>
注册界面
<br><br>
<form action="addser" method="post" name="from1" id="from1">
登录账号:<input placeholder="请输入用户名" id="usename" class="bg" οnkeypress="check()"> <!--placeholder是会在文本框下提示信息-->
<br><br>
登良密码:<input type=password placeholder="请输入密码" id="password" name="password" value="" οnkeypress="check()">
<br><br>
性别:<input type="radio" name="sex" value="male">男
<input type="radio" name="sex" value="female">女
<br><br>
姓名:<input placeholder="请输入姓名" id="name" name="name" value="">
<br><br>
学号:<input id="studentnumber" name="studentnumber" value="" οnkeypress="check()" >
<br><br>
邮箱号:<input placeholder="请输入邮箱号" id="email" name="email" value="" οnkeypress="check()">
<br><br>
所在学院:<input placeholder="请输入学校" id="xueyuan" name="xueyuan" value="">
<br><br>
所在系:<input placeholder="请输入系" id="xi" name="xi" value="">
<br><br>
所在班级:<input placeholder="请输入班级" id="banji" name="banji" value="">
<br><br>
入学年份:<select name="nianfen">
<option value="1998">1998</option>
<option value="1999">1999</option>
<option value="2000">2000</option>
<option value="2001">2001</option>
<option value="2002">2002</option>
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
</select>
<br><br>
生源地:<input placeholder="请输入生源地" id="shengyuandi" name="shengyuandi" value="">
<br><br>
备注:<textarea rows="20"cols="30" name="beizhu"></textarea>
<br><br>
<input type="submit" name="submit" value="添加" onclick="return check(this.form)"> <!--type等于submit是提交表单,如账号密码提交-->
<script type="text/javascript">
function check() { //弹出错误信息
var usename = document.getElementById("usename");
var usern = /^[a-zA-Z0-9_]{1,}$/;
var usern1=/(S)+[@]{1}(S)+[.]{1}(w)+/;
var usern2=/^[a-z][a-z0-9_]*$/;
if(usename.value==‘‘)
{
alert(‘账号不能为空‘);
usename.focus();
return false;
}
if(usename.value.length<6||usename.value.length>12)
{
alert(‘账号不能小于6位大于12位‘);
usename.focus();
return false;
}
if (!usename.value.match(usern)) {
alert(‘用户名只能由字母数字下划线组成‘);
usename.focus();
return false;
}
if(!usename.value.matches(usern2)){
alert("用户名必须以字母开头");
usename.focus();
return false;
}
var password=document.getElementById("password");
if(password.value.length<8)
{
alert(‘密码不能少于8位‘);
password.focus();
return false;
}
if(!password.value.match(usern))
{
alert(‘密码只能由字母数字组成‘);
usename.focus();
return false;
}
var xuehao= document.getElementById("studentnumber");
if(xuehao.value.length!=8)
{
alert(‘学号必须为8位‘);
xuehao.focus();
return false;
}
var email=document.getElementById("email");
if(!email.value.match(usern1)){
alert(‘邮件格式错误‘);
email.focus();
return false;
}
}
</script>
</form>
</body>
</html>
?
3.连接数据库
在addser.java中
?
String url = "jdbc:mysql://localhost:3306/jiaoli?&useSSL=false&serverTimezone=UTC&useUnicode=yes&characterEncoding=utf8";
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url,"root","root");
} catch (ClassNotFoundException e) {
response.getWriter().print("加载驱动失败");
} catch (SQLException e) {
response.getWriter().print("连接数据库失败");
}
?
与mysql连接前要先把mysql-connector-java-8.0.11.jar导到项目中.
?
4.将前端数据导到数据库中
截图:

?
?
?

?
?
原码:
package testv;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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 addser
*/
@WebServlet("/addser")
public class addser extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public addser() {
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
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String username=request.getParameter("usename");
String psword=request.getParameter("password");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
String studentnumber=request.getParameter("studentnumber");
String xueyuan=request.getParameter("xueyuan");
String xi=request.getParameter("xi");
String banji=request.getParameter("banji");
String nianfen=request.getParameter("nianfen");
String shengyuandi=request.getParameter("shengyuandi");
String beizhu=request.getParameter("beizhu");
String email=request.getParameter("email");
String url = "jdbc:mysql://localhost:3306/jiaoli?&useSSL=false&serverTimezone=UTC&useUnicode=yes&characterEncoding=utf8";
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url,"root");
} catch (ClassNotFoundException e) {
response.getWriter().print("加载驱动失败");
} catch (SQLException e) {
response.getWriter().print("连接数据库失败");
}
String ye=studentnumber.substring(0,4);
if(!ye.equals("2018")) {
request.getRequestDispatcher("test1.jsp").forward(request,response);
}
try {
String s=username;
Pattern pa = Pattern.compile("[a-zA-Z].*");
Matcher isNum = pa.matcher(s.charAt(0)+"");
if(isNum.matches()) {
request.getRequestDispatcher("test2.jsp").forward(request,response);
}
}catch (Exception e) {
}
try {
String reg = "[email?protected](w+.){1,3}w+";
Pattern pattern = Pattern.compile(reg);
boolean flag = false;
if (email != null) {
Matcher matcher = pattern.matcher(email);
flag = matcher.matches();
}
if(flag) {
request.getRequestDispatcher("test2.jsp").forward(request,response);
}
}catch (Exception e) {
}
try {
String sql = "INSERT INTO xsa(usename,password,sex,name,studentnumber,email,xueyuan,xi,banji,nianfen,shengyuandi,beizhu) VALUES (?,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2,psword);
ps.setString(3,sex);
ps.setString(4,name);
ps.setString(5,studentnumber);
ps.setString(6,email);
ps.setString(7,xueyuan);
ps.setString(8,xi);
ps.setString(9,banji);
ps.setString(10,nianfen);
ps.setString(11,shengyuandi);
ps.setString(12,beizhu);
int row = ps.executeUpdate();
//
if (row > 0)
//
response.getWriter().print("添加" + row + "数据");
} catch (SQLException e) {
response.getWriter().print("添加失败");
}
try {
if (ps != null) {
ps.close();
ps = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
response.getWriter().print("关闭失败");
}
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request,HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
?
?
5.整体过程:
首先注册,错误会出提示修改:

?

?
?

?
?成功登陆后显示如4中截图.