题目要求:
1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分)
2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分)
3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分)
4学号:要求八位数字组成,前四位为“2018”开头,输入自己学号;(1分)
5姓名:输入自己的姓名;
5电子邮箱:要求判断正确格式该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。;(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项目有些不熟悉,连数据库也不太会,只有多多练习,别人的代码不是你的代码,别人告诉你的代码,你不一定会,同样,从网上找到的模板你不一定会,因此一定要自己写代码,写明白,这样才是自己真的会了,否则,你这次找别人要的代码,下次也还会是,你永远也不会进步,就像是愚公一样,哪怕自己一次弄不明白,可以千次万次,这样也会进步,可就是不能去复制粘贴,别人的代码,一知半解或者压根都不明白,这才是最可怕的,表面上很厉害,但是真拿出来,自己又是不会,因此,要培养自己独立动手思考还有改错的能力