servlet部分知識(shí)總結(jié)-創(chuàng)新互聯(lián)

1.解決中文顯示亂碼問(wèn)題:servlet部分知識(shí)總結(jié)

對(duì)于servlet :servlet里面加入代碼response.setContentType("text/html;chartset=utf-8");
告訴tomcat不要使用默認(rèn)的編碼方式(iso-8859-1)來(lái)應(yīng)答客戶端,而要使用utf-8,
PrintWriter 寫入漢語(yǔ)就不會(huì)出現(xiàn)亂碼,也就是在jsp顯示的時(shí)候不會(huì)亂碼。

我們擁有十年網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)移動(dòng)網(wǎng)站建設(shè)、HTML5建站、等業(yè)務(wù)。無(wú)論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。

對(duì)于jsp :<%@page contentType = "text/html;chartset=utf-8"%>

jsp本質(zhì)上是一個(gè)servlet ,所以上面兩個(gè)設(shè)置本質(zhì)上是一樣的。

servlet獲取值的中文亂碼問(wèn)題:

(1).有效方法:
String Luanmaname = request.getParamater("name"); //此name亂碼
String trueName = new String(Luanmaname.getBytes("iso-8859-1"),"utf-8");//此name不亂碼
但是數(shù)據(jù)過(guò)多的時(shí)候一個(gè)個(gè)處理麻煩
(2).針對(duì)post有效
request.setCharacterEncode("utf-8");//需要放在request.getParamater前面才能起作用
(3).針對(duì)get有效(在sever.xml里面設(shè)置)
<Connector port = "8080" ………… URIEncoding = "utf-8"/>

2.比較response.setContentType("text/html;chartset=utf-8")與request.setCharacterEncode("utf-8")的區(qū)別:
前者是對(duì)服務(wù)器向客戶端應(yīng)答的時(shí)候設(shè)置字符類型,主要對(duì)后面的PrintWriter out = response.getWriter();
out.write("程序員");這個(gè)write設(shè)置的,一般正式開(kāi)發(fā)PrintWriter用的較少,此設(shè)置相應(yīng)用的也較少

而后者是服務(wù)器端獲取客戶端的內(nèi)容,來(lái)設(shè)置字符類型。因?yàn)閠omcat也就是服務(wù)器端的編碼方式是iso-859-1
而且此設(shè)置只對(duì)post提交有效,要放在request.getParamater前面才可以影響到此方法

3.jsp頁(yè)面的
<%@page contentType = "text/html;chartset=utf-8"%> 是給服務(wù)器看的
<meta http-equiv = "Content-Type" content = "text/html;charset="utf-8">是給客戶端看的

4.jsp的請(qǐng)求轉(zhuǎn)發(fā)與重定向:
請(qǐng)求轉(zhuǎn)發(fā):
String name = request.getParamater("name");
RequestDispatcher rd = request.getRequestDispatcher("/selectservlet");//要跳轉(zhuǎn)的servlet的url-pattern
rd.forward(request,response);
轉(zhuǎn)發(fā)之后,request中的name還可以獲取,就是原來(lái)的request和response還存在
重定向:
String name = request.getParamater("name");
response.sendRedirect(request.getContextPath()+"/selectServlet");
或者response.sendRedirect("selectServlet");//這樣寫也可以,但不建議這樣寫
帶參數(shù)response.sendRedirect(request.getContextPath()+"/selectServlet?name="+name);

兩者的區(qū)別:
請(qǐng)求轉(zhuǎn)發(fā)可以傳參數(shù),數(shù)據(jù)不會(huì)丟失,重定向不可以,數(shù)據(jù)會(huì)丟失
請(qǐng)求轉(zhuǎn)發(fā)地址欄的url不會(huì)改變,重定向會(huì)發(fā)生變化
請(qǐng)求轉(zhuǎn)發(fā)不需要加webapp名稱,重定向或者加webapp名稱,或者不加/
請(qǐng)求轉(zhuǎn)發(fā)只能在一個(gè)web應(yīng)用程序內(nèi)進(jìn)行,重定向可以到其他應(yīng)用程序
請(qǐng)求轉(zhuǎn)發(fā)后面調(diào)用的方法類別與前面相同,而重定向全部變?yōu)間et請(qǐng)求,與之前的沒(méi)有關(guān)系
請(qǐng)求轉(zhuǎn)發(fā)是一次請(qǐng)求,重定向是多次請(qǐng)求(生產(chǎn)多個(gè)request對(duì)象)

5.paramater 與 attribute 區(qū)別:
(1).paramater是客戶端帶過(guò)來(lái)的(客戶端請(qǐng)求參數(shù)),attribute是在服務(wù)器端放入的數(shù)據(jù)
(2).paramater數(shù)據(jù)時(shí)只讀的,attribute數(shù)值是可讀寫的
(3).getParamater返回的數(shù)值是string類型,而getAttribute 返回的是object類型,需要強(qiáng)轉(zhuǎn)

6.修改session的失效時(shí)間
(1).在servlet代碼里面加入session.setMaxInactiveInterval(40);40s失效
(2).在tomcat的conf下設(shè)置sever.xml
   <session-config>
      <session-timeout>1</session-timeout> 1分鐘失效,默認(rèn)是30 ,也就是30分鐘失效
   </session-config>
但是會(huì)影響所有的項(xiàng)目
(3).在本項(xiàng)目的web.xml里面設(shè)置
   <session-config>
      <session-timeout>1</session-timeout> 1分鐘失效
   </session-config>
刪除session : session.invalidate();

7.js里面獲取java代碼request.setAttribute("aaa",name);的值
(1).取變量值
   var a = '<%=request.getAttribute("aaa")%>' ;
(2).也可以將這個(gè)值放在頁(yè)面上.再取出來(lái).
   <input type="hidden" value="<%=request.getAttribute("aaa")%>" id="aaa"/>
   var a = document.getElementById('aaa').value ;

8.request對(duì)象和session對(duì)象的大區(qū)別是生命周期
request對(duì)象的生命周期是針對(duì)一個(gè)客戶端(說(shuō)確切點(diǎn)就是一個(gè)瀏覽器應(yīng)用程序)的一起請(qǐng)求 當(dāng)請(qǐng)求完畢之后,request里邊的內(nèi)容也將被釋放
而session的生命周期也是針對(duì)一個(gè)客戶端 但是卻是在別人設(shè)置的會(huì)話周期內(nèi)(一般是20-30分鐘) session里邊的內(nèi)容將一直存在 即便關(guān)閉了這個(gè)客戶端瀏覽器 session也不一定會(huì)馬上釋放掉的

request和session的優(yōu)點(diǎn)和缺點(diǎn)很明顯
request占用資源比較少 安全性也比較高 可是相對(duì)來(lái)說(shuō) 缺乏持續(xù)性
而session則相對(duì)來(lái)說(shuō) 對(duì)資源的消耗會(huì)大點(diǎn) 安全性相對(duì)來(lái)說(shuō)也會(huì)稍微低點(diǎn) 可是它能實(shí)現(xiàn)比如會(huì)話跟蹤技術(shù) 個(gè)有優(yōu)點(diǎn)和缺點(diǎn)
不過(guò) 個(gè)人覺(jué)得 如果可以使用request的情況下 盡量使用request 因?yàn)橄鄬?duì)于服務(wù)器來(lái)說(shuō) 資源的消耗這個(gè)問(wèn)題還是比較重要的

request    HTTP請(qǐng)求開(kāi)始到結(jié)束這段時(shí)間
session    HTTP會(huì)話開(kāi)始到結(jié)束這段時(shí)間
application    服務(wù)器啟動(dòng)到停止這段時(shí)間

9.get post 區(qū)別
(1).安全性 get < post get提交的數(shù)據(jù)會(huì)在瀏覽器地址欄顯示
(2).提交內(nèi)容大小 get < post 前者數(shù)據(jù)不能超過(guò)2k 后者不受限制,建議不大于64K
(3).響應(yīng)速度 get < post get要求服務(wù)器立即請(qǐng)求,post請(qǐng)求可能形成一個(gè)隊(duì)列請(qǐng)求

10.cookie與session的區(qū)別:
(1).存在的位置:cookie保存在客戶端,session保存在服務(wù)器端
(2).安全性:cookie的安全性比session弱
(3).網(wǎng)絡(luò)傳輸量:cookie通過(guò)網(wǎng)絡(luò)在客戶端和服務(wù)器之間傳輸,而session保存在服務(wù)器端,不需要傳輸
(4).生命周期(以20分鐘為例)
cookie的生命周期是累計(jì)的,從創(chuàng)建時(shí)開(kāi)始計(jì)時(shí),20分鐘后cookie生命周期結(jié)束,cookie就無(wú)效
session的生命周期是間隔的,從創(chuàng)建時(shí)開(kāi)始計(jì)時(shí),如果在20分鐘內(nèi)無(wú)訪問(wèn),則session失效,如果在20分鐘內(nèi),比如說(shuō)19分鐘訪問(wèn)session,
它的生命周期重新開(kāi)始計(jì)算
另外。關(guān)機(jī)會(huì)影響session生命周期,但是對(duì)cookie無(wú)影響

網(wǎng)站欄目:servlet部分知識(shí)總結(jié)-創(chuàng)新互聯(lián)
文章分享:http://bm7419.com/article0/dpdcio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名定制網(wǎng)站、ChatGPT軟件開(kāi)發(fā)、品牌網(wǎng)站制作、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)