您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Servlet和Jsp知識(shí)點(diǎn)有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
重寫service方法,service方法有兩個(gè)參數(shù):req和resp,在jsp中叫做request和response。
resp.setContentType("text/html;charset=utf-8"); req.setCharacterEncoding("utf-8");
UserService us = new UserServiceImpl();
如果一個(gè)servlet需要處理多個(gè)請(qǐng)求,那servlet就需要識(shí)別來的是哪一個(gè)請(qǐng)求,可以在jsp的form表單中加一個(gè)input標(biāo)簽
<input type="hidden" name="oper" value="login">
type屬性值為hidden,這樣不會(huì)影響頁面效果,將所有區(qū)分請(qǐng)求的標(biāo)簽的name屬性設(shè)成同一個(gè),這里叫'oper',value設(shè)成不同的值。
在service方法中做判斷,分別調(diào)用不同的方法
//獲取操作類型 String oper = req.getParameter("oper"); if("login".equals(oper)) { //調(diào)用登錄校驗(yàn)方法 CheckUserLogin(req,resp); }else if("reg".equals(oper)){ //調(diào)用注冊(cè)功能 userReg(req,resp); }else if("out".equals(oper)){ //調(diào)用退出功能 userOut(req,resp); }else if("pwd".equals(oper)){ //調(diào)用密碼修改功能 userChangePwd(req,resp); }else if("showAll".equals(oper)){ //調(diào)用查看所有用戶信息功能 userShowAll(req,resp); }else { System.out.println("沒有找到相應(yīng)操作"+oper); }
req.getParameter(“屬性名”)方法可以獲取form表單中提交的數(shù)據(jù)。
那form表單如何知道要提交給哪個(gè)servlet處理呢?
通過設(shè)置form標(biāo)簽的action屬性就可以,將action屬性值設(shè)成servlet的別名。
那如果沒有form表單,比如我只是在頁面中點(diǎn)擊一個(gè)按鈕,想讓servlet來處理,怎么實(shí)現(xiàn)?操作如下:
function tuichu(){ var flag = window.confirm("是否退出?"); if (flag) { //利用form表單提交oper document.write("<form action='user' method=post name=form1 style='display:none'>"); document.write("<input type='hidden' name='oper' value='out'>"); document.write("</form>"); document.form1.submit(); } }
在servlet中實(shí)現(xiàn)頁面跳轉(zhuǎn)有兩種辦法:請(qǐng)求轉(zhuǎn)發(fā)和重定向
請(qǐng)求轉(zhuǎn)發(fā):
req.getRequestDispatcher("login.jsp").forward(req, resp);
請(qǐng)求轉(zhuǎn)發(fā)還是一次請(qǐng)求,瀏覽器地址欄中的url不會(huì)改變,req中的數(shù)據(jù)仍然在。
重定向:
resp.sendRedirect("main.jsp");
重定向是兩次請(qǐng)求,url改變,req中的數(shù)據(jù)沒了。
不同請(qǐng)求見的數(shù)據(jù)流通如何完成?
req里的數(shù)據(jù)沒了,是不能實(shí)現(xiàn)的。
有兩種辦法:cookie和session
cookie:將一些數(shù)據(jù)存在瀏覽器中,數(shù)據(jù)量較小。
基本使用方法:
//創(chuàng)建cookie Cookie c = new Cookie("uname", "zhangsan"); Cookie c2 = new Cookie("color","red"); //設(shè)置cookie有效期,參數(shù)的單位是秒 c2.setMaxAge(3600); //設(shè)置路徑 c2.setPath("/Servlet03/gc"); //添加到瀏覽器 resp.addCookie(c);//臨時(shí)存儲(chǔ) resp.addCookie(c2);//通過上面設(shè)置的有效期,實(shí)現(xiàn)了cookie紀(jì)錄一個(gè)小時(shí)的定長(zhǎng)存儲(chǔ)
//獲取cookie Cookie[] cks = req.getCookies(); if(cks!=null) { for(Cookie c:cks) { System.out.println(c.getName()+":"+c.getValue()); } }
Session:將數(shù)據(jù)存在瀏覽器中,在cookie中存一個(gè)session的id連接到服務(wù)器端的session對(duì)象
基本使用方法:
String name = "張三"; //創(chuàng)建session對(duì)象 HttpSession hs = req.getSession(); //這行代碼既是創(chuàng)建又是獲取session //設(shè)置session時(shí)效 hs.setMaxInactiveInterval(5);//設(shè)置時(shí)間為5秒 hs.invalidate();//強(qiáng)制失效 //存儲(chǔ)數(shù)據(jù) hs.setAttribute("name", name);
關(guān)于Servlet和Jsp知識(shí)點(diǎn)有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。