服務器設置編碼方案
1.可以通過response.setCharactorEncoding("utf-8")來設置服務器端的編碼方式
2.也可以通過response.setContentType("textml;charset=utf-8")方法,以消息頭的方式告訴瀏覽器以什么編碼格式解碼 ,若使用第二種,則第一種可以不設置,因為其默認值和方式二保持一致。
Servlet的運行過程時
1):瀏覽器依據url(ip.port)發送給通信組件
2):瀏覽器根據http協議建立與服務器之間的連接
3):瀏覽器會將請求資源路徑(demo1/hello)以及相關的信息按照http協議打成一個包
4):發送請求
5):服務器通信組件對請求中的數據包進行解析(拆包)
6):通信組建創建request對象,同時還會創建一個response對象,服務器解析請求數據包,將解析后的數據存放到request中 。
7):服務器通過appName(demo1)找到webapps目錄中demo1目錄(web應用),找到demo1下的web.xml
8):通過web.xml文件找到servlet完整的權限名稱(包+類),之后依據反射機制創建該servlet實例
9):服務器調用servlet的service方法,在調用時會將事先創建好的request和response對象當做參數傳給servlet方法調用 request對象的方法獲取請求中的參數,然后會進行相 應的業務處理,再將處理后的結果放入response對象中。
10):服務器從response對象中獲取數據
11):服務器將取出的數據打包
12):服務器將數據發送給瀏覽器
13):瀏覽器從數據包中解析出相應的數據(拆包)
14):瀏覽器生成相應的界面(html)
如何獲取表單中的參數
String value=request.getParemeter("key");
注意:
1.如果key不存在,返回null
2.如果表單中沒有輸入值,則返回“”
3.如果表單中有多個key名字都相同demo1、register?city=bj&city=sh&city=gz
String[]values=request.getParameterValues("key");
請求方式:
get
你用url傳遞參數
瀏覽器會把參數自動附加到url上傳遞給服務器,在傳參的過程中參數是可見的
/demo/register? code=zs&pw=1234
對傳遞的參數有限制,很小
使用get的時機:
--傳遞很少的數據時
--查詢,刪除
post
利用實體內容傳參
數據在傳遞過程中不可見,相對安全
對數據的大小沒有限制,可以很大
使用post的時機:
--傳遞的數據較多
--如新增保存,修改保存,注冊,等領