主要功能有:
1登錄賬號:要求由6到12位字母、數字、下划線組成,只有字母可以開頭;
2登錄密碼:要求顯示“• ”或“*”表示輸入位數,密碼要求八位以上字母、數字組成。
3性別:要求用單選框或下拉框實現,選項只有“男”或“女”;
4學號:要求八位數字組成,前四位為“2018”開頭,輸入自己學號;
5姓名:輸入自己的姓名;
5電子郵箱:要求判斷正確格式xxxx@xxxx.xxxx;
6點擊“添加”按鈕,將學生個人信息存儲到數據庫中。
7可以演示連接上數據庫。
模板:
先建立數據庫:
下面是我項目下的框架:
首先
domain層----- 建立數據對象的實體,就是一個javabean。
package com.domain; public class user { private String id; private String name; private String password; private String realname; private String sex; private String number; private String email; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRealname() { return realname; } public void setRealname(String realname) { this.realname = realname; } 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 getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
然后寫一個工具類用來連接數據庫,在util包下面
package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * @author Hu * */ public class DBUtil { public static String db_url = "jdbc:mysql://localhost:3306/homework?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true"; public static String db_user = "root"; public static String db_pass = "101032"; public static Connection getConn () { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(db_url, db_user, db_pass); System.out.println("連接成功!"); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void main(String[] args) { getConn(); } /** * @param state * @param conn */ 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(); } } } }
然后在dao包下寫操作數據庫的類
package com.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import com.domain.user; import com.util.DBUtil; public class RegisterDao { /** * 用戶注冊 * @param user * @return */ public boolean register(user user) { String sql = "insert into homework(name,password,realname,sex,number,email) values(?,?,?,?,?,?)"; Connection conn = DBUtil.getConn(); PreparedStatement pstmt = null; int count = 0; try { pstmt = conn.prepareStatement(sql); pstmt.setString(1,user.getName()); pstmt.setString(2,user.getPassword()); pstmt.setString(3,user.getRealname()); pstmt.setString(4,user.getSex()); pstmt.setString(5,user.getnumber()); pstmt.setString(6,user.getEmail()); count = pstmt.executeUpdate(); } catch (SQLException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } if(count>0) { return true; } return false; } }
然后就是service層中間層、業務邏輯層(接口)
package com.service; import com.dao.RegisterDao; import com.domain.user; public class RegisterService { private RegisterDao dao = new RegisterDao(); /** * 用於用戶注冊 * @param user * @return */ public boolean register(user user) { boolean registerSuccess = false; registerSuccess = dao.register(user); return registerSuccess; } }
然后是創建一個簡單servlet,繼承HttpServlet類,並實現doGet、doPost方法
package com.web.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.domain.user; import com.service.RegisterService; /** * Servlet implementation class RegisterServlet */ public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; private RegisterService Ser = new RegisterService(); /** * @see HttpServlet#HttpServlet() */ public RegisterServlet() { 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 name = request.getParameter("name"); String password = request.getParameter("password"); String realname = request.getParameter("realname"); String sex = request.getParameter("sex"); String number = request.getParameter("number"); String email = request.getParameter("email"); user user = new user(); user.setName(name); user.setPassword(password); user.setRealname(realname); user.setSex(sex); user.setnumber(number); user.setEmail(email); response.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); System.out.println(" "+user.getName()+" "+user.getPassword()+" "+user.getRealname()+" "+user.getSex()+" "+user.getnumber()+" "+user.getEmail()); if(Ser.register(user)) { out.println("<script> alert('添加成功!'); window.location.href='register.jsp'; </script>"); }else { out.println("<script> alert('添加失敗!'); window.location.href='register.jsp'; </script>"); } out.println("</HTML>"); out.flush(); out.close(); } /** * @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); } }
最后就是編寫jsp文件了,這個界面借鑒了其他人的模板,初學,勉強會用。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>用戶注冊</title> <!-- Bootstrapvalidate導入 --> <link rel="stylesheet" href="${pageContext.request.contextPath }/plug-ins/css/bootstrapValidator.css" /> <link href="${pageContext.request.contextPath}/plug-ins/css/demo.css" rel="stylesheet" type="text/css"> <!-- Bootstrap --> <link href="${pageContext.request.contextPath}/plug-ins/css/bootstrap.css" rel="stylesheet"> <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依賴 jQuery,所以必須放在前邊) --> <script src="${pageContext.request.contextPath}/plug-ins/js/jquery-1.10.2.min.js"></script> <!-- 加載 Bootstrap 的所有 JavaScript 插件。你也可以根據需要只加載單個插件。 --> <script src="${pageContext.request.contextPath}/plug-ins/js/bootstrap.js"></script> <!-- validate表單驗證導入 --> <script type="text/javascript" src="${pageContext.request.contextPath}/plug-ins/js/bootstrapValidator.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/plug-ins/js/bootstrapValidator_zh_CN.js"></script> <!-- Font Awesome --> <link rel="stylesheet" href="${pageContext.request.contextPath}/plug-ins/css/font-awesome.min.css"> <script type="text/javascript"> $(function() { $('#register').bootstrapValidator( { message : 'This value is not valid', feedbackIcons : { valid : 'glyphicon glyphicon-ok', invalid : 'glyphicon glyphicon-remove', validating : 'glyphicon glyphicon-refresh' }, fields : { name : { validators : { notEmpty : { message : '賬號不能為空' }, stringLength : { min : 6, max : 12, message : '賬號由6-12個字符組成' }, regexp : { regexp : /^[a-zA-Z][a-zA-Z0-9]+$/, message : '賬號只能由字母數字組成,必須由字母開頭' } } }, password:{ validators:{ notEmpty : { message : '密碼不能為空' }, stringLength : { min : 6, max : 6, message : '密碼必須由6個字母數字組成' }, regexp : { regexp : /^[a-zA-Z0-9]+$/, message : '密碼只能由字母數字組成' } } }, realname:{ validators:{ notEmpty : { message : '姓名不能為空' } } }, number:{ validators:{ notEmpty : { message : '學號不能為空' }, stringLength : { min : 8, max : 8, message : '學號必須由8位字符組成' }, regexp : { regexp : /^2018(\d{4})+$/, message : '請輸入正確的學號' } } }, email:{ validators:{ notEmpty : { message : '郵箱不能為空' }, regexp : { regexp : /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/, message : '請輸入正確的郵箱格式' } } } }, password1:{ validators:{ notEmpty : { message : '學院不能為空' }, stringLength : { min : 15, max : 15, }, regexp : { regexp : /^[a-zA-Z0-9]+$/, message : '學院只能由字母數字組成' } } }, password2:{ validators:{ notEmpty : { message : '所在系不能為空' }, stringLength : { min : 6, max : 6, }, regexp : { regexp : /^[a-zA-Z0-9]+$/, message : '所在系只能由字母數字組成' } } }, password3:{ validators:{ notEmpty : { message : '所在班級不能為空' }, stringLength : { min : 6, max : 6, }, regexp : { regexp : /^[a-zA-Z0-9]+$/, message : '所在班級只能由字母數字組成' } } }, password4:{ validators:{ notEmpty : { message : '生源地不能為空' }, stringLength : { min : 6, max : 6, }, regexp : { regexp : /^[a-zA-Z0-9]+$/, message : '生源地只能由字母數字組成' } } }, password5:{ validators:{ notEmpty : { message : '備注不能為空' }, stringLength : { min : 6, max : 6, }, regexp : { regexp : /^[a-zA-Z0-9]+$/, message : '備注只能由字母數字組成' } } }, }); }); </script> </head> <body> <div class="col-lg-8 col-lg-offset-2"> <div class="page-header"> <h2>用戶注冊</h2> </div> <form id="register" method="post" class="form-horizontal" action="${pageContext.request.contextPath }/registerServlet"> <div class="form-group"> <label class="col-lg-3 control-label">登陸賬號:</label> <div class="col-lg-4"> <input type="text" class="form-control" name="name" placeholder="請設置賬號 " /> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">登陸密碼:</label> <div class="col-lg-5"> <input type="password" class="form-control" name="password" placeholder="請設置登陸密碼" /> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">姓名:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="realname" placeholder="請輸入姓名" /> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">性別:</label> <div class="col-lg-5"> <input type="radio" name="sex" value="man" checked="checked"/> 男 <input type="radio" name="sex" value="woman" /> 女 </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">學號:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="number" placeholder="請輸入學號"/> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">郵箱:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="email" placeholder="請輸入用戶郵箱"/> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">所在學院:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="password1" placeholder="請輸入所在學院"/> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">所在系:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="password2" placeholder="請輸入所在系"/> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">所在班級:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="password3" placeholder="請輸入所在班級"/> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">年份:</label> <div class="col-lg-5"> <select id="" name="year"> <option value="">--入學年份(屆)--</option> <option value="2016">2016</option> <option value="2017">2017</option> <option value="2018">2018</option> <option value="2019">2019</option> </select> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">生源地:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="password4" placeholder="請輸入生源地"/> </div> </div> <div class="form-group"> <label class="col-lg-3 control-label">備注:</label> <div class="col-lg-5"> <input type="text" class="form-control" name="password5" placeholder="請輸入備注"/> </div> </div> <div class="form-group"> <div class="col-lg-3 col-lg-offset-3"> <button type="submit" class="btn btn-primary">注冊</button> </form> </div> </body> </html>
剛開始要完成一個項目的時候,犯了許多錯誤,包括Tomcat環境配置和數據庫連接的問題,總之先照貓畫虎的學習。最后別忘了在WebContent文件下的WEB-INF文件下的lib目錄導入jar文件。
沒有其他錯誤的出現,項目就能成功。