【JavaWeb】綜合案例:用戶登錄_第1頁
【JavaWeb】綜合案例:用戶登錄_第2頁
【JavaWeb】綜合案例:用戶登錄_第3頁
【JavaWeb】綜合案例:用戶登錄_第4頁
【JavaWeb】綜合案例:用戶登錄_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論