Web——Request请求
生活随笔
收集整理的這篇文章主要介紹了
Web——Request请求
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
Request通用方式獲取請求參數
○ 請求參數獲取方式:§ GET方式:□ String getQueryString()§ POST方式:□ BufferedReader getReader()○ 通用方式:§ Map<String, String[]> getParameterMap()//獲取所有參數Map集合§ String[] getParameterValues(Stringname)//根據名稱獲取參數值(數組)§ String getParameter(Stringname)//根據名稱獲取參數值(單個值) /*** Request獲取請求數據*/ @WebServlet("/req1") public class RequestDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/*** 獲取請求行數據*/// □ String getMethod()//獲取請求方法String method = req.getMethod();System.out.println(method);//GET//□ String getContextPath()//獲取虛擬目錄(項目訪問路徑)/request-demoString path = req.getContextPath();System.out.println(path);//□ StringBuffer getRequestURL()//獲取URL(統一資源定位符):http://localhost:8080/request-demo/req1StringBuffer url = req.getRequestURL();System.out.println(url);//□ String getRequestURI()//獲取URI(統一資源標識符):/request-demo/req1String uri = req.getRequestURI();System.out.println(uri);//□ String getQueryString()//獲取請求參數(GET方式):username=zhangsan&password=123String queryString = req.getQueryString();System.out.println(queryString);/*** 獲取請求頭數據*///獲取請求頭:user-agent:瀏覽器版本信息String reqHeader = req.getHeader("user-agent");System.out.println(reqHeader);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {/***獲取post請求體:請求參數*///獲取字符輸入流BufferedReader br = req.getReader();//讀取數據String line = br.readLine();System.out.println(line);} } 對應的post表單 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><form action="//localhost:8080/request-demo/req4" method="post"><input type="text" name="username"><input type="password" name="password"><input type="submit"></form> </body> </html> ○ 使用通用方式獲取參數和,屏蔽了GET和POST的請求方式代碼的不同,則代碼可以定義為如下格式 @WebServlet("/req3")publicclassRequestDemo2extendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//GET請求邏輯}@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//POST請求邏輯this.doGet(req,resp);}} 執行流程大致同下面相同創建 Servlet模板
可以使用Servlet模板創建Servlet更高效 ,具體步驟如下:
設置Servlet模板的步驟如下
:
○ Request請求參數中文亂碼處理§ 請求參數如果存在中文數據,會亂碼§ 解決方案:□ POST:設置輸入流的編碼? request.setCharacterEncoding("UTF-8");□ GET:□ URL編碼:? 將字符串按照編碼方式轉為二進制? 每個字節轉為2個16進制數并在前邊加上% /*** 中文亂碼問題的解決方案*/ @WebServlet("/req4") public class RequestDemo4 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/* //1.解決亂碼 POST getReader()request.setCharacterEncoding("UTF-8");//設置字符輸入流的編碼//2.獲取usernameString username = request.getParameter("username");System.out.println(username);*///3.GET獲取參數的方式底層還是,getQueryString()request.setCharacterEncoding("UTF-8");//設置字符輸入流的編碼//2.獲取usernameString username = request.getParameter("username");System.out.println("亂碼:" + username);//亂碼原因:tomcat進行URL解碼時,默認字符集是ISO-8859-1//3.1先對亂碼數據進行編碼,轉為字節數組//3.2字節數組解碼username = new String(username.getBytes("ISO-8859-1"), "utf-8");System.out.println("解決亂碼后:" + username);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);} } 對應的post表單 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><form action="//localhost:8080/request-demo/req4" method="get"><input type="text" name="username"><br><input type="password" name="password"><br><input type="checkbox" name="hobby" value="1">游泳<input type="checkbox" name="hobby" value="2">爬山<br><input type="submit"></form> </body> </html>執行步驟
1.運行tomcat服務器 2.進入鏈接 3.輸入表單文件 4.在輸入框中輸入任意中文 5.回到idea控制臺查看 § Tomcat8.0之后,已將GET請求亂碼問題解決,設置默認的解碼方式為UTF-8 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Web——Request请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪市值首破万亿!王传福成中国大陆第六
- 下一篇: k近邻算法_K近邻(knn)算法是如何完