麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

java學習筆記—HttpServletResponse(22)

2019-11-14 23:36:17
字體:
來源:轉載
供稿:網友
java學習筆記—HttpServletResponse(22)

1 亂碼處理

GET請求使用直接通過地址欄回車或超鏈接的單擊以及form表單中method的get數據提交過來的請求,該請求和傳遞用戶參數的方式是http://www.jnb.com?name=jack&age=36 因此可見get方式的請求參數有限(小于1K)。而且傳遞的數據直接在地址欄可見。如: 百度的搜索關鍵字。

1.1 編寫一個提交get數據的一個注冊表

 <form action="/day07/regist" method="get">       <table align="center" border="1">         <tr>           <td>用戶:</td>           <td><input type="text" name="uname"/></td>         </tr>         <tr>           <td>地址:</td>           <td><input type="text" name="address"/></td>         </tr>         <tr align="center">           <td colspan="2">               <input type="submit" value="注冊"/>               <input type="reset" value="重置"/>           </td>         </tr>       </table>    </form>

2 編寫一個RegistServlet處理用戶的Get請求數據

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 處理響應數據的格式和編碼        response.setCharacterEncoding("utf-8");        response.setContentType("text/html;charset=utf-8");        // 獲取字符輸出流對象        PRintWriter out = response.getWriter();        // 獲取請求參數        String name = request.getParameter("uname");        String address = request.getParameter("address");        // 輸出數據        out.println("name="+name);        out.println("<br/>");        out.println("address="+address);    }

運行結果發現輸入中文提交后顯示結果為亂碼:

3 分析亂碼的原因

4 使用代碼解決亂碼問題

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 處理響應數據的格式和編碼        response.setCharacterEncoding("utf-8");        response.setContentType("text/html;charset=utf-8");        // 獲取字符輸出流對象        PrintWriter out = response.getWriter();        // 獲取請求參數        String name = request.getParameter("uname");        String address = request.getParameter("address");        // 獲取ISO8859-1的原始數據        byte [] bs = name.getBytes("ISO8859-1");        name = new String(bs,"UTF-8");        bs = address.getBytes("ISO8859-1");        address = new String(bs,"UTF-8");        // 輸出數據        out.println("name="+name);        out.println("<br/>");        out.println("address="+address);    }

如果使用以上的代碼解決GET亂碼每一個請求參數都需要重新的解碼太繁瑣,因此可以直接使用服務器通知瀏覽器以指定的方式進行編碼字符數據。

5 使用URIEnoding方式解決GET亂碼問題

<Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443"                URIEncoding="utf-8"/>

URIEncoding主要指定的是%E5%8D%A1%E5%8D%A1的數據的解碼方式,如果沒有指定那么默認是ISO8859-1,如果指定那么采用指定的碼表進行解碼。因此服務器端就沒有必要使用兩個中編碼方式進行轉碼了。

注意:在實際的生產環境中我們代碼的亂碼問題不可能以來服務器幫助我們解決,因此推薦使用第一個轉碼方式。后期可以直接實現一個亂碼的過濾器實現處理亂碼的問題。

  1. POST請求

POST請求主要是以form表單的method=”post”發送的請求。該請求的數據在HTTP協議的請求體中。可以傳遞任意大小的數據。因此比較適合上傳文件。

修改以上的注冊頁面提交方式為post,那么在doPost()直接獲取數據并輸出同樣出現亂碼。

使用代碼解決亂碼

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 處理響應數據的格式和編碼        response.setCharacterEncoding("utf-8");        response.setContentType("text/html;charset=utf-8");        // 處理post請求參數亂碼        request.setCharacterEncoding("utf-8");        // 獲取字符輸出流對象        PrintWriter out = response.getWriter();        // 獲取請求參數        String name = request.getParameter("uname");        String address = request.getParameter("address");        // 輸出數據        out.println("name="+name);        out.println("<br/>");        out.println("address="+address);}

總結:以后在實際的開發中避免不了給頁面輸出中文數據以及中文的參數。那么以后在處理用戶請求的doGet和doPost方法中我們應直接編寫如下三句:

response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国内毛片视频 | 久久久一区二区 | 欧美视频一区二区三区 | 久草在线新时代视觉 | 国产一区二区精品免费 | 精国产品一区二区三区四季综 | 99国产精品国产免费观看 | 日本一区二区三区视频在线 | 久久久久夜色精品国产老牛91 | 欧美一区二区三区不卡免费观看 | 91羞羞| 免费激情网址 | 亚州综合网 | 国产不卡av在线 | 鲁人人人鲁人人鲁精品 | 一级做a爰片性色毛片2021 | 中文字幕xxx | 久久久久久久久国产 | 亚洲一区 国产 | 国产亚洲综合一区二区 | 国产亚洲欧美在线视频 | 国产精品视频一区二区三区四区国 | hdhdhd79xxxxх| 蜜桃欧美性大片免费视频 | 亚洲视频在线一区二区 | 久在线观看福利视频69 | 日本在线不卡免费 | 91免费视频版 | 日本黄色免费观看视频 | 国产免费一区二区三区视频 | 免费在线观看成年人视频 | 欧美在线中文字幕 | 中文日产幕无线码6区免费版 | 欧美高清在线精品一区二区不卡 | 日韩三区视频 | 污黄视频在线播放 | 国产精品自在线拍 | www久久综合 | 羞羞视频免费观看入口 | 久啪视频 | 国产成人精品免高潮在线观看 |