题目要求:

 

 

 

1登录账号:要求由612位字母、数字、下划线组成,只有字母可以开头;(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="女">&nbsp;&nbsp;
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项目有些不熟悉,连数据库也不太会,只有多多练习,别人的代码不是你的代码,别人告诉你的代码,你不一定会,同样,从网上找到的模板你不一定会,因此一定要自己写代码,写明白,这样才是自己真的会了,否则,你这次找别人要的代码,下次也还会是,你永远也不会进步,就像是愚公一样,哪怕自己一次弄不明白,可以千次万次,这样也会进步,可就是不能去复制粘贴,别人的代码,一知半解或者压根都不明白,这才是最可怕的,表面上很厉害,但是真拿出来,自己又是不会,因此,要培养自己独立动手思考还有改错的能力