2011-11-10 427 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页面代表观点。

这是我可以重复的一种,你可以处理你的情况。

问候!