JSP內置對象(包括request和response)以及解決url傳中文參數出現亂碼問題

一、內置對象簡介

1、JSP內置對象是Web容器創建的一組對象,不使用new關鍵字就可以使用的內置對象。例如:out對象

<%
    int[] value={60,70,80};
    for(int i:value){
         out.println(i);
    }
%>

2、JSP九大內置對象:
out,request,response,session,application(五大常用對象)

Page,pageContext,exception.config(四個不太常用對象)


out是JspWriter 的實例,是向客戶端輸出內容的常用對象.
常用方法:
1.void println() 向客戶端打印字符串.
2.void clear() 清除緩衝區,在flush之後調用會拋出異常,拋出異常後,之後的內容不會被執行
3.void clearBuffer() 清除緩衝區,在flush之後調用不會拋出異常.
4.void flush() 將緩衝區內容輸出到客戶端.
5.int getBufferSize() 
6.int getRemaining()
7.boolean siAutoFlush()
8.void close()


表單有兩種提交方式:get與post。定義在<form action="dologin.jsp" name="loginForm" method="提交方式***"></form> 動作/名稱等順序無所謂。
1.get:以【明文】方式,通過URL提交數據,數據在URL中【可以看到】。提交數據最多不超過【2KB】。安全性較低,但效率比post方式高。適合提交數據量不大,且安全要求不高的數據:比如:搜索、查詢等功能。
2.post:將用戶提交的信息封裝在HTML HEADER內。適合提交數據量大,安全性高的用戶信息。如:註冊、修改、上傳等功能。


request對象
1、request用於封裝客戶端的請求信息。
2、它是HttpServletRequest類的實例。
3、request對象具有請求域,即完成客戶端的請求之前,該對象一直有效。

常用方法如圖所示




注:虛擬路徑默認與項目名稱相同,但是可以通過選中項目>選擇Properites>MyEclipse>Web>Web-Context-root 來修改虛擬路徑(修改虛擬路徑不影響項目名,但是需要重新部署,webapps文件夾中的項目名字使用的是虛擬路徑);地址欄中訪問資源要用虛擬路徑。例如對於http://localhost:8080/JspStudy/request.jsp,

request.getRealPath("request.jsp")則返回F:\apache-tomcat-7.0.26\webapps\JspStudy\request.jsp,

request.getContextPath()則返回/JspStudy


解決url傳中文參數出現亂碼問題:

URL傳中文參數不能用setCharacterEncoding("utf-8")解決,這種方式僅能解決通過表單傳中文參數導致亂碼的問題

URL傳中文參數亂碼的解決方案:
tomcat  -> conf -> server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" 【URIEncoding="utf-8"】添加這一句,修改服務器編碼方式
/>


response對象


注:使用PrintWriter 輸出的字符串 總是先於 內置的JspWriter對象(out對象)輸出的字符串,例如:


輸出的結果爲



可以使用out.flush()來避免這種情況


結果爲


即先強制刷新緩衝區,輸出緩衝區中的內容



請求重定向:

服務端responce.sendRedirect("xx.jsp")重定向。【客戶端行爲】:即客戶端會訪問兩次,第一次訪問後會立即跳轉到第二個重定向頁面上,【從本質上講等於兩次請求】,而前一次的請求封裝的request對象不會保存,地址欄的URL地址會改變。

請求轉發:

服務端request.getRequestDispatcher("xx.jsp").forward(request,response)請求轉發。forward(request,response)用於保存內置對象request和response。【服務器行爲】:服務器會代替客戶端去訪問轉發頁面,【從本質是一次請求】,轉發後請求對象會保存,地址欄的URL地址不會改變。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章