JavaWeb實戰(zhàn)之用Servlet+JDBC實現(xiàn)用戶登錄與注冊
一、前言
使用到的技術(shù)棧:
(1)JDBC
(2)Servlet
(3)MySQL
二、準備工作
(1)書城用戶數(shù)據(jù)庫與表創(chuàng)建
(2)編寫用戶類對象JavaBean
(3)編寫JdbcUtils對數(shù)據(jù)庫進行交互(使用德魯伊數(shù)據(jù)庫連接池)
(4)編寫web層
最終編寫好的第二階段登陸注冊文件結(jié)構(gòu)為

- dao中定義了基礎(chǔ)的操作數(shù)據(jù)庫代碼,具體功能有
1.Insert、update、delete(修改)
2.查詢一個對象(返回一個對象)
3.查詢一個數(shù)組對象(數(shù)組返回多個對象)
4.返回某一個特定值對象(返回一個值)
- pojo中定義著與數(shù)據(jù)庫用戶表類
- service中定義著需要實現(xiàn)的用戶業(yè)務(wù)
1.用戶注冊
2.用戶登錄
3.用戶姓名查詢
- test中編寫對JDBC、UserDao、UserServiceImplTest的測試
- utils中編寫JDBC工具類
1.獲取數(shù)據(jù)庫連接
2.關(guān)閉數(shù)據(jù)庫連接
- web中編寫兩個Servlet程序
1.登錄請求
2.注冊請求
三、編寫web層
(1)用戶注冊請求
使用Servlet進行注冊表單處理,需要提前設(shè)置base標簽為工程路徑
- 在RegisterServlet類讓它繼承HttpServlet
- 重寫doPost請求方法
- 在web.xml中配置Servlet與Servlet-mapping
- 在HTML頁面表單action處配置操作,同時method為post請求
- 拿到表單中出現(xiàn)的用戶信息,然后:
1.檢查驗證碼是否正確(第一階段寫死驗證碼為abcd)
2.檢查數(shù)據(jù)庫中是否存在該用戶姓名
可用,向數(shù)據(jù)庫中進行注冊同時跳轉(zhuǎn)登錄頁面
不可用,再次跳轉(zhuǎn)注冊頁面
以上的處理模塊,借助在service中編寫好的UserServiceImpl實現(xiàn)類進行實現(xiàn),UserServiceImpl又借助了UserDao進行實現(xiàn);
(2)用戶登錄
使用Servlet進行登錄表單處理,也需要提前設(shè)置base標簽為工程路徑
- 在LoginServlet類讓它繼承HttpServlet
- 重寫doPost請求方法
- 在web.xml中配置Servlet與Servlet-mapping
- 在HTML頁面表單action處配置操作,同時method為post請求
- 拿到表單中出現(xiàn)的用戶信息,然后:
1.獲取HTML頁面提交的表單
2.檢查數(shù)據(jù)庫中是否存在一個用戶名與密碼都與獲取相同的對象
有,跳轉(zhuǎn)成功頁面
沒有,提示用戶輸入錯誤,重新跳轉(zhuǎn)登錄頁面
package wzy.web;
import wzy.dao.UserDao;
import wzy.pojo.User;
import wzy.service.UserService;
import wzy.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class loginServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 實現(xiàn)用戶登錄
String username = req.getParameter("username");
String password = req.getParameter("password");
User user = userService.login(new User(null, username, password, null));
if (user != null) {
// 登陸成功
req.getRequestDispatcher("/pages/user/login_success.html").forward(req,resp);
} else {
// 登陸失敗
req.getRequestDispatcher("/pages/user/login.html").forward(req,resp);
}
}
}
package wzy.web;
import wzy.pojo.User;
import wzy.service.UserService;
import wzy.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RegisterServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
String email = req.getParameter("email");
String code = req.getParameter("code");
// 2、檢查 驗證碼是否正確 === 寫死,要求驗證碼為:abcde
if (code.equalsIgnoreCase("abcde")){
// 3、檢查 用戶名是否可用
if (userService.existsUsername(username)){
System.out.println("用戶名[" + username + "]已存在");
// 跳轉(zhuǎn)到登陸頁面
req.getRequestDispatcher("/pages/user/regist.html").forward(req,resp);
}else {
// 可用
userService.registerUser(new User(null,username,password,email));
req.getRequestDispatcher("/pages/user/regist_success.html").forward(req,resp);
}
}else {
System.out.println("驗證碼 ["+code+"] 錯誤");
req.getRequestDispatcher("/pages/user/regist.html").forward(req,resp);
}
}
}
到此這篇關(guān)于JavaWeb實戰(zhàn)之用Servlet+JDBC實現(xiàn)用戶登錄與注冊的文章就介紹到這了,更多相關(guān)JavaWeb實現(xiàn)用戶登錄與注冊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中使用異步調(diào)度程序的高級方法
本文主要介紹了SpringBoot中使用異步調(diào)度程序的高級方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
Springboot mybatis plus druid多數(shù)據(jù)源解決方案 dynamic-datasource的使用詳
這篇文章主要介紹了Springboot mybatis plus druid多數(shù)據(jù)源解決方案 dynamic-datasource的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
spring kafka框架中@KafkaListener 注解解讀和使用案例
Kafka 目前主要作為一個分布式的發(fā)布訂閱式的消息系統(tǒng)使用,也是目前最流行的消息隊列系統(tǒng)之一,這篇文章主要介紹了kafka @KafkaListener 注解解讀,需要的朋友可以參考下2023-02-02
Java springboot Mongodb增刪改查代碼實例
這篇文章主要介紹了Java springboot Mongodb增刪改查代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07
Java實現(xiàn)ATM系統(tǒng)超全面步驟解讀建議收藏
這篇文章主要為大家詳細介紹了用Java實現(xiàn)簡單ATM機功能,文中實現(xiàn)流程寫的非常清晰全面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

