讲一下思路,主界面的设计就是用html表单元素,百度查找各个元素的用法,按照自己的想法摆放即可,表单提交后会把数据交给serverlet去处理,在那里定义几个字符串变量来储存获取到的数据,然后按照项目要求对数据格式进行判断(如学号长度是否为8位),对有错误的格式进行相应报错,若数据无误则提交数据库并跳转至success页面。格式判断应该是这里面对算法要求最多的,但也很简单,长度判断直接调用String类型的length()方法返回长度即可,而邮箱格式或“首字符必须为字母”这样的判断最好用正则表达式来写,如果不会写的话直接百度现成的方法就好。

下面是代码:

主界面

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title> </head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){ %>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form action="AdminServlet" method="post" name="form1" id="form1">
<div id="container">
<div class="header">
<p>学生注册</p>
</div>
<div class="form-body"> <label for="">登录账号:</label>
<input type="text" class="form-input" name="user" value="" placeholder="6-12位"> <div class="form-group">
<label for="">登录密码:&nbsp;</label>
<input type="password" class="form-input" value="" name="password" >
</div> <div class="form-group">
<label for="">性&nbsp;&nbsp;&nbsp;别:</label>
<select name="sex">
<option value="男">男</option>
<option value="女">女</option>
</select>
</div> <div class="form-group">
<label for="">姓&nbsp;&nbsp;&nbsp;名:&nbsp;</label>
<input type="text" class="form-input" name="name" size="20" maxlength="15" value="" placeholder="请在这里输入用户名">
</div> <div class="form-group">
<label for="">学&nbsp;&nbsp;&nbsp;号:&nbsp;</label>
<input type="text" class="form-input" name="num" value="" placeholder="8位">
</div> <div class="form-group">
<label for="">电子邮箱:&nbsp;</label>
<input type="text" class="form-input" value="" name="email">
</div>
<div class="form-group">
<label for="">所在学院:&nbsp;</label>
<input type="text" class="form-input" value="" name="yuan">
</div>
<div class="form-group">
<label for="">所在系:&nbsp;&nbsp;&nbsp;</label>
<input type="text" class="form-input" value="" name="xi">
</div> <div class="form-group">
<label for="">所在班级:&nbsp;</label>
<input type="text" class="form-input" value="" name="clas">
</div>
<div class="form-group">
<label for="">入学年份(届):</label>
<select name="year">
<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>届
</div>
<div class="form-group">
<label for="">生源地:&nbsp;</label>
<input type="text" class="form-input" value="" name="address">
</div> 备注:<div class="form-group"> <textarea rows="10" name="bei" cols="30">无</textarea>
</div>
<div class="btn">
<input type="submit" value="添加" class="form-btn form-btn-primary">
<input type="reset" value="重置" class="form-btn form-btn-primary">
</div>
</div>
<div class="footer">
</div>
</div>
</form>
</body>
<script>
obj = document.getElementById('container');
cWidth = window.innerWidth;
cHeight = window.innerHeight;
obj.style.marginLeft = (cWidth - 380)/2+"px";
obj.style.marginTop = (cHeight - 300)/2+"px";
window.onresize=function(){
cWidth = window.innerWidth;
cHeight = window.innerHeight;
obj.style.marginLeft = (cWidth - 380)/2+"px";
obj.style.marginTop = (cHeight - 300)/2+"px";
}
</script>
</html>

录入成功后界面

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){ %>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<h1>欢迎使用本系统</h1>
</body>
</html>

后台

serverlet

package a;

import java.io.IOException;
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; import dao.UserDao; /**
* Servlet implementation class AdminServlet
*/
@WebServlet("/AdminServlet")
public class Adminservlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public Adminservlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String user = request.getParameter("user");
String password=request.getParameter("password");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
String address=request.getParameter("address");
String num=request.getParameter("num");
String email=request.getParameter("email");
String xi=request.getParameter("xi");
String yuan=request.getParameter("yuan");
String clas=request.getParameter("clas");
String bei=request.getParameter("bei");
String year=request.getParameter("year");
int x=0;
int a=0;
if(user.equals("")) {
request.setAttribute("message", "账号不能为空!");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
if(!num.equals("")) {
a=num.length();
String ye=num.substring(0, 4); if(!ye.equals("2018"))x=4;} int ps=password.length();
if(ps<8)x=2; int l=user.length();
if(l<6||l>12)x=3;
String s=user;
Pattern pa = Pattern.compile("[a-zA-Z].*");
Matcher isNum = pa.matcher(s.charAt(0)+"");
if (!isNum.matches()) {
x=1; } String reg = "\\w+@(\\w+\\.){1,3}\\w+";
Pattern pattern = Pattern.compile(reg);
boolean flag = false;
if (email != null) {
Matcher matcher = pattern.matcher(email);
flag = matcher.matches();
} boolean n = false;
if(x==0)
{
if(a==8)
{
if(flag==true)
{
try {
/*request.setAttribute("message", username+ userpassword+ name+sex+address+ phone+ email);*/ n=UserDao.addPerson(user, password, name, sex, address, num, email, clas, xi, bei, yuan, year); } catch (Exception e) {;
// TODO 自动生成的 catch 块
e.printStackTrace();
}
if(n!=true)
{
request.setAttribute("message", "注册成功!!");
request.getRequestDispatcher("success.jsp").forward(request,response);
}else {
request.setAttribute("message", "注册失败");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
else
{
request.setAttribute("message", "邮箱格式错误");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
else
{
request.setAttribute("message", "学号不为8位");
request.getRequestDispatcher("index.jsp").forward(request,response);
}}
else {
if(x==1) {
request.setAttribute("message", "账号开头必须为字母");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
if(x==2) {
request.setAttribute("message", "密码长度应在8位以上");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
if(x==3) {
request.setAttribute("message", "账号长度应为6到12");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
if(x==4) {
request.setAttribute("message", "学号开头应为2018");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
} /**
* @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);
} }

数据库的连接DBUL类

package DBU;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
//这里可以设置数据库名称
private final static String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=777";
private static final String USER="sa";
private static final String PASSWORD="1999"; private static Connection conn=null;
//静态代码块(将加载驱动、连接数据库放入静态块中)
static{
try {
//1.加载驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2.获得数据库的连接
conn=(Connection)DriverManager.getConnection(URL,USER,PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} //对外提供一个方法来获取数据库连接
public static Connection getConnection(){
return conn;
}
}

Dao

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import DBU.DBUtil; public class UserDao { public static boolean addPerson(String user,String password,String name,String sex,String address,String num,String email,String clas ,String xi,String bei,String yuan,String year)throws SQLException{
//首先拿到数据库的连接
Connection conn=DBUtil.getConnection();
String sql= "insert into Table_7 values(?,?,?,?,?,?,?,?,?,?,?,?)";//参数用?表示,相当于占位符; //预编译sql语句
PreparedStatement pst = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); //先对应SQL语句,给SQL语句传递参数
pst.setString(1, user);
pst.setString(2, password);
pst.setString(3, sex);
pst.setString(4, name);
pst.setString(5, num);
pst.setString(6, email);
pst.setString(7,yuan);
pst.setString(8, xi);
pst.setString(9, clas);
pst.setString(10, year);
pst.setString(11,address);
pst.setString(12, bei);
//执行SQL语句
boolean a=pst.execute();
/**
* prepareStatement这个方法会将SQL语句加载到驱动程序conn集成程序中,但是并不直接执行
* 而是当它调用execute()方法的时候才真正执行;
*
* 上面SQL中的参数用?表示,相当于占位符,然后在对参数进行赋值。
* 当真正执行时,这些参数会加载在SQL语句中,把SQL语句拼接完整才去执行。
* 这样就会减少对数据库的操作
*/
return a;

运行效果:

提示信息:

提交成功界面:

最新文章

  1. Workflow中InArgument与OutArgument区别
  2. [CareerCup] 17.12 Sum to Specific Value 和为特定数
  3. 需要使用id内省方法--responsesToSelector: 的两个地方
  4. android WebView问题
  5. K2 blackpearl 流程开发(二)
  6. php实现自动运行文件
  7. 更改debian的软件源sources.list
  8. __get __set 实例
  9. 积累的VC编程小技巧之打印相关
  10. 事件日志:无法加载站点/服务的所有 ISAPI 筛选器。因此启动中止。
  11. Git时光机穿梭之工作区和暂存区
  12. 网络与WEB 编程
  13. spring 完成multipart数据上传
  14. SceneKit做一个旋转的地球效果
  15. 关于当前Web前端技术的一些感悟和笔记
  16. Ext z自写checkbox
  17. 微信小程序弹出操作菜单
  18. layui xtree 实现一级节点单选 ,子节点复选
  19. zookeeper的WEB客户端zkui使用
  20. cas 资源

热门文章

  1. React+Echarts简单的封装套路
  2. MySQL存储引擎——MyISAM与InnoDB区别
  3. 动手学习Pytorch(4)--过拟合欠拟合及其解决方案
  4. JavaScript 构造函数的继承
  5. Pycrypto与RSA密码技术
  6. .NET代码混淆工具NET Reactor - 初学者系列-学习者系列文章
  7. 一起了解 .Net Foundation 项目 No.7
  8. JS-重写内置的call、apply、bind
  9. 下拉菜单的jquery组件封装
  10. docker jenkins 前端node项目 自动化部署异常 env: ‘node’: No such file or directory