登录系统/注册用户

时间:2011-11-10 22:42:48

标签: java jsp registration

我不确定如何访问我的参数,然后使用它们在我的数据库中注册用户。

以下是register.jsp

的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>

然后这是我的Java bean连接到DB并管理所有

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来处理用户注册,而无需重新连接到DB等。这是重用代码并节省时间。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果用户按下“CreateUser”,则可以将请求和响应转发给控制器servlet / JSP。

控制器servlet将从请求中获取所有参数,将它们存储在ENUM中(因为您使用的是),它将打开数据库连接(通过创建数据库类的实例(dbconnect)然后调用方法)在它上面,传递数据或ENUM)和你的DB类将更新你的数据库。

然后,控制器servlet将响应转发到另一个JSP页面或另一个带有确认的视图。

这几乎是模型 - 视图 - 控制器(MVC)模式的基础,在这种模式中,您拥有控制器servlet,模型或在您的情况下使用dbconnect类(业务模型mutator),然后是一堆JSP页面。观点。

我可以用一种方式来处理你的情况。

问候!