如何使用IDEA完成登錄與注冊(cè)功能
一,完成數(shù)據(jù)庫(kù)編寫(xiě)
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;
二,網(wǎng)頁(yè)前端顯示部分(HTML部分)
注:注意文件創(chuàng)建地方
分層思想:創(chuàng)建一些包將一大堆代碼分散到各個(gè)包中,可以使代碼簡(jiǎn)潔,容易后期維護(hù)
主頁(yè)面
<%-- 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>首頁(yè)</title> </head> <body> <a href="login.jsp" rel="external nofollow" rel="external nofollow" >去登陸</a> </body> </html>
登錄頁(yè)面
<%-- 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>登錄頁(yè)面</title> </head> <body> <%--有jsp不經(jīng)過(guò)數(shù)據(jù),沒(méi)有jsp經(jīng)過(guò)--%> <form action="login" method="post"> 賬號(hào):<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> <input type="submit" value="登錄"><br> <a href="register.jsp" rel="external nofollow" >沒(méi)有賬號(hào)?前往注冊(cè)</a> <a href="index.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回首頁(yè)</a> </form> </body> </html>
注冊(cè)頁(yè)面
<%-- 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>注冊(cè)</title> </head> <body> <form action="register" method="post"> 賬號(hào):<input type="text" name="username"><br> 密碼:<input type="password" name="password"><br> 號(hào)碼:<input type="password" name="phone"><br> 地址:<input type="password" name="address"><br> <input type="submit" value="注冊(cè)"><br> <a href="login.jsp" rel="external nofollow" rel="external nofollow" >有賬號(hào)?前往登錄</a> <a href="index.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回首頁(yè)</a> </form> </body> </html>
錯(cuò)誤頁(yè)面
<%-- 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>錯(cuò)誤</a> <a href="index.jsp" rel="external nofollow" rel="external nofollow" rel="external nofollow" >返回登錄頁(yè)面</a> </body> </html>
登陸成功后跳轉(zhuǎn)頁(yè)面
<%-- 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>蘋(píng)果</td> <td>2</td> </tr> <tr> <td>橘子</td> <td>6</td> </tr> <tr> <td>香蕉</td> <td>5</td> </tr> </form> </body> </html>
三,后端控制部分(Java部分)
bean包用來(lái)放屬性的構(gòu)造方法
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包用來(lái)放Java代碼(注冊(cè)部分的JDBC代碼,分層方法:構(gòu)建成一個(gè)方法,在Servlet中直接調(diào)用)
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ù)庫(kù)連接 con=JDBCUtil.GetCon(); //2,定義sql語(yǔ)句 String sql = "insert into ta_user(username,password,phone,address)values (?,?,?,?)"; //3.獲取預(yù)處理對(duì)象 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工具類(lèi)構(gòu)造方法用來(lái)調(diào)用
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(); } } }
登錄和注冊(cè)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類(lèi)也能實(shí)現(xiàn)跳轉(zhuǎ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 { //設(shè)置編碼 req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("ext/html;charset=UTF-8"); //請(qǐng)求獲取數(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 { //調(diào)用已編寫(xiě)的JDBC工具類(lèi)內(nèi)容 con = JDBCUtil.GetCon(); //定義sql語(yǔ)句 String sql = "select * from ta_user where username=? and password=?"; //獲取預(yù)處理對(duì)象 pstm = con.prepareStatement(sql); //傳參 pstm.setObject(1, username); pstm.setObject(2, password); //執(zhí)行查詢(xún) 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 { //調(diào)用已編寫(xiě)的JDBC工具類(lèi)內(nèi)容 JDBCUtil.Close(rs, pstm, con); } //判斷是否為空,跳轉(zhuǎn)到對(duì)應(yīng)頁(yè)面 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,設(shè)置編碼 req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("ext/html;charset=UTF-8"); //2,獲取請(qǐng)求參數(shù) String username = req.getParameter("username"); String password = req.getParameter("password"); String phone = req.getParameter("phone"); String address = req.getParameter("address"); //3,封裝,把前面的變量封裝到User對(duì)象中 User user = new User(); user.setUsername(username); user.setPassword(password); user.setPhone(phone); user.setAddress(address); System.out.println(user); //4,實(shí)例化對(duì)象后調(diào)用使用 UserDaoImpl userDao=new UserDaoImpl(); int row=userDao.register(user); //5,作出響應(yīng) if (row > 0) { //成功跳轉(zhuǎn)到登錄頁(yè)面 resp.sendRedirect("login.jsp"); } else { //注冊(cè)失敗跳轉(zhuǎn)到注冊(cè)頁(yè) resp.sendRedirect("register.jsp"); } } }
到此這篇關(guān)于使用IDEA完成登錄與注冊(cè)的文章就介紹到這了,更多相關(guān)idea登錄注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HashSet底層竟然是HashMap實(shí)現(xiàn)問(wèn)題
這篇文章主要介紹了HashSet底層竟然是HashMap實(shí)現(xiàn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07IDEA如何修改項(xiàng)目名稱(chēng)出現(xiàn)中括號(hào)
當(dāng)項(xiàng)目文件夾名稱(chēng)與model名稱(chēng)不一致時(shí),IDEA會(huì)在項(xiàng)目名旁顯示中括號(hào)以區(qū)分,修改項(xiàng)目名稱(chēng)時(shí)出現(xiàn)中括號(hào)問(wèn)題,通常是因?yàn)镮DE中model名與文件夾名不同步,解決方法是統(tǒng)一model名稱(chēng)和文件夾名稱(chēng),可通過(guò)重構(gòu)功能或項(xiàng)目結(jié)構(gòu)設(shè)置完成,重命名操作應(yīng)謹(jǐn)慎,以避免路徑等引用錯(cuò)誤2024-10-10springboot+mybatis通過(guò)實(shí)體類(lèi)自動(dòng)生成數(shù)據(jù)庫(kù)表的方法
這篇文章主要介紹了springboot+mybatis通過(guò)實(shí)體類(lèi)自動(dòng)生成數(shù)據(jù)庫(kù)表的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07java中l(wèi)ong數(shù)據(jù)類(lèi)型轉(zhuǎn)換為int類(lèi)型
這篇文章主要講解Java中基本數(shù)據(jù)類(lèi)型,java long 類(lèi)型與其java int類(lèi)型的轉(zhuǎn)換的幾種方法,希望能給大家做一個(gè)參考2016-07-07IntelliJ?IDEA?2020.2.3永久破解激活教程(親測(cè)有效)
intellij?idea?2022是一款市面上最好的JAVA?IDE編程工具,該工具支持git、svn、github等版本控制工具,整合了智能代碼助手、代碼自動(dòng)提示等功能,本教程給大家分享IDEA?2022最新永久激活碼,感興趣的朋友參考下吧2020-10-10