2011-11-10 420 views
0

我不確定如何訪問我的參數,然後使用它們在我的數據庫中註冊用戶。登錄系統/註冊用戶

這裏是register.jsp

<%@page import="java.util.Enumeration"%> 
<%@ 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"> 
<LINK href="style.css" rel="stylesheet" type="text/css"> 
<title>Opret bruger</title> 
<jsp:useBean id="dbconnect" class="dbconnection.dbconnect.CreateUser" scope="session"></jsp:useBean> 

<jsp:setProperty name="dbconnect" property="*" /> 
</head> 
<body> 
<% 
    if(dbconnect.loggedIn){ 
     response.sendRedirect("minprofil.jsp"); 
    } 
%> 
<form> 

    <p><label for="navn">Navn:</label><input type="text" name="navn" /></p> 
    <p><label for="efternavn">Efternavn:</label><input type="text" name="efternavn" /></p> 
    <p><label for="alder">Alder:</label><input type="text" name="alder" /></p> 
    <p><label for="email">Email:</label><input type="text" name="email" /></p> 
    <p><label for="username">Brugernavn:</label><input type="text" name="username" /></p> 
    <p><label for="password">Kodeord:</label><input type="text" name="password" /></p> 
    <p><label for="retypepassword">Gentag kodeord:</label><input type="text" name="retypepassword" /></p> 
    <p><label for="yndlingshold">Yndlingshold:</label><input type="text" name="yndlingshold" /></p> 



    <p class="submit"> 
     <input type="submit" name="goToLogin" value="Gå til login" /> 
     <input type="submit" name="OpretBruger" value="Opret bruger" /> 
    </p> 
</form> 
<% 


    if(request.getParameter("goToLogin")!=null) 
     response.sendRedirect("login.jsp"); 

    if(request.getParameter("OpretBruger")!=null){ 
     What should i do here ? 
       "OpretBruger" means "Create user" in english 

    } 



%> 


</body> 
</html> 

的JSP代碼,然後這是我的Java Bean連接到數據庫和管理所有這些

package dbconnection; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
import java.sql.ResultSet; 



public class dbconnect { 
    private static Connection con; 
    String username; 
    String password; 
    int age; 
    String name; 
    public Boolean loggedIn = false; 
    private ResultSet rs; 
    CreateUser createuserClass = new CreateUser(); 


    public String getName(){ 
     return name; 
    } 
    public int getAge(){ 
     return age; 
    } 

    public String getUsername(){ 
     return username; 
    } 

    public String getPassword(){ 
     return password; 
    } 

    public void setUsername(String username){ 
     this.username = username; 

    } 

    public void setPassword(String password){ 
     this.password = password; 
    } 






    public synchronized static void init(){ 
     if(con!=null) 
      return; 

     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql:///BLANKED OUT","BLANKED OUY","BLANKED OUT"); 

     } catch (ClassNotFoundException e) { 

      e.printStackTrace(); 
      System.out.println("Could not find class, quitting."); 

     }// Loading DB driver 
     catch (SQLException e) { 

      e.printStackTrace(); 
      System.out.println("SQLException, quitting"); 
     } 

    } 

    public void checkLogin(){ 
     try { 
      PreparedStatement login = con.prepareStatement("SELECT * FROM brugere WHERE brugernavn=? AND password=?"); // REMEMBER TO CHANGE TABLE NAME IF DIFFERENT DB IS USED! 

      login.setString(1, username); 
      login.setString(2, password); 

      rs = login.executeQuery(); 


      if(rs.next()){ 
       loggedIn = true; 
       setInfo(); 
      }else{ 
       loggedIn = false; 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
      System.out.println("SQL exception in dbconnect, method = checklogin"); 
     } 
    } 



    public void setInfo(){ 
     try { 
      this.name = rs.getString(1) + " " + rs.getString(2); 
      this.username = rs.getString(5); 
      this.age = rs.getInt(3); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
      System.out.println("Something fucked up"); 
     } 



    } 


    // Class til at oprette brugeren. Denne får parametre fra registrer.jsp og sætter dem som globale variable 
    class CreateUser{ 
     // navn | efternavn | alder | email | brugernavn | password | hold 
     String navn; 
     String efternavn; 
     int alder; 
     String email; 
     String brugernavn; 
     String password; 
     String hold; 
     public void setNavn(String navn){ 
      this.navn = navn; 
     } 
     public void setEfternavn(String efternavn){ 
      this.efternavn = efternavn; 
     } 
     public void setAlder(int alder){ 
      this.alder = alder; 
     } 
     public void setEmail(String email){ 
      this.email = email; 
     } 
     public void setBrugernavn(String brugernavn){ 
      this.brugernavn = brugernavn; 
     } 
     public void setPassword(String password){ 
      this.password = password; 
     } 
     public void setHold(String hold){ 
      this.hold = hold; 
     } 


     // Funktionen som skal køres for, at opdatere database table 
     public void createUser(){ 



      try{ 
       PreparedStatement opretBruger = con.prepareStatement("INSERT INTO account VALUES(?,?,?,?,?,?,?)"); 
       opretBruger.setString(1, navn); 
       opretBruger.setString(2, efternavn); 
       opretBruger.setInt(3, alder); 
       opretBruger.setString(4, email); 
       opretBruger.setString(5, brugernavn); 
       opretBruger.setString(6, password); 
       opretBruger.setString(7, hold); 

       opretBruger.executeUpdate(); 




      }catch(Exception e) { 
       e.printStackTrace(); 
       System.out.println(navn + " " + efternavn + " " + alder); 
       System.out.println("Problemer med, at oprette bruger..."); 
      } 
     } 
    } 



} 

我的登錄系統工作正常,但我有麻煩關於如何讓我的用戶註冊工作。 我想創建一個獨立的類,並使用該bean來處理用戶註冊,而不必重新連接到數據庫等。這是重用代碼並節省時間。

我該如何做到這一點?

+0

Java不是縮寫 –

+0

代碼中有太多錯誤,我不知道從哪裏開始回答。所以這裏只是一個開始的鏈接,直接獲取基本概念:http://stackoverflow.com/tags/jsp/info。它包含了很多有用的鏈接(每個鏈接也包含很多有用的鏈接)。 – BalusC

回答

1

如果用戶按下「CreateUser」,則可以將請求和響應轉發給控制器servlet/JSP。

控制器servlet將獲得來自請求的所有參數,將它們存儲在一個ENUM(因爲你正在使用一個),它會打開一個數據庫連接(通過創建DB類(DBCONNECT)的一個實例,然後調用方法,傳遞數據或ENUM),你的數據庫類將更新你的數據庫。

控制器servlet然後將響應轉發到另一個JSP頁面或其他視圖並進行確認。

這些都是模型 - 視圖 - 控制器(MVC)模式的基礎知識,其中有控制器servlet,模型或您的情況下的dbconnect類(業務模型mutator),然後是一堆JSP頁面代表觀點。

這是我可以重複的一種,你可以處理你的情況。

問候!