题目要求:
1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分)
2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分)
3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分)
4学号:要求八位数字组成,前四位为“2018”开头,输入自己学号;(1分)
5姓名:输入自己的姓名;
5电子邮箱:要求判断正确格式xxxx@xxxx.xxxx;(1分)
6点击“添加”按钮,将学生个人信息存储到数据库中。(3分)
7可以演示连接上数据库。(2分)
思路:
先建立一个web项目,制作网页。然后在src目录下建立四个包。
第一个包,bean包,包括userbean类,代码如下,主要进行,数据的声明,和get()、set()、有参构造方法和无参构造方法
1 package com.user.bean; 2 3 public class UserBean { 4 private String id; 5 private String pass; 6 private String sex; 7 private String name; 8 private String xue; 9 private String e_mail; 10 private String yuan; 11 private String xi; 12 private String ban; 13 private String nian; 14 private String di; 15 private String bei; 16 17 public String getId() { 18 return id; 19 } 20 public void setId(String id) { 21 this.id = id; 22 } 23 public String getPass() { 24 return pass; 25 } 26 public void setPass(String pass) { 27 this.pass = pass; 28 } 29 public String getSex() { 30 return sex; 31 } 32 public void setSex(String sex) { 33 this.sex = sex; 34 } 35 public String getName() { 36 return name; 37 } 38 public void setName(String name) { 39 this.name = name; 40 } 41 public String getXue() { 42 return xue; 43 } 44 public void setXue(String xue) { 45 this.xue = xue; 46 } 47 public String getE_mail() { 48 return e_mail; 49 } 50 public void setE_mail(String e_mail) { 51 this.e_mail = e_mail; 52 } 53 public String getYuan() { 54 return yuan; 55 } 56 public void setYuan(String yuan) { 57 this.yuan = yuan; 58 } 59 public String getXi() { 60 return xi; 61 } 62 public void setXi(String xi) { 63 this.xi = xi; 64 } 65 public String getBan() { 66 return ban; 67 } 68 public void setBan(String ban) { 69 this.ban = ban; 70 } 71 public String getNian() { 72 return nian; 73 } 74 public void setNian(String nian) { 75 this.nian = nian; 76 } 77 public String getDi() { 78 return di; 79 } 80 public void setDi(String di) { 81 this.di = di; 82 } 83 public String getBei() { 84 return bei; 85 } 86 public void setBei(String bei) { 87 this.bei = bei; 88 } 89 90 public UserBean() {} 91 public UserBean(String Id,String Pass,String Sex,String Name,String Xue,String E_mail,String Yuan,String Xi,String Ban,String Nian,String Di,String Bei) 92 { 93 this.id=Id; 94 this.pass=Pass; 95 this.sex=Sex; 96 this.name=Name; 97 this.xue=Xue; 98 this.e_mail=E_mail; 99 this.yuan=Yuan; 100 this.xi=Xi; 101 this.ban=Ban; 102 this.nian=Nian; 103 this.di=Di; 104 this.bei=Bei; 105 } 106 }
第二个包,dao层封装方法
1 package com.user.dao; 2 import java.sql.Connection; 3 import java.sql.ResultSet; 4 import java.sql.Statement; 5 import java.util.ArrayList; 6 import java.util.List; 7 import com.user.bean.UserBean; 8 import com.util.DBUtil; 9 10 public class UserDao { 11 public static void main(String[] args) { 12 // List<UserBean> users=new ArrayList<UserBean>(); 13 // UserBean user=new UserBean(); 14 // user=list("1"); 15 // System.out.println(user.getId_zaibu()); 16 // checkLogin("root","root"); 17 18 } 19 20 /** 21 * 注册 22 * @param userBean 23 */ 24 public void reg(UserBean userBean) { 25 String sql = "insert into login(Id,Pass,Sex,Name,Xue,E_mail,Yuan,Xi,Ban,Nian,Di,Bei) values(‘"+userBean.getId()+"‘,‘"+userBean.getPass()+"‘,‘"+userBean.getSex()+"‘,‘"+userBean.getName()+"‘,‘"+userBean.getXue()+"‘,‘"+userBean.getE_mail()+"‘,‘"+userBean.getYuan()+"‘,‘"+userBean.getXi()+"‘,‘"+userBean.getBan()+"‘,‘"+userBean.getNian()+"‘,‘"+userBean.getDi()+"‘,‘"+userBean.getBei()+"‘)"; 26 Connection conn = DBUtil.getConn(); 27 Statement state = null; 28 try { 29 state = conn.createStatement(); 30 state.executeUpdate(sql); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 }finally{ 34 DBUtil.close(state, conn); 35 } 36 } 37 }
第三个包,servlet层,连接页面和数据库;
package com.user.servlet; import java.io.IOException; 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 javax.servlet.http.HttpSession; import com.user.bean.UserBean; import com.user.dao.UserDao; /** * Servlet implementation class LoginServlet */ @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub // response.getWriter().append("Served at: ").append(request.getContextPath()); req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); HttpSession session=req.getSession(); String Id = req.getParameter("Id"); String Pass = req.getParameter("Pass"); String Name = req.getParameter("Name"); String Sex = req.getParameter("Sex"); String Xue = req.getParameter("Xue"); String Di = req.getParameter("Di"); String Yuan = req.getParameter("Yuan"); String E_mail = req.getParameter("E_mail"); String Xi = req.getParameter("Xi"); String Ban = req.getParameter("Ban"); String Nian = req.getParameter("Nian"); String Bei = req.getParameter("Bei"); UserDao adminDao = new UserDao(); UserBean a=new UserBean(); a.setId(Id); a.setPass(Pass); a.setName(Name); a.setXue(Xue); a.setSex(Sex); a.setDi(Di); a.setXi(Xi); a.setBan(Ban); a.setNian(Nian); a.setBei(Bei); a.setE_mail(E_mail); a.setYuan(Yuan); adminDao.reg(a); resp.sendRedirect(req.getContextPath() + "/Sussess.jsp"); } /** * @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); } }
第四个包,封装工具层
1 package com.util; 2 3 public class Constants { 4 public static final String SESSION_LOGIN_BEAN="loginbean"; 5 6 }
1 package com.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 /** 10 * 数据库的工具类 11 * @author zm 12 * 13 */ 14 public class DBUtil { 15 //eshop为数据库名称,db_user为数据库用户名db_password为数据库密码 16 public static String db_url ="jdbc:mysql://localhost:3306/daer?&useSSL=false&serverTimezone=UTC"; 17 public static String db_user = "root"; 18 public static String db_password = "root"; 19 public static Connection getConn() { 20 Connection conn = null; 21 try { 22 Class.forName("com.mysql.jdbc.Driver"); 23 conn = DriverManager.getConnection(db_url, db_user, db_password); 24 } catch (Exception e) { 25 e.printStackTrace(); 26 } 27 return conn; 28 } 29 30 public static void close(Statement state, Connection conn) { 31 if(state!=null) { 32 try { 33 state.close(); 34 } catch (SQLException e) { 35 e.printStackTrace(); 36 } 37 } 38 if(conn!=null) { 39 try { 40 conn.close(); 41 } catch (SQLException e) { 42 e.printStackTrace(); 43 } 44 } 45 } 46 47 public static void close(ResultSet rs, Statement state, Connection conn) { 48 if(rs!=null) { 49 try { 50 rs.close(); 51 } catch (SQLException e) { 52 e.printStackTrace(); 53 } 54 } 55 if(state!=null) { 56 try { 57 state.close(); 58 } catch (SQLException e) { 59 e.printStackTrace(); 60 } 61 } 62 if(conn!=null) { 63 try { 64 conn.close(); 65 } catch (SQLException e) { 66 e.printStackTrace(); 67 } 68 } 69 } 70 }
package com.util; import java.util.ArrayList; import java.util.List; import java.util.Random; public class StringUtil { /** * @param str * @return */ public static int StringToInt(String str) { int result = 0; try { result = Integer.parseInt(str); } catch (NumberFormatException e) { result = 0; //e.printStackTrace(); } return result; } /** * @param length * @return */ public static String getRandomString(int length) { String base = "abcdefghijklmnopqrstuvwxyz0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(base.length()); sb.append(base.charAt(number)); } return sb.toString(); } public static List<String> splitProperties (String properties){ List<String> options = new ArrayList<String>(); String option = null; String[] strings = properties.split(","); for (String string : strings) { if(!"0".equals(string)){ option = string.charAt(3)+""; options.add(option); } } return options; } /** * @param str * @return */ public static float strToFlo(String str) { float i = 0; try { i = Integer.parseInt(str); } catch (Exception e) { } return i; } }
网页界面:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <title>登录</title> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 9 <style type="text/css"> 10 .code 11 { 12 background-image:url(code.jpg); 13 font-family:Arial; 14 font-style:italic; 15 color:Red; 16 border:0; 17 padding:2px 3px; 18 letter-spacing:3px; 19 font-weight:bolder; 20 } 21 .unchanged 22 { 23 border:0; 24 } 25 </style> 26 <script type="text/javascript"> 27 function validate() 28 { 29 30 var Id=document.forms["myForm"]["Id"].value; 31 var reg= /^[A-Za-z0-9]{6,12}$/; 32 33 if(!Id.match(reg)) 34 { 35 alert("登陆账号必须由六到十二英文字符或数字组成,以英文字母开头"); 36 return false; 37 } 38 var Pass=document.forms["myForm"]["Pass"].value; 39 reg= /^[A-Za-z0-9]{8,20}$/; 40 if(!Pass.match(reg)) 41 { 42 alert("密码必须由八位以上英文字符或数字组成"); 43 return false; 44 } 45 46 var Xue=document.forms["myForm"]["Xue"].value; 47 reg= /^[0-9]{8}$/; 48 if(!Xue.match(reg)) 49 { 50 alert("要求八位数字组成,前四位为“2018”开头"); 51 return false; 52 } 53 var E_mail=document.forms["myForm"]["E_mail"].value; 54 reg=/^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g; 55 if(!E_mail.match(reg)) 56 { 57 alert("邮箱请输入正确格式"); 58 return false; 59 } 60 } 61 62 </script> 63 </head> 64 <body > 65 <form name="myForm" action="${pageContext.request.contextPath}/LoginServlet" onsubmit="return validate()" method="post" > 66 <label>登陆账号</label> 67 <input name="Id" type="text" value="" /><br> 68 <label >登陆密码</label> 69 <input type="Pass" name="Pass" ><br> 70 <label >性别</label> 71 <input name="Sex" type="radio" value="女">女 72 <input name="Sex" type="radio" value="男">男<br> 73 <label >姓名</label> 74 <input name="Name" type="text" value="" /><br> 75 <label >学号</label> 76 <input name="Xue" type="text" value="" /><br> 77 <label >电子邮件</label> 78 <input name="E_mail" type="text" value="" /><br> 79 <label >所在学院</label> 80 <input name="Yuan" type="text" value="" /><br> 81 <label >所在系</label> 82 <input name="Xi" type="text" value="" /><br> 83 <label >所在班级</label> 84 <input name="Ban" type="text" value="" /><br> 85 <label >入学年份(届)</label> 86 <select name="Nian"> 87 <%for(int i=1998;i<2020;i++){ %> 88 <option value="<%=i%>"><%=i %></option> 89 <%} %> 90 </select><br> 91 <label >生源地</label> 92 <input name="Di" type="textarea" value="" /><br> 93 <label >备注</label> 94 <textarea name="Bei" rows="20" cols="20"></textarea><br> 95 <button type="submit">注册</button> 96 <button type="reset" >重置</button> 97 </form> 98 </body> 99 </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Insert title here</title> </head> <body> <script type="text/javascript"> alert("成功!"); </script> </body> </html>
sql语句:
1 /* 2 Navicat MySQL Data Transfer 3 4 Source Server : MySQL 5 Source Server Version : 80015 6 Source Host : localhost:3306 7 Source Database : daer 8 9 Target Server Type : MYSQL 10 Target Server Version : 80015 11 File Encoding : 65001 12 13 Date: 2019-10-21 15:21:01 14 */ 15 16 SET FOREIGN_KEY_CHECKS=0; 17 18 -- ---------------------------- 19 -- Table structure for login 20 -- ---------------------------- 21 DROP TABLE IF EXISTS `login`; 22 CREATE TABLE `login` ( 23 `Id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 24 `Pass` varchar(255) DEFAULT NULL, 25 `Sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 26 `Name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 27 `Xue` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 28 `E_mail` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 29 `Yuan` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, 30 `Xi` varchar(255) DEFAULT NULL, 31 `Ban` varchar(255) DEFAULT NULL, 32 `Nian` varchar(255) DEFAULT NULL, 33 `Di` varchar(255) DEFAULT NULL, 34 `Bei` varchar(255) DEFAULT NULL 35 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 36 37 -- ---------------------------- 38 -- Records of login 39 -- ----------------------------
运行结果如下:
以下分别是条件不满足,和最后满足添加成功以及数据库保存的内容
体会:以后做大项目的时候,尤其要注意分层完成,条理清晰,哪里出了问题可以去改,而且做完一个小类就要去测试,是否正确,不要等到所有内容全部完成,因为全部完成的话,代码量很大,出问题了你也不知道如何去改,很费时间,相反,保证每个小项目都没有错,那么大的错误也不会有。初次做java web项目有些不熟悉,连数据库也不太会,只有多多练习,别人的代码不是你的代码,别人告诉你的代码,你不一定会,同样,从网上找到的模板你不一定会,因此一定要自己写代码,写明白,这样才是自己真的会了,否则,你这次找别人要的代码,下次也还会是,你永远也不会进步,就像是愚公一样,哪怕自己一次弄不明白,可以千次万次,这样也会进步,可就是不能去复制粘贴,别人的代码,一知半解或者压根都不明白,这才是最可怕的,表面上很厉害,但是真拿出来,自己又是不会,因此,要培养自己独立动手思考还有改错的能力
原文:https://www.cnblogs.com/tkg1314/p/11715911.html