溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Servlet和Jsp知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2021-10-20 15:59:23 來源:億速云 閱讀:113 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Servlet和Jsp知識(shí)點(diǎn)有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

新建Servlet

        重寫service方法,service方法有兩個(gè)參數(shù):req和resp,在jsp中叫做request和response。

編碼設(shè)置  

resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");

創(chuàng)建Service層對(duì)象

UserService us = new UserServiceImpl();

處理請(qǐng)求

        如果一個(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(); 
	}
}

請(qǐng)求轉(zhuǎn)發(fā)與重定向

        在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ù)沒了。

Cookie和Session

        不同請(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ò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(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)容。

AI