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


    一、题目: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 =  /^[wu4e00-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=" 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>

     

    四、程序测试

     

     

                                      

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    数据持久化-- json、pickle
    socket编程介绍
    RHEL/CentOS 下安装yum源地址汇集---不定期更新
    设置阿里云pip源,加速pip更新速度
    pacemaker+corosync+haporxy高可用集群部署
    etcd数据库备份与还原
    PEM格式的证书转换格式
    CentOS 7 上 yum 安装python3
    webconsole提示undefined: ssh.InsecureIgnoreHostkey错误解决方案
    oh my zsh 配置文件
  • 原文地址:https://www.cnblogs.com/yang2000/p/11717664.html
Copyright © 2020-2023  润新知