初次Java web項目的建立以及與數據庫的連接


題目要求:

 

 

 

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項目有些不熟悉,連數據庫也不太會,只有多多練習,別人的代碼不是你的代碼,別人告訴你的代碼,你不一定會,同樣,從網上找到的模板你不一定會,因此一定要自己寫代碼,寫明白,這樣才是自己真的會了,否則,你這次找別人要的代碼,下次也還會是,你永遠也不會進步,就像是愚公一樣,哪怕自己一次弄不明白,可以千次萬次,這樣也會進步,可就是不能去復制粘貼,別人的代碼,一知半解或者壓根都不明白,這才是最可怕的,表面上很厲害,但是真拿出來,自己又是不會,因此,要培養自己獨立動手思考還有改錯的能力


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM