對于servlet :servlet里面加入代碼response.setContentType("text/html;chartset=utf-8");
告訴tomcat不要使用默認(rèn)的編碼方式(iso-8859-1)來應(yīng)答客戶端,而要使用utf-8,
PrintWriter 寫入漢語就不會出現(xiàn)亂碼,也就是在jsp顯示的時候不會亂碼。
對于jsp :<%@page contentType = "text/html;chartset=utf-8"%>
jsp本質(zhì)上是一個servlet ,所以上面兩個設(shè)置本質(zhì)上是一樣的。
servlet獲取值的中文亂碼問題:
(1).有效方法:
String Luanmaname = request.getParamater("name"); //此name亂碼
String trueName = new String(Luanmaname.getBytes("iso-8859-1"),"utf-8");//此name不亂碼
但是數(shù)據(jù)過多的時候一個個處理麻煩
(2).針對post有效
request.setCharacterEncode("utf-8");//需要放在request.getParamater前面才能起作用
(3).針對get有效(在sever.xml里面設(shè)置)
<Connector port = "8080" ………… URIEncoding = "utf-8"/>
2.比較response.setContentType("text/html;chartset=utf-8")與request.setCharacterEncode("utf-8")的區(qū)別:
前者是對服務(wù)器向客戶端應(yīng)答的時候設(shè)置字符類型,主要對后面的PrintWriter out = response.getWriter();
out.write("程序員");這個write設(shè)置的,一般正式開發(fā)PrintWriter用的較少,此設(shè)置相應(yīng)用的也較少
而后者是服務(wù)器端獲取客戶端的內(nèi)容,來設(shè)置字符類型。因為tomcat也就是服務(wù)器端的編碼方式是iso-859-1
而且此設(shè)置只對post提交有效,要放在request.getParamater前面才可以影響到此方法
3.jsp頁面的
<%@page contentType = "text/html;chartset=utf-8"%> 是給服務(wù)器看的
<meta http-equiv = "Content-Type" content = "text/html;charset="utf-8">是給客戶端看的
4.jsp的請求轉(zhuǎn)發(fā)與重定向:
請求轉(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還可以獲取,就是原來的request和response還存在
重定向:
String name = request.getParamater("name");
response.sendRedirect(request.getContextPath()+"/selectServlet");
或者response.sendRedirect("selectServlet");//這樣寫也可以,但不建議這樣寫
帶參數(shù)response.sendRedirect(request.getContextPath()+"/selectServlet?name="+name);
兩者的區(qū)別:
請求轉(zhuǎn)發(fā)可以傳參數(shù),數(shù)據(jù)不會丟失,重定向不可以,數(shù)據(jù)會丟失
請求轉(zhuǎn)發(fā)地址欄的url不會改變,重定向會發(fā)生變化
請求轉(zhuǎn)發(fā)不需要加webapp名稱,重定向或者加webapp名稱,或者不加/
請求轉(zhuǎn)發(fā)只能在一個web應(yīng)用程序內(nèi)進(jìn)行,重定向可以到其他應(yīng)用程序
請求轉(zhuǎn)發(fā)后面調(diào)用的方法類別與前面相同,而重定向全部變?yōu)間et請求,與之前的沒有關(guān)系
請求轉(zhuǎn)發(fā)是一次請求,重定向是多次請求(生產(chǎn)多個request對象)
5.paramater 與 attribute 區(qū)別:
(1).paramater是客戶端帶過來的(客戶端請求參數(shù)),attribute是在服務(wù)器端放入的數(shù)據(jù)
(2).paramater數(shù)據(jù)時只讀的,attribute數(shù)值是可讀寫的
(3).getParamater返回的數(shù)值是string類型,而getAttribute 返回的是object類型,需要強轉(zhuǎn)
6.修改session的失效時間
(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>
但是會影響所有的項目
(3).在本項目的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).也可以將這個值放在頁面上.再取出來.
<input type="hidden" value="<%=request.getAttribute("aaa")%>" id="aaa"/>
var a = document.getElementById('aaa').value ;
8.request對象和session對象的大區(qū)別是生命周期
request對象的生命周期是針對一個客戶端(說確切點就是一個瀏覽器應(yīng)用程序)的一起請求 當(dāng)請求完畢之后,request里邊的內(nèi)容也將被釋放
而session的生命周期也是針對一個客戶端 但是卻是在別人設(shè)置的會話周期內(nèi)(一般是20-30分鐘) session里邊的內(nèi)容將一直存在 即便關(guān)閉了這個客戶端瀏覽器 session也不一定會馬上釋放掉的
request和session的優(yōu)點和缺點很明顯
request占用資源比較少 安全性也比較高 可是相對來說 缺乏持續(xù)性
而session則相對來說 對資源的消耗會大點 安全性相對來說也會稍微低點 可是它能實現(xiàn)比如會話跟蹤技術(shù) 個有優(yōu)點和缺點
不過 個人覺得 如果可以使用request的情況下 盡量使用request 因為相對于服務(wù)器來說 資源的消耗這個問題還是比較重要的
request HTTP請求開始到結(jié)束這段時間
session HTTP會話開始到結(jié)束這段時間
application 服務(wù)器啟動到停止這段時間
9.get post 區(qū)別
(1).安全性 get < post get提交的數(shù)據(jù)會在瀏覽器地址欄顯示
(2).提交內(nèi)容大小 get < post 前者數(shù)據(jù)不能超過2k 后者不受限制,建議不大于64K
(3).響應(yīng)速度 get < post get要求服務(wù)器立即請求,post請求可能形成一個隊列請求
10.cookie與session的區(qū)別:
(1).存在的位置:cookie保存在客戶端,session保存在服務(wù)器端
(2).安全性:cookie的安全性比session弱
(3).網(wǎng)絡(luò)傳輸量:cookie通過網(wǎng)絡(luò)在客戶端和服務(wù)器之間傳輸,而session保存在服務(wù)器端,不需要傳輸
(4).生命周期(以20分鐘為例)
cookie的生命周期是累計的,從創(chuàng)建時開始計時,20分鐘后cookie生命周期結(jié)束,cookie就無效
session的生命周期是間隔的,從創(chuàng)建時開始計時,如果在20分鐘內(nèi)無訪問,則session失效,如果在20分鐘內(nèi),比如說19分鐘訪問session,
它的生命周期重新開始計算
另外。關(guān)機會影響session生命周期,但是對cookie無影響
網(wǎng)站欄目:servlet部分知識總結(jié)-創(chuàng)新互聯(lián)
文章分享:http://jinyejixie.com/article0/dpdcio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、定制網(wǎng)站、ChatGPT、軟件開發(fā)、品牌網(wǎng)站制作、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容