用javaweb写一个注册界面,并将数据保存到后台数据库(全部完成)(课堂测试)

时间:2024-02-22 20:27:06

一、题目:WEB界面链接数据库

1.考试要求:

 

 

 

1登录账号:要求由6到12位字母、数字、下划线组成,只有字母可以开头;(1分)

2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母、数字组成。(1分)

3性别:要求用单选框或下拉框实现,选项只有“男”或“女”;(1分)

4学号:要求八位数字组成,前四位为“2018”开头,输入自己学号;(1分)

5姓名:输入自己的姓名;

5电子邮箱:要求判断正确格式xxxx@xxxx.xxxx;(1分)

6点击“添加”按钮,将学生个人信息存储到数据库中。(3分)

7可以演示连接上数据库。(2分)

二、设计思路:

1、首先在users.jsp代码中,用HTML写一个添加表单即可

2、在DBUtil.java文件编写中对数据库进行连接和关闭的操作

3、在Dao.java文件中编写向数据库中插入数据的SQL语句,以及判断Servelet.java中传递的数据是否为空。

4、在 users.jsp 文件中对表单用javascript进行form表单校验,将满足所有添加要求的数据传入Servelet.java中,用post方式传递。

5、在Selvlet.java 文件调用DBUtil.java文件和Dao.java文件,得到Dao.java中判断Servelet.java中传递的数据是否为空的函数,并进行二次表单校验。

6、Servelet.java中若数据合理,调用DBUtil.java的方法,连接数据库将数据通过参数的形式传递给在Dao.java文件中向数据库中插入数据的SQL语句,将数据添加到数据库。若添加成功,给出提示信息并返回users.jsp代码中action跳转的Servlet?method=add页面。若添加失败,给出提示信息并返回users.jsp代码中action跳转的Servlet?method=add页面。

 

三、源代码

1、Dao.java文件

 

 1 package Dao;
 2 
 3 import java.sql.Connection;
 4 import java.sql.Statement;
 5 
 6 import DBUtil.DBUtil;
 7 
 8 import Entity.User;
 9 
10 public class Dao {
11 
12     public boolean add(User user) {
13         //将数据插入数据库的SQL语句
14         String sql = "insert into uses1 (username,password,sex,name,stuname,email,xueyuan,xi,banji,year,address,addtext) values(\'"+ user.getUsername() + "\',\'"+ user.getPassword() +"\',\'"+ user.getSex() +"\',\'"+user.getName() +"\',\'"+ user.getStuname() +"\',\'"+user.getEmail()+"\',\'"+ user.getXueyuan() +"\',\'"+user.getXi()+"\',\'"+user.getBanji()+"\',\'"+user.getYear()+"\',\'"+user.getAddress()+"\',\'"+user.getAddtext()+"\')";
15         // 创建数据库链接
16         Connection conn = DBUtil.getConn();
17         Statement state = null;
18         boolean f = false;
19         int a = 0;
20       
21         try {
22             state = conn.createStatement();
23             a=state.executeUpdate(sql);
24         } catch (Exception e) {
25             e.printStackTrace();
26         } finally {
27             // 关闭z 连接
28             DBUtil.close(state, conn);
29         }
30    
31         if (a > 0) {
32             f = true;
33         }
34         return f;
35 
36 }
37 
38 
39 }

 

2、DBUtil.java文件

 1 package DBUtil;
 2 
 3 
 4 
 5 import java.sql.Connection;
 6 import java.sql.DriverManager;
 7 import java.sql.PreparedStatement;
 8 import java.sql.ResultSet;
 9 import java.sql.SQLException;
10 import java.sql.Statement;
11 
12 /**
13  * @author Hu
14  *
15  */
16 public class DBUtil {
17     
18     public static String db_url = "jdbc:mysql://localhost:3306/user?serverTimezone=UTC";//登录数据库
19     public static String db_user = "root";
20     public static String db_pass = "123";
21     
22     public static Connection getConn () {
23         Connection conn = null;
24         
25         try {
26             Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
27             conn = DriverManager.getConnection(db_url, db_user, db_pass);
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31         
32         return conn;
33     }
34      /**
35          * 关闭与数据库的连接
36      * @param state
37      * @param conn
38      */
39     public static void close (Statement state, Connection conn) {
40         if (state != null) {
41             try {
42                 state.close();
43             } catch (SQLException e) {
44                 e.printStackTrace();
45             }
46         }
47         
48         if (conn != null) {
49             try {
50                 conn.close();
51             } catch (SQLException e) {
52                 e.printStackTrace();
53             }
54         }
55     }
56     
57     public static void close (ResultSet rs, Statement state, Connection conn) {
58         if (rs != null) {
59             try {
60                 rs.close();
61             } catch (SQLException e) {
62                 e.printStackTrace();
63             }
64         }
65         
66         if (state != null) {
67             try {
68                 state.close();
69             } catch (SQLException e) {
70                 e.printStackTrace();
71             }
72         }
73         
74         if (conn != null) {
75             try {
76                 conn.close();
77             } catch (SQLException e) {
78                 e.printStackTrace();
79             }
80         }
81     }
82     public static void main(String[] args) throws SQLException {
83         Connection conn = getConn();
84         PreparedStatement pstmt = null;
85         ResultSet rs = null;
86         String sql ="select * from users";
87         pstmt = conn.prepareStatement(sql);
88         rs = pstmt.executeQuery();
89         if(rs.next()){
90             System.out.println("空");
91         }else{
92             System.out.println("不空");
93         }
94     }
95 }

 

 

3、User.java(用户属性类)文件

  1 package Entity;
  2 
  3 public class User {
  4     
  5     private String username;
  6     private String password;
  7     private String sex;
  8     private String name;
  9     private String stuname;
 10     private String email;
 11     private String xueyuan;
 12     private String xi;
 13     private String banji;
 14     private String year;
 15     private String address;
 16     private String addtext;
 17     
 18     public String getUsername() {
 19         return username;
 20     }
 21 
 22     public void setUsername(String username) {
 23         this.username = username;
 24     }
 25 
 26     public String getPassword() {
 27         return password;
 28     }
 29 
 30     public void setPassword(String password) {
 31         this.password = password;
 32     }
 33 
 34     public String getSex() {
 35         return sex;
 36     }
 37 
 38     public void setSex(String sex) {
 39         this.sex = sex;
 40     }
 41 
 42     public String getName() {
 43         return name;
 44     }
 45 
 46     public void setName(String name) {
 47         this.name = name;
 48     }
 49 
 50     public String getStuname() {
 51         return stuname;
 52     }
 53 
 54     public void setStuname(String stuname) {
 55         this.stuname = stuname;
 56     }
 57 
 58     public String getEmail() {
 59         return email;
 60     }
 61 
 62     public void setEmail(String email) {
 63         this.email = email;
 64     }
 65 
 66     public String getXueyuan() {
 67         return xueyuan;
 68     }
 69 
 70     public void setXueyuan(String xueyuan) {
 71         this.xueyuan = xueyuan;
 72     }
 73 
 74     public String getXi() {
 75         return xi;
 76     }
 77 
 78     public void setXi(String xi) {
 79         this.xi = xi;
 80     }
 81 
 82     public String getBanji() {
 83         return banji;
 84     }
 85 
 86     public void setBanji(String banji) {
 87         this.banji = banji;
 88     }
 89 
 90     public String getYear() {
 91         return year;
 92     }
 93 
 94     public void setYear(String year) {
 95         this.year = year;
 96     }
 97 
 98     public String getAddress() {
 99         return address;
100     }
101 
102     public void setAddress(String address) {
103         this.address = address;
104     }
105 
106     public String getAddtext() {
107         return addtext;
108     }
109 
110     public void setAddtext(String addtext) {
111         this.addtext = addtext;
112     }
113 
114     public User() {}
115     
116 public User(String username,String password,String sex,String name,String stuname,String email,String xueyuan, String xi,String banji,String year,String address,String addtext) {
117         
118         
119         this.username=username;
120         this.password=password;
121         this.sex=sex;
122         this.name=name;
123         this.stuname=stuname;
124         this.email=email;
125         this.xueyuan=xueyuan;
126         this.xi=xi;
127         this.banji=banji;
128         this.year=year;
129         this.address=address;
130         this.addtext=addtext;
131         
132     }
133     
134 
135 }

 

4、Servlet.java文件

 1 package Servlet;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.ServletException;
 6 import javax.servlet.annotation.WebServlet;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 import Dao.Dao;
12 
13 import Entity.User;
14 
15 
16 
17 
18 @WebServlet("/Servlet")
19 public class Servlet extends HttpServlet {
20     private static final long serialVersionUID = 1L;
21        
22     
23     public Servlet() {
24         super();
25         
26     }
27     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
28         req.setCharacterEncoding("utf-8");
29         String method = req.getParameter("method");
30         if ("add".equals(method)) {
31             add(req, resp);
32         } 
33     }
34     
35     
36     public void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
37         req.setCharacterEncoding("utf-8");
38         String username = req.getParameter("username");
39         String password = req.getParameter("password");
40         String sex = req.getParameter("sex");
41         String name = req.getParameter("name");
42         String stuname = req.getParameter("stuname");
43         String email = req.getParameter("email");
44         String xueyuan = req.getParameter("xueyuan");
45         String xi= req.getParameter("xi");
46         String banji= req.getParameter("banji");
47         String year= req.getParameter("year");
48         String address= req.getParameter("address");
49         String addtext= req.getParameter("addtext");
50         //调用用户属性类
51         User user = new User(username,password,sex,name,stuname,email,xueyuan,xi,banji,year,address,addtext);
52         //接受判断函数返回值
53         Dao dao =new Dao();
54         boolean f=dao.add(user);
55         //提示信息
56         if(f) {
57             req.setAttribute("message", "注册成功!");
58             req.getRequestDispatcher("users.jsp").forward(req,resp);
59         } 
60         else {
61             req.setAttribute("message", "已有账号,重复登录!");
62             req.getRequestDispatcher("users.jsp").forward(req,resp);
63         }
64     }
65 }

 

5、users.jsp文件

  1 <%@ page language="java" contentType="text/html; charset=UTF-8"
  2     pageEncoding="UTF-8"%>
  3 <!DOCTYPE html>
  4 <html>
  5 <head>
  6 <meta charset="UTF-8">
  7 <title>Insert title here</title>
  8 <script>
  9   //表单校验
 10    function check() {
 11         flag=0;
 12         var rep =  /^[\w\u4e00-\u9fa5]{6,8}$/;  //判断字符串是否为数字和字母组合  
 13         var myPattern = new RegExp("^[a-zA-Z]"); // 以英文字母开头
 14         var username = document.getElementById("username").value;
 15         //alert(username.length);
 16         if(!(username.length>5&&username.length<13)){
 17             alert("用户名长度错误!");return false;
 18         }
 19         else if(!(rep.test(username))){
 20             alert("用户名组成内容错误!");return false;
 21         }else if(!(myPattern.exec(username))){
 22             alert("用户名开头必须是字母!");return false;
 23         }
 24         var password = document.getElementById("password").value;
 25         if(password.length<8){
 26             alert("密码长度错误");
 27             return false;
 28         }
 29         
 30         var stuname = document.getElementById("stuname").value;
 31         if(stuname.length!=8){
 32             alert("学号长度错误!");
 33             return false;
 34         }
 35         if(stuname [0]==\'2\'&&stuname[1]==\'0\'&&stuname[2]==\'1\'&&stuname[3]==\'8\'){
 36             flag++;
 37             }
 38         else{
 39             alert("学号格式错误!");
 40             return false;
 41         }
 42         
 43         var email = document.getElementById("email").value;
 44         if(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(email)){
 45             flag++;
 46             }
 47         else{
 48             alert("邮箱格式错误!");
 49             return false;
 50         }
 51         //标志法判断是否添加成功
 52         if(flag>1){
 53             alert("添加成功");
 54             return true;
 55         }
 56         else{
 57             alert("添加失败");
 58             return false;
 59         }
 60 }
 61 </script>
 62 </head>
 63     
 64     <body>
 65     
 66     
 67     
 68         <table border="0px" cellpadding="10px" cellspacing="0px"
 69                 style="width: 50%;margin:auto;background:rgb(195,195,195)"  bordercolor="red" >
 70                     <form action="Servlet?method=add" method="post"
 71             onsubmit="return check()">
 72             <caption>当前位置:添加学生信息</caption>
 73           
 74              
 75                 <tr>
 76                     <td>登录账号:</td>
 77                     <td><input type="text" name="username" id="username"></td>
 78                 </tr>
 79                 <tr>
 80                     <td>登录密码:</td>
 81                     <td><input type="password" name="password" id="password" ></td>
 82                 </tr>
 83                 <tr>
 84                     <td>性别:</td>
 85                     <td>
 86                     <select name="sex">
 87                             <option value="男">男</option>
 88                             <option value="女">女</option>
 89                       </select>
 90                     </td>
 91                 </tr>
 92                 <tr>
 93                     <td>姓名:</td>
 94                     <td><input type="text" name="name"></td>
 95                 </tr>
 96                 <tr>
 97                      <td>学号:</td>
 98                     <td><input type="text" name="stuname" id="stuname"></td>
 99                 </tr>
100                   <tr>
101                     <td>电子邮箱:</td>
102                     <td><input type="text" name="email" id="email"></td>
103                 </tr>
104                 <tr>
105                     <td>所在学院:</td>
106                     <td><input type="text" name="xueyuan"></td>
107                 </tr>
108                  <tr>
109                     <td>所在系:</td>
110                     <td><input type="text" name="xi"></td>
111                 </tr>
112                 <tr>
113                     <td>所在班级:</td>
114                     <td><input type="text" name="banji"></td>
115                 </tr>
116                 <tr>
117                     <td>入学年份(届):</td>
118                     <td>
119                         <select name="year">
120                             <option value="1998">1998</option>
121                             <option value="1999">1999</option>
122                             <option value="2000">2000</option>
123                             <option value="2001">2001</option>
124                             <option value="2002">2002</option>
125                             <option value="2003">2003</option>
126                             <option value="2004">2004</option>
127                             <option value="2005">2005</option>
128                             <option value="2006">2006</option>
129                             <option value="2007">2007</option>
130                             <option value="2008">2008</option>
131                             <option value="2009">2009</option>
132                             <option value="2010">2010</option>
133                             <option value="2011">2011</option>
134                             <option value="2012">2012</option>
135                             <option value="2013">2013</option>
136                             <option value="2014">2014</option>
137                             <option value="2015">2015</option>
138                             <option value="2016">2016</option>
139                             <option value="2017">2017</option>
140                             <option value="2018">2018</option>
141                             <option value="2019">2019</option>
142                         </select>
143                     </td>
144                 </tr>
145                  <tr>
146                     <td>生源地:</td>
147                     <td><input type="text" name="address"></td>
148                 </tr>
149                  <tr>
150                     <td>
151                                     备注:
152                     </td>
153                     <td>
154                     <input type="text" name="addtext" >
155                     </td>
156                 </tr>
157                 <tr>
158                     <th colspan="2">
159                         <input type="submit" value="添加">
160                     </th>
161                 </tr>
162             </form>
163         </table>
164     </body>
165 </html>

 

四、程序测试