




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、JavaWeb本實(shí)例為家分享了JavaWeb實(shí)現(xiàn)戶登錄與注冊(cè)功能的具體代碼,供家參考,具體內(nèi)容如下客戶端:HTML CSS JS (JQuery)服務(wù)器:JAVA基礎(chǔ) JSP Servlet JDBC Tomcat數(shù)據(jù)庫(kù):MySQL到的Jar包 druid數(shù)據(jù)庫(kù)連接池 dbutils JDBC數(shù)據(jù)庫(kù)操作具 MySQL jar包總體結(jié)構(gòu):服務(wù)器部分采JavaEE三層架構(gòu)、表現(xiàn)層:通俗講就是展現(xiàn)給戶的界,即戶在使個(gè)系統(tǒng)的時(shí)候他的所見(jiàn)所得。、業(yè)務(wù)邏輯層:針對(duì)具體問(wèn)題的操作,也可以說(shuō)是對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理。、數(shù)據(jù)訪問(wèn)層:該層所做事務(wù)直接操作數(shù)據(jù)庫(kù),針對(duì)數(shù)據(jù)的增添、刪除、修改、查找等。先創(chuàng)
2、建基本的件夾架構(gòu),三層的件夾依次為web ,servlet,DAO。 此外還有其他相關(guān)件夾具類utils,JAVABean類pojo,測(cè)試類test。依次實(shí)現(xiàn)從DAO層到Servce層再到Web層。件夾架構(gòu)資源件 pertiesusername=rootpassword=123456url=jdbc:mysql:/localhost:3306/bookdriverClassName=com.mysql.jdbc.DriverinitialSize=5maxActive=10層寫好JAVABean User類package com.book.pojo;public class User priv
3、ate Integer id;private String username;private String password;private String email;public User() public User(Integer id, String username, String password, String email) this.id = id;this.username = username;this.password = password;this.email = email;public Integer getId() return id;public void set
4、Id(Integer id) this.id = id;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 getEmail() return email;public void se
5、tEmail(String email) this.email = email;Overridepublic String toString() return User +id= + id +, username= + username + +, password= + password + +, email= + email + +;先實(shí)現(xiàn)數(shù)據(jù)連接JDBCUtilspackage com.book.utils;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.pool.DruidDataSourceF
6、actory;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;public class JDBCUtils private static DruidDataSource druidDataSource;/數(shù)據(jù)庫(kù)連接池初始化static try InputStream resourceAsStream = JDBCUtils
7、.class.getClassLoader().getResourceAsStream(perties);/ 類加載器默認(rèn)是從classPath路徑加載資源Properties properties = new Properties();properties.load(resourceAsStream);/ 創(chuàng)建數(shù)據(jù)庫(kù)連接池druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties); catch (Exception e) System.out.println( 數(shù)據(jù)庫(kù)連接池初始
8、化異常);/獲取數(shù)據(jù)庫(kù)連接池中的連接public static Connection getConnection() Connection connection= null;try connection = druidDataSource.getConnection(); catch (SQLException throwables) throwables.printStackTrace();return connection;public static void close(Connection connection) try connection.close(); catch (SQLEx
9、ception throwables) throwables.printStackTrace();public static void main(String args) JDBCUtils jdbcUtils=new JDBCUtils();System.out.println(jdbcUtils.getConnection();測(cè)試連接是否成功編寫B(tài)aseDAO 實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本通操作package com.book.DAO;import com.book.utils.JDBCUtils;import mons.dbutils.QueryRunner;import mons.dbutil
10、s.handlers.BeanHandler;import mons.dbutils.handlers.BeanListHandler;import mons.dbutils.handlers.ScalarHandler;import java.sql.Connection;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public abstract class BaseDAO private QueryRunner queryRunner=new QueryRunner();/數(shù)據(jù)庫(kù)
11、通操作,使dbutils來(lái)操作/來(lái)執(zhí),delete,insertpublic int updata(String sql,Object.objects)Connection connection= JDBCUtils.getConnection();try return queryRunner.update(connection,sql,objects);/ 返回影響的數(shù) catch (SQLException throwables) throwables.printStackTrace();return -1;/來(lái)執(zhí)查詢操作public T queryForOne(Classclazz,St
12、ring sql,Object.objects)Connection connection=JDBCUtils.getConnection();try return queryRunner.query(connection,sql,new BeanHandler(clazz),objects); catch (Exception throwables) throwables.printStackTrace();return null;/查詢多個(gè)結(jié)果public List queryForList(Classclazz,String sql,Object.objects)Connection c
13、onnection=JDBCUtils.getConnection();Listlist=new ArrayList();try list=queryRunner.query(connection,sql,new BeanListHandler(clazz),objects); catch (SQLException throwables) throwables.printStackTrace();return list;/查詢單個(gè)數(shù)public Object queryForSingleValue(String sql,Object.objects)Connection connection
14、= JDBCUtils.getConnection();try return queryRunner.query(connection,sql,new ScalarHandler(),objects); catch (SQLException throwables) throwables.printStackTrace();return null;編寫UserDAO接確定需要的操作package com.book.DAO;import com.book.pojo.User;public interface UserDAO / 注冊(cè)時(shí)判斷是否該戶名已經(jīng)被注冊(cè) 根據(jù)戶名查詢戶信息如果返回null說(shuō)
15、明沒(méi)有該戶public User queryUserByUsername(String username);/注冊(cè)成功 保存戶信息public int saveUser(User user);/登錄操作 根據(jù)戶名和密碼查詢戶查不到返回nullpublic User queryUserByUsernameAndPassword(String username,String password);5.UserDAOImpl實(shí)現(xiàn)UserDAO接package com.book.DAO;import com.book.pojo.User;/所犯錯(cuò)誤:繼承的類會(huì)有類的全部法,不要在類中聲明類對(duì)象,調(diào)類法p
16、ublic class UserDAOimpl extends BaseDAO implements UserDAOOverridepublic User queryUserByUsername(String username) String sql=select * from users where username=?;User user =queryForOne(User.class,sql,username);return user;/所犯錯(cuò)誤:輸?shù)泥]箱不能重復(fù)Overridepublic int saveUser(User user) String sql=INSERT INTO u
17、sers(username,password,email) VALUES(?,?,?);int n;n = updata(sql,user.getUsername(),user.getPassword(),user.getEmail();return n;Overridepublic User queryUserByUsernameAndPassword(String username, String password) String sql=select * from users where username=? and password=?;User user=queryForOne(Us
18、er.class,sql,username,password);return user;層1.UserServce接確定業(yè)務(wù)需要的法,來(lái)與Web層進(jìn)交互package com.book.servlet;import com.book.pojo.User;/業(yè)務(wù)層個(gè)業(yè)務(wù)個(gè)法public interface UserServce /注冊(cè)業(yè)務(wù) 注冊(cè)成功將戶保存到數(shù)據(jù)庫(kù)中public void registUser(User user);/登錄業(yè)務(wù)public User login(User user);/檢查戶名是否可 返回表戶名已存在public boolean existUsername(Str
19、ing username);2.UserServceImpl類實(shí)現(xiàn)UserServce接package com.book.servlet;import com.book.DAO.UserDAO;import com.book.DAO.UserDAOimpl;import com.book.pojo.User;public class UserServceImpl implements UserServce private UserDAO userDAO=new UserDAOimpl();Overridepublic void registUser(User user) userDAO.sav
20、eUser(user);Overridepublic User login(User user) return userDAO.queryUserByUsernameAndPassword(user.getUsername(),user.getPassword();Overridepublic boolean existUsername(String username) / 戶名不存在if(userDAO.queryUserByUsername(username)=null)return false;else return true; 層注冊(cè)操作package com.book.web;imp
21、ort com.book.pojo.User;import com.book.servlet.UserServce;import com.book.servlet.UserServceImpl;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public cl
22、ass RegistServlet extends HttpServlet Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException UserServce userServce=new UserServceImpl();/ 獲取請(qǐng)求參數(shù)String username=req.getParameter(username);String password=req.getParameter(password);String e
23、mail=req.getParameter(email);String code=req.getParameter(code);/ 判斷驗(yàn)證碼是否正確 忽略寫if(6n6np.equalsIgnoreCase(code)/ 判斷是否存在戶名if(!userServce.existUsername(username)/ 不存在則將注冊(cè)信息寫數(shù)據(jù)庫(kù)User user=new User(null,username,password,email);userServce.registUser(user);/ 請(qǐng)求轉(zhuǎn)發(fā)到注冊(cè)成功頁(yè)req.getRequestDispatcher(/pages/user/r
24、egist_success.jsp).forward(req,resp);elseSystem.out.println( 戶名已存在);/ 跳轉(zhuǎn)到注冊(cè)頁(yè)req.getRequestDispatcher(/pages/user/regist.jsp).forward(req,resp);else System.out.println( 驗(yàn)證碼錯(cuò)誤);/ 跳轉(zhuǎn)到注冊(cè)頁(yè)req.getRequestDispatcher(/pages/user/login.jsp).forward(req,resp);登錄操作package com.book.web;import com.book.pojo.User;import com.book.servlet.UserServce;import com.book.servlet.UserServceImpl;import javax.servlet.ServletException;i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 十堰市張灣區(qū)2025屆數(shù)學(xué)四下期末復(fù)習(xí)檢測(cè)試題含解析
- 山東電力高等??茖W(xué)校《合唱指揮法》2023-2024學(xué)年第一學(xué)期期末試卷
- 延安職業(yè)技術(shù)學(xué)院《熱工檢測(cè)儀表》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省沈陽(yáng)市和平區(qū)重點(diǎn)名校2025年初三第一次質(zhì)量檢查試題語(yǔ)文試題含解析
- 運(yùn)城市聞喜縣2025屆三年級(jí)數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 營(yíng)口職業(yè)技術(shù)學(xué)院《新聞傳播倫理與法規(guī)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省濟(jì)南市萊蕪區(qū)2024-2025學(xué)年初三生物試題第一次聯(lián)考試題含解析
- 江蘇省宜興市官林學(xué)區(qū)市級(jí)名校2024-2025學(xué)年初三第二次質(zhì)量測(cè)試(5月)數(shù)學(xué)試題試卷含解析
- 日照航海工程職業(yè)學(xué)院《臨床中藥學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇第二師范學(xué)院《日語(yǔ)中級(jí)聽(tīng)力》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年金華市軌道交通集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2024版心肺復(fù)蘇培訓(xùn)課件
- 地下綜合管廊建設(shè)項(xiàng)目可行性研究報(bào)告
- 基于多源異構(gòu)數(shù)據(jù)的地質(zhì)知識(shí)圖譜構(gòu)建與應(yīng)用
- 2024年領(lǐng)導(dǎo)干部任前廉政知識(shí)考試測(cè)試題庫(kù)及答案
- 《公共資源交易主體信用評(píng)價(jià)實(shí)施指南》編制說(shuō)明
- 中通服網(wǎng)盈科技有限公司連云港分公司(中國(guó)電信)招聘筆試沖刺題2024
- 國(guó)內(nèi)外知識(shí)產(chǎn)權(quán)保護(hù)對(duì)比研究
- DB3707T 080-2023 奶牛接產(chǎn)助產(chǎn)及產(chǎn)后操作操作規(guī)程
- 紹興銀行社會(huì)招聘真題
- 《儲(chǔ)水式電熱水器的安全使用年限》
評(píng)論
0/150
提交評(píng)論