Система входа / регистрация пользователя - PullRequest
0 голосов
/ 11 ноября 2011

Я не уверен, как мне получить доступ к своим параметрам и затем использовать их для регистрации пользователя в моей БД.

Вот код JSP для 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>

И вот мой Java-бин для подключения к БД и управления всем этим

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...");
            }
        }
    }



}

Моя система входа в систему работает нормально, но у меня проблемы с тем, как мне сделать так, чтобы моя регистрация пользователя работала. Я хотел бы создать отдельный класс и использовать этот компонент для обработки регистрации пользователей без необходимости повторного подключения к БД и так далее. Это повторное использование кода и экономия времени.

Как мне этого добиться?

1 Ответ

1 голос
/ 11 ноября 2011

Если пользователь нажимает «CreateUser», вы можете переслать запрос и ответ сервлету контроллера / JSP.

Сервлет контроллера получит все параметры из запроса, сохранит их в ENUM (поскольку вы его используете), откроет соединение с БД (путем создания экземпляра вашего класса БД (dbconnect) и затем вызовет метод на нем, передавая данные или ENUM), и ваш класс БД обновит вашу базу данных.

Затем сервлет контроллера перенаправит ответ на другую страницу JSP или другое представление с подтверждением.

Это в значительной степени основы шаблона Model-View-Controller (MVC), где у вас есть сервлет контроллера, ваша модель или в вашем случае класс dbconnect (мутатор бизнес-модели), а затем куча страниц JSP, которые представляют вид.

Это, я повторяю ОДИН, один из способов справиться с ситуацией.

Привет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...