如何使用IDEA完成登錄與注冊功能
更新時間:2024年07月04日 12:07:16 作者:Smrsar
這篇文章主要介紹了如何使用IDEA完成登錄與注冊功能,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
一,完成數(shù)據(jù)庫編寫
DROP DATABASE if EXISTS mydb;
CREATE DATABASE mydb;
use mydb;
CREATE TABLE ta_user
(
uid int primary key auto_increment,
username varchar(32),
password varchar(32),
phone varchar(32),
address varchar(32)
);
INSERT INTO ta_user(username,password,phone,address)VALUES('張三','123','12323231','北京');
INSERT INTO ta_user(username,password,phone,address)VALUES('李四','456','35343434','上海');
INSERT INTO ta_user(username,password,phone,address)VALUES('王五','789','33234324','河南');
SELECT * from ta_user;
二,網頁前端顯示部分(HTML部分)
注:注意文件創(chuàng)建地方
分層思想:創(chuàng)建一些包將一大堆代碼分散到各個包中,可以使代碼簡潔,容易后期維護

主頁面
<%--
Created by IntelliJ IDEA.
User: ThinkPad
Date: 2023/2/18
Time: 8:35
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首頁</title>
</head>
<body>
<a href="login.jsp" rel="external nofollow" rel="external nofollow" >去登陸</a>
</body>
</html>登錄頁面
<%--
Created by IntelliJ IDEA.
User: ThinkPad
Date: 2023/2/18
Time: 8:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登錄頁面</title>
</head>
<body>
<%--有jsp不經過數(shù)據(jù),沒有jsp經過--%>
<form action="login" method="post">
賬號:<input type="text" name="username"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登錄"><br>
<a href="register.jsp" rel="external nofollow" >沒有賬號?前往注冊</a>
<a href="index.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回首頁</a>
</form>
</body>
</html>注冊頁面
<%--
Created by IntelliJ IDEA.
User: ThinkPad
Date: 2023/2/18
Time: 12:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注冊</title>
</head>
<body>
<form action="register" method="post">
賬號:<input type="text" name="username"><br>
密碼:<input type="password" name="password"><br>
號碼:<input type="password" name="phone"><br>
地址:<input type="password" name="address"><br>
<input type="submit" value="注冊"><br>
<a href="login.jsp" rel="external nofollow" rel="external nofollow" >有賬號?前往登錄</a>
<a href="index.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回首頁</a>
</form>
</body>
</html>錯誤頁面
<%--
Created by IntelliJ IDEA.
User: ThinkPad
Date: 2023/2/18
Time: 9:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a>錯誤</a>
<a href="index.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回登錄頁面</a>
</body>
</html>登陸成功后跳轉頁面
<%--
Created by IntelliJ IDEA.
User: ThinkPad
Date: 2023/2/18
Time: 9:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>商品</title>
</head>
<body>
<form>
<tr>
<td>蘋果</td>
<td>2</td>
</tr>
<tr>
<td>橘子</td>
<td>6</td>
</tr>
<tr>
<td>香蕉</td>
<td>5</td>
</tr>
</form>
</body>
</html>三,后端控制部分(Java部分)
bean包用來放屬性的構造方法
package com.smrsar.bean;
public class User {
private Integer uid;
private String username;
private String password;
private String phone;
private String address;
public User() {
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User(Integer uid, String username, String password, String phone, String address) {
this.uid = uid;
this.username = username;
this.password = password;
this.phone = phone;
this.address = address;
}
}package com.smrsar.bean;
public class Userz {
private Integer uid;
private String username;
private String password;
public Userz() {
}
@Override
public String toString() {
return "Userz{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Userz(Integer uid, String username, String password) {
this.uid = uid;
this.username = username;
this.password = password;
}
}dao包用來放Java代碼(注冊部分的JDBC代碼,分層方法:構建成一個方法,在Servlet中直接調用)
package com.smrsar.dao;
import com.smrsar.bean.User;
import com.smrsar.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class UserDaoImpl {
public int register (User user){
Connection con = null;
PreparedStatement pstm = null;
int row = 0;
try {
//1,獲取數(shù)據(jù)庫連接
con=JDBCUtil.GetCon();
//2,定義sql語句
String sql = "insert into ta_user(username,password,phone,address)values (?,?,?,?)";
//3.獲取預處理對象
pstm = con.prepareStatement(sql);
//4,傳參
pstm.setObject(1, user.getUsername());
pstm.setObject(2, user.getPassword());
pstm.setObject(3, user.getPhone());
pstm.setObject(4, user.getAddress());
//5,執(zhí)行更新(增刪改)
row = pstm.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return row;
}
}JDBC工具類構造方法用來調用
package com.smrsar.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JDBCUtil {
private static String driver = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
private static String username = "root";
private static String password = "root";
public static Connection con = null;
public static Connection GetCon() {
try {
Class.forName(driver);
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
public static void Close(ResultSet rs, PreparedStatement pstm, Connection con) {
try {
if (rs != null) {
rs.close();
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}登錄和注冊servlet部分代碼
package com.smrsar.servlet;
import com.smrsar.bean.Userz;
import com.smrsar.util.JDBCUtil;
//import com.smrsar.util.JDBCUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
@WebServlet("/login")//使用這種方式可以不在xml文件中配置Servlet類也能實現(xiàn)跳轉
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//設置編碼
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("ext/html;charset=UTF-8");
//請求獲取數(shù)據(jù)
String username = req.getParameter("username");
String password = req.getParameter("password");
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
Userz login = null;
try {
//調用已編寫的JDBC工具類內容
con = JDBCUtil.GetCon();
//定義sql語句
String sql = "select * from ta_user where username=? and password=?";
//獲取預處理對象
pstm = con.prepareStatement(sql);
//傳參
pstm.setObject(1, username);
pstm.setObject(2, password);
//執(zhí)行查詢
rs = pstm.executeQuery();
if (rs.next()) {
login = new Userz();
login.setUid(rs.getInt("uid"));
login.setUsername(rs.getString("username"));
login.setPassword(rs.getString("password"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//調用已編寫的JDBC工具類內容
JDBCUtil.Close(rs, pstm, con);
}
//判斷是否為空,跳轉到對應頁面
if (login != null) {
resp.sendRedirect("goods.jsp");
} else {
resp.sendRedirect("error.jsp");
}
}
}package com.smrsar.servlet;
import com.smrsar.bean.User;
import com.smrsar.dao.UserDaoImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/register")
public class Register extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1,設置編碼
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("ext/html;charset=UTF-8");
//2,獲取請求參數(shù)
String username = req.getParameter("username");
String password = req.getParameter("password");
String phone = req.getParameter("phone");
String address = req.getParameter("address");
//3,封裝,把前面的變量封裝到User對象中
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setPhone(phone);
user.setAddress(address);
System.out.println(user);
//4,實例化對象后調用使用
UserDaoImpl userDao=new UserDaoImpl();
int row=userDao.register(user);
//5,作出響應
if (row > 0) {
//成功跳轉到登錄頁面
resp.sendRedirect("login.jsp");
} else {
//注冊失敗跳轉到注冊頁
resp.sendRedirect("register.jsp");
}
}
}
到此這篇關于使用IDEA完成登錄與注冊的文章就介紹到這了,更多相關idea登錄注冊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot+mybatis通過實體類自動生成數(shù)據(jù)庫表的方法
這篇文章主要介紹了springboot+mybatis通過實體類自動生成數(shù)據(jù)庫表的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
java中l(wèi)ong數(shù)據(jù)類型轉換為int類型
這篇文章主要講解Java中基本數(shù)據(jù)類型,java long 類型與其java int類型的轉換的幾種方法,希望能給大家做一個參考2016-07-07
IntelliJ?IDEA?2020.2.3永久破解激活教程(親測有效)
intellij?idea?2022是一款市面上最好的JAVA?IDE編程工具,該工具支持git、svn、github等版本控制工具,整合了智能代碼助手、代碼自動提示等功能,本教程給大家分享IDEA?2022最新永久激活碼,感興趣的朋友參考下吧2020-10-10

