登录系统/注册用户
问题描述:
我不确定如何访问我的参数,然后使用它们在我的数据库中注册用户。登录系统/注册用户
这里是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来处理用户注册,而不必重新连接到数据库等。这是重用代码并节省时间。
我该如何做到这一点?
答
如果用户按下“CreateUser”,则可以将请求和响应转发给控制器servlet/JSP。
控制器servlet将获得来自请求的所有参数,将它们存储在一个ENUM(因为你正在使用一个),它会打开一个数据库连接(通过创建DB类(DBCONNECT)的一个实例,然后调用方法,传递数据或ENUM),你的数据库类将更新你的数据库。
控制器servlet然后将响应转发到另一个JSP页面或其他视图并进行确认。
这些都是模型 - 视图 - 控制器(MVC)模式的基础知识,其中有控制器servlet,模型或您的情况下的dbconnect类(业务模型mutator),然后是一堆JSP页面代表观点。
这是我可以重复的一种,你可以处理你的情况。
问候!
Java不是缩写 –
代码中有太多错误,我不知道从哪里开始回答。所以这里只是一个开始的链接,直接获取基本概念:http://*.com/tags/jsp/info。它包含了很多有用的链接(每个链接也包含很多有用的链接)。 – BalusC