




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JavaWeb】綜合案例:?戶登錄這個綜合案例是Web應(yīng)?種常見的業(yè)務(wù):?戶登錄。1.1.編寫login.html登錄頁?,username&password兩個輸?框2.使?Druid數(shù)據(jù)庫連接池技術(shù),操作mysql,查詢dong數(shù)據(jù)庫中user表3.使?JdbcTemplate技術(shù)封裝JDBC4.登錄成功跳轉(zhuǎn)到SuccessServlet展?:登錄成功!?戶名,歡迎您5.登錄失敗跳轉(zhuǎn)到FailServlet展?:登錄失敗,?戶名或密碼錯誤2.案例結(jié)構(gòu)圖3.根據(jù)需求,建??個dong數(shù)據(jù)庫,在數(shù)據(jù)下創(chuàng)建user表。CREATETABLE(INSERTINTO(username,)('zhangsan',123456);user表;包,提取碼:wdgilogin.html頁?login.html中form表單的action路徑的寫法:虛擬?錄+Servlet的資源路徑。:inputtypetext"placeholder"nameusernamebr>:inputtypetext"placeholder"namepasswordbr></form></body></html>perties配置?件maxActive=10maxWait=3000/****/@OverridepublicStringtoString(){return"User{"+"id="+id+",username='"+username+'\''+",password='"+password+'\''+'}';}}/***?具類,使?Druid連接池*/privatestaticjavax.sql.DataSourceds;//1.加載配置?件java.util.Propertiesprop=newjava.util.Properties();//使?ClassLoader加載配置?件,獲取字節(jié)輸?流java.io.InputStreamis=.class.getClassLoader().getResourceAsStream("perties");prop.load();//2.初始化數(shù)據(jù)庫連接池對象}}/**/***獲取數(shù)據(jù)庫連接對象**@return*/publicstaticConnectiongetConnection()throwsSQLException{returnds.getConnection();}}*///聲明JDBCTemplate對象共?/***登錄?法**@paramloginUser*@returnuser包含?戶全部數(shù)據(jù),沒有查詢到,放回null*/publicUserlogin(UserloginUser){//1.編寫sql語句Stringsql="select*fromuserwhereusername=?andpassword=?";//2.調(diào)?JDBCTemplate對象的查詢?法Useruser=jdbcTemplate.queryForObject(sql//sql語句,newBeanPropertyRowMapperUser>(User.class)//RowMapper接?實現(xiàn)類,將數(shù)據(jù)?動封裝成指定對象,loginUser.getUsername()//sql參數(shù),loginUser.getPassword());//sql參數(shù)e.printStackTrace();//以后會將異常記錄到?志?件中}}}publicclassUserDaoTest{/***/@TestpublicvoidloginTest(){Userloginuser=newUser();loginuser.setUsername("zhangsan");loginuser.setPassword("123456");UserDaodao=newUserDao();Useruser=dao.login(loginuser);System.out.println(user);}}類//1.設(shè)置解碼格式UserDaodao=newUserDao();Useruser=dao.login(loginuser);//5.判斷user是否為null//登錄失敗跳轉(zhuǎn)到FailServlet//登錄成功,將?戶信息存在request域,跳轉(zhuǎn)SuccessServletreq.setAttribute("user",user);req.getRequestDispatcher("/SuccessServlet").forward(req,resp);}}}類this.doGet(request,response);}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//在頁?輸出:登錄失敗,?戶名或密碼錯誤!response.setContentType("text/html;charset=utf-8");response.getWriter().write("!");}}}throwsServletException,IOException{//在頁?輸出:登錄成功,?戶名xxx歡迎您!//獲取請求域中存儲的數(shù)據(jù)response.getWriter().write("user.getUsername()!");}}啟動服務(wù)器1.訪問login.html2.點擊登錄,提交表單數(shù)據(jù)登錄成功:登錄失敗:4.當(dāng)請求參數(shù)?常多的時候,?如?戶的注冊頁?發(fā)向服務(wù)器的請求,包含很多?戶的信息數(shù)據(jù)。像這種情況下,會需要?量?枯燥的獲取getParameter獲取參數(shù)的代碼,每次獲取?個參數(shù)值,效率低,?且還需要將數(shù)據(jù)都封裝到JavaBean(User)對象中,重復(fù)操作太多。現(xiàn)在對LoginServlet類做如下優(yōu)化,簡化上述操作:1.使??法:(重點)獲取所有請求參數(shù)的map集合。Map<String,String[]>getParameterMap()2.使?BeanUtils?具類,簡化數(shù)據(jù)封裝。簡單了解?下這個?具類,位于下?,是專門提供給我們?于封裝JavaBean的。mons.beanutils.BeanUtilsBeanUtils需要了解它??的三個?法:都是靜態(tài)?法:設(shè)置bean對象中name屬性的值setProperty(Objectbean,Stringname,Objectvalue):獲取bean對象中name屬性的值getProperty(Objectbean,Stringname):(重點)將map集合的鍵值對信息,封裝到對應(yīng)的JavaBean對象中。populate(Objectbean,Mapmap)這個?法會遍歷map<key,value>中的key,如果bean中有這個屬性,就把這個key對應(yīng)的value值賦給bean的屬性。優(yōu)化后的LoginServlet類://1.設(shè)置解碼格式req.setCharacterEncoding("utf-8");/*//2.獲取請求體參數(shù)usernamepasswordStringusername=req.getParameter("username");Stringpassword=req.getParameter("password");//3.usernamepassword封裝成User對象Userloginuser=newUser();loginuser.setUsername(username);//2.獲取所有的請求體參數(shù),當(dāng)請求參數(shù)?常多的時候,?常?便//3.1使?BeanUtils封裝,提供的bean?具類?動封裝map集合中數(shù)據(jù)為JavaBean對象//4.調(diào)?UserDaologin?法UserDaodao=newUserDao();Useruser=dao.login(loginuser);//5.判斷user是否為nullif(usernull){//登錄失敗跳轉(zhuǎn)到FailServletreq.getRequestDispatcher("/FailServlet").forward(req,resp);}else{//登錄成功,將?戶信息存在request域,跳轉(zhuǎn)SuccessServletreq.setAttribute("user",user);req.getRequestDispatcher("/SuccessServlet").forward(req,resp);}}}如果對JavaBean不熟悉,這?簡單回顧?下5.1JavaBean:標(biāo)準(zhǔn)的Java類,這樣的類?般會有以下?個要求:1.類必須被public修飾2.必須提供空參和全參的構(gòu)造器3.成員變量必須使?private修飾4.提供公共setter和getter?法5.2JavaBean的功能,就是封裝數(shù)據(jù)。5.3了解JavaBean中屬性和成員變量的概念成員變量:就是我們聲明在類中的變量,像privateStringname;等屬性:setter和getter?法截取后的產(chǎn)物,截取后的產(chǎn)物(屬性)?多數(shù)情況下與成員變量在名稱上?致。截取過程,例如getHehe()-->Hehe–>hehe,setHehe()-->Hehe–>hehe;在User實體類添加以下代碼,并修改toString()?法,加上輸出gender的值:returngender;}編寫?個測試?法,驗證屬性和成員?法的區(qū)別:5.3.1設(shè)置bean的成員變量@TestStringgender=BeanUtils.getProperty(user,"gender");System.out.println(gender);}catch(Exceptione){e.printStackTrace();}}運(yùn)?結(jié)果:原因是沒有屬性gender,沒有setGender()和getGender()?法,也就是沒有setter和getter?法截取后的產(chǎn)物為gender的屬性。需要加上setGender()和getGender()?法后,才能設(shè)置bean的成員變量gender。privateStringgender;publicvoidsetGender(Stringgender){publicStringgetGender(){publicvoidsetHehe(Stringgender){returngender;}再次運(yùn)?測試?法,結(jié)果:5.3.2設(shè)置bean的屬性在User實體類添加以下代碼,并修改toString()?法,加上輸出gender的值:returngender;}測試?法@Test}}再次運(yùn)?測試?法,結(jié)果:可以看到bean中沒有hehe成員變量,但是有hehe屬性,屬性值為male,并且成員變量gender的值也被設(shè)置為male了。因為有setHehe()和g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識經(jīng)濟(jì)下的知識產(chǎn)權(quán)保護(hù)趨勢與挑戰(zhàn)
- 竹子廠合同范本
- 煤礦局部通風(fēng)機(jī)司機(jī)技能理論考試題庫150題(含答案)
- 招牌維修合同范本
- 2025至2030年中國腳踏吹風(fēng)式鋸床數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國肉桃苗數(shù)據(jù)監(jiān)測研究報告
- 2025年度鮮魚品牌授權(quán)與銷售代理合同
- 二零二五年度智慧城市原始股權(quán)合作合同
- 二零二五年度賬戶變更補(bǔ)充綜合服務(wù)合同
- 二零二五年度健康養(yǎng)生街區(qū)店面房屋租賃及健康管理服務(wù)合同
- 浙教版(2023)六上 第15課 人機(jī)對話的實現(xiàn) 教案3
- 開票稅點自動計算器
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 醫(yī)療器械質(zhì)量安全風(fēng)險會商管理制度
- 患者轉(zhuǎn)運(yùn)意外應(yīng)急預(yù)案
- 大學(xué)生國防教育教案第四章現(xiàn)代戰(zhàn)爭
- 人教版初中化學(xué)實驗?zāi)夸?總表)
- AS9100航空航天質(zhì)量管理體系-要求培訓(xùn)教材
- 第2課+古代希臘羅馬【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- Q-GDW 11711-2017 電網(wǎng)運(yùn)行風(fēng)險預(yù)警管控工作規(guī)范
- 《桃樹下的小白兔》課件
評論
0/150
提交評論