HttpServletRequest和HttpServletResponse實例


先看一下web.xml文件配置:

復制代碼
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>RequestDemo</servlet-name> <servlet-class>cn.test.request.RequestDemo</servlet-class> </servlet> <servlet> <servlet-name>ResponseDemo</servlet-name> <servlet-class>cn.test.response.ResponseDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>RequestDemo</servlet-name> <url-pattern>/RequestDemo</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ResponseDemo</servlet-name> <url-pattern>/ResponseDemo</url-pattern> </servlet-mapping> </web-app>
復制代碼

當一個請求發送到tomcat服務器時,服務器會查詢web.xml文件,先訪問所有的<servlet-mapping>,匹配其中<url-pattern>,找到相應的信息后,提取<servlet-name>,然后分別匹配<servlet>中的<servlet-name>,當匹配到結果時,再根據相對應的<servlet-class>找到后台程序並執行,這就完成了一次訪問過程。

requestdemo

復制代碼
  1 public class RequestDemo extends HttpServlet {  2  3 public void doGet(HttpServletRequest request, HttpServletResponse response)  4 throws ServletException, IOException {  5 /**  6  * 設置參數查詢的編碼  7  * 該方法只能對請求實體內容的數據編碼起作用。POST提交的數據在實體內容中,所以該方法對POST方法有效!  8  * GET方法的參數放在URI后面,所以對GET方式無效!!!  9 */  10 request.setCharacterEncoding("utf-8");  11  12  13 /* System.out.println("GET方式");  14  //接收GET方式提交的參數  15  String value = request.getQueryString();  16  System.out.println(value);*/  17  18  19 /**  20  * 統一方便地獲取請求參數的方法  21 */  22 System.out.println(request.getMethod()+"方式");  23 //getParameter(name): 根據參數名得到參數值(只能獲取一個值的參數)  24 String name = request.getParameter("name");  25  26 /**  27  * 手動重新解碼(iso-8859-1 字符串-> utf-8 字符串)  28 */  29 /*if("GET".equals(request.getMethod())){  30  name = new String(name.getBytes("iso-8859-1"),"utf-8");  31  }*/  32  33 String password = request.getParameter("password");  34  35 /*if("GET".equals(request.getMethod())){  36  password = new String(password.getBytes("iso-8859-1"),"utf-8");  37  }*/  38  39 System.out.println(name+"="+password);  40  41 System.out.println("=============================");  42 Enumeration<String> enums = request.getParameterNames();  43 while( enums.hasMoreElements() ){  44 String paramName = enums.nextElement();  45  46 //如果參數名是hobit,則調用getParameterValues 獲取多個參數值  47 if("hobit".equals(paramName)){  48 /**  49  * getParameterValues(name): 根據參數名獲取參數值(可以獲取多個值的同名參數)  50 */  51 System.out.println(paramName+":");  52 String[] hobits = request.getParameterValues("hobit");  53 for(String h: hobits){  54 /* if("GET".equals(request.getMethod())){  55  h = new String(h.getBytes("iso-8859-1"),"utf-8");  56  }*/  57 System.out.print(h+",");  58  }  59  System.out.println();  60 //如果不是hobit,則調用getParameter  61 }else{  62 String paramValue = request.getParameter(paramName);  63 /*  64  if("GET".equals(request.getMethod())){  65  paramValue = new String(paramValue.getBytes("iso-8859-1"),"utf-8");  66  }*/  67  68 System.out.println(paramName+"="+paramValue);  69  }  70  }  71  }  72 public void doPost(HttpServletRequest request, HttpServletResponse response)  73 throws ServletException, IOException {  74 /*System.out.println("POST方式");  75  InputStream in = request.getInputStream();  76  byte[] buf = new byte[1024];  77  int len = 0;  78  while( (len=in.read(buf))!=-1 ){  79  System.out.println(new String(buf,0,len));  80  }*/  81  82 /**  83  * 統一方便地獲取請求參數的方法  84 */  85 /*System.out.println("POST方式");  86  //根據參數名得到參數值  87  String name = request.getParameter("name");  88  String password = request.getParameter("password");  89  System.out.println(name+"="+password);  90  91  System.out.println("=============================");  92  Enumeration<String> enums = request.getParameterNames();  93  while( enums.hasMoreElements() ){  94  String paramName = enums.nextElement();  95  String paramValue = request.getParameter(paramName);  96  System.out.println(paramName+"="+paramValue);  97  }*/  98  99 //一定調用doGet方式 100 this.doGet(request, response); 101  } 102 103 }
復制代碼

responsedemo

復制代碼
public class ResponseDemo extends HttpServlet { /** * 1)tomcat服務器把請求信息封裝到HttpServletRequest對象,且把響應信息封裝到HttpServletResponse * 2)tomcat服務器調用doGet方法,傳入request,和response對象 */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /** * 3)通過response對象改變響應信息 */ /** * 3.1 響應行 */ //response.setStatus(404);//修改狀態碼 //response.sendError(404); // 發送404的狀態碼+404的錯誤頁面 /** * 3.2 響應頭 */ response.setHeader("server", "JBoss"); /** * 3.3 實體內容(瀏覽器直接能夠看到的內容就是實體內容) */ // response.getWriter().write("01.hello world"); //字符內容。 response.getOutputStream().write("02.hello world".getBytes());//字節內容  } /** * 4)tomcat服務器把response對象的內容轉換成響應格式內容,再發送給瀏覽器解析。 */ }
復制代碼

response重定向:

復制代碼
 1 public class ResponseDemo2 extends HttpServlet {  2  3 public void doGet(HttpServletRequest request, HttpServletResponse response)  4 throws ServletException, IOException {  5 /**  6  * 需求: 跳轉到adv.html  7  * 使用請求重定向: 發送一個302狀態碼+location的響應頭  8 */  9 /*response.setStatus(302);//發送一個302狀態碼 10  response.setHeader("location", "/day09/adv.html"); //location的響應頭 11 */ 12 13 //請求重定向簡化寫法 14 response.sendRedirect("/day09/adv.html"); 15 16 17  } 18 19 }
復制代碼

定時刷新:

復制代碼
 1 public class ResponseDemo extends HttpServlet {  2  3 public void doGet(HttpServletRequest request, HttpServletResponse response)  4 throws ServletException, IOException {  5 /**  6  * 定時刷新  7  * 原理:瀏覽器認識refresh頭,得到refresh頭之后重新請求當前資源  8 */  9 //response.setHeader("refresh", "1"); //每隔1秒刷新次頁面 10 11 /** 12  * 隔n秒之后跳轉另外的資源 13 */ 14 response.setHeader("refresh", "3;url=/day09/adv.html");//隔3秒之后跳轉到adv.html 15  } 16 17 }
復制代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM