日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RequestResponse

發布時間:2024/8/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RequestResponse 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Request&Response-授課

http協議特點

? 基于請求和響應

? 端口80

? 底層是TCP

servlet

? 生命周期 init service destory

? 創建時機:默認是第一次訪問創建該servlet的對象,可以通過load-on-startup

? servlet是不是單例:單例

? 是線程安全的嗎?不是

? urlpattern的三種匹配方式:完全匹配 路徑匹配 后綴名

? ServletContext對象

? 獲取 request. super.

? 方法 getMimeType() getRealPath() getInitParameter() setAttrubite getAttribute

? 生命周期 隨著tomcat的啟動而創建,停止而銷毀。里面的數據被所有的servlet共享

1 響應對象

1.1 響應對象概述

1.1.1 關于響應

響應,它表示了服務器端收到請求,同時也已經處理完成,把處理的結果告知用戶。簡單來說,指的就是服務器把請求的處理結果告知客戶端。在B/S架構中,響應就是把結果帶回瀏覽器。

響應對象,顧名思義就是用于在JavaWeb工程中實現上述功能的對象。

1.1.2 常用響應對象

響應對象也是是Servlet規范中定義的,它包括了協議無關的和協議相關的。

協議無關的對象標準是:ServletResponse接口

協議相關的對象標準是:HttpServletResponse接口

類結構圖如下:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yBenB06v-1609509272860)(assets/響應類視圖.png)]

我們課程中涉及的響應對象都是和HTTP協議相關的。即使用的是HttpServletResponse接口的實現類。

這里有些同學可能會產生疑問,我們在使用Servlet時,需要定義一個類,然后實現Servlet接口(或者繼承它的實現類)。現在我們想要實現響應功能,要不要定義一個類,然后實現HttpServletResponse接口呢?

此問題的答案是否定的,我們無需這么做。我們只需要在自己寫的Servlet中直接使用即可,因為這個對象的實現類是由Tomcat提供的,無須我們自定義。同時它還會幫我們把對象創建出來并傳入doGet和doPost方法中。

1.2 常用方法介紹

在HttpServletResponse接口中提供了很多方法,接下來我們通過API文檔,來了解一下這些方法。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3bqviq5h-1609509272863)(assets/響應方法詳解.png)]

常用狀態碼:

狀態碼說明
200執行成功
302它和307一樣,都是用于重定向的狀態碼。只是307目前已不再使用
304請求資源未改變,使用緩存。
400請求錯誤。最常見的就是請求參數有問題
404請求資源未找到
405請求方式不被支持
500服務器運行內部錯誤

狀態碼首位含義:

狀態碼說明
1xx消息
2xx成功
3xx重定向
4xx客戶端錯誤
5xx服務器錯誤

1.3 響應對象的使用示例

1.3.1 響應-字節流輸出中文問題

public class ResponseDemo1 extends HttpServlet {

/*** 演示字節流輸出的亂碼問題*/ public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/*** 問題:* String str = "字節流中文亂碼問題";* 使用字節流輸出,會不會產生中文亂碼?* 答案:* 會產生亂碼* 原因:* String str = "字節流中文亂碼問題"; 在保存時用的是IDEA創建文件使用的字符集UTF-8。* 到瀏覽器上顯示,chrome瀏覽器和ie瀏覽器默認的字符集是GB2312(其實就是GBK),存和取用的不是同一個碼表,就會產生亂碼。** 引申:* 如果產生了亂碼,就是存和取用的不是同一個碼表* 解決辦法:* 把存和取的碼表統一。*/String str = "字節流輸出中文的亂碼問題";//UTF-8的字符集,此時瀏覽器顯示也需要使用UTF-8的字符集。//1.拿到字節流輸出對象ServletOutputStream sos = response.getOutputStream();/*** 解決辦法:* 第一種解決辦法:* 修改瀏覽器的編碼,使用右鍵——編碼——改成UTF-8。(不推薦使用,我們的應用盡量不要求用戶取做什么事情)* ie和火狐瀏覽器可以直接右鍵設置字符集。而chrome需要安裝插件,很麻煩。* 第二種解決辦法: (不建議使用,因為不好記)* 向頁面上輸出一個meta標簽,內容如下: <meta http-equiv="content-type" content="text/html;charset=UTF-8">* 其實它就是指揮了瀏覽器,使用哪個編碼進行顯示。* 第三種解決辦法:* 設置響應消息頭,告知瀏覽器響應正文的MIME類型和字符集* response.setHeader("Content-Type","text/html;charset=UTF-8");* 第四種解決辦法:我們推薦使用的辦法* 它的本質就是設置了一個響應消息頭* response.setContentType("text/html;charset=UTF-8");*///第二種解決辦法:sos.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());//第三種解決辦法:response.setHeader("Content-Type","text/html;charset=UTF-8");//第四種解決辦法:response.setContentType("text/html;charset=UTF-8");//2.把str轉換成字節數組之后輸出到瀏覽器sos.write(str.getBytes("UTF-8")); }public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response); }

}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wKI8MU1m-1609509272864)(assets/ResponseDemo1.png)]### 1.3.2 響應-字符流輸出中文問題public class ResponseDemo2 extends HttpServlet {/*** 字符流輸出中文亂碼* @param request* @param response* @throws ServletException* @throws IOException*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String str = "字符流輸出中文亂碼";//response.setCharacterEncoding("UTF-8");//設置響應正文的MIME類型和字符集response.setContentType("text/html;charset=UTF-8");//1.獲取字符輸出流PrintWriter out = response.getWriter();//2.使用字符流輸出中文/*** 問題:* out.write(str); 直接輸出,會不會產生亂碼* 答案:* 會產生亂碼* 原因:* 存用的什么碼表:UTF-8* 在瀏覽器取之前,字符流PrintWriter已經獲取過一次了,PrintWriter它在取的時候出現了亂碼。* 瀏覽器取默認用的是GBK。(本地系統字符集)** UTF-8(存)————>PrintWriter ISO-8859-1(取) 亂* PrintWirter ISO-8859-1(存)————>瀏覽器 GBK(取) 亂** 解決辦法:* 改變PrintWriter的字符集,PrintWriter是從response對象中獲取的,其實設置response的字符集。* 注意:設置response的字符集,需要在拿流之前。* response.setCharacterEncoding("UTF-8");** response.setContentType("text/html;charset=UTF-8");* 此方法,其實是做了兩件事:* 1.設置響應對象的字符集(包括響應對象取出的字符輸出流)* 2.告知瀏覽器響應正文的MIME類型和字符集*/out.write(str);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5wB2FXIX-1609509272866)(assets/ResponseDemo2.png)]

1.3.3 響應-生成驗證碼

public class ResponseDemo3 extends HttpServlet {

/*** 輸出圖片* @param request* @param response* @throws ServletException* @throws IOException*/ public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int width = 200;int height = 35;/*** 實現步驟:* 1.創建圖像內存對象* 2.拿到畫筆* 3.設置顏色,畫矩形邊框* 4.設置顏色,填充矩形* 5.設置顏色,畫干擾線* 6.設置顏色,畫驗證碼* 7.把內存圖像輸出到瀏覽器上*///創建內存圖像BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//參數:寬度,高度 (指的都是像素),使用的格式(RGB)Graphics g = image.getGraphics();//畫筆就一根//設置顏色g.setColor(Color.BLUE);//畫邊框g.drawRect(0, 0, width, height);//設置顏色g.setColor(Color.GRAY);//填充矩形g.fillRect(1, 1, width-2, height-2);//設置顏色g.setColor(Color.WHITE);//拿隨機數對象Random r = new Random();//畫干擾線 10條for(int i=0;i<10;i++){g.drawLine(r.nextInt(width), r.nextInt(height),r.nextInt(width), r.nextInt(height));}//設置顏色g.setColor(Color.RED);//改變字體大小Font font = new Font("宋體", Font.BOLD,30);//參數:1字體名稱。2.字體樣式 3.字體大小g.setFont(font);//設置字體//畫驗證碼 4個int x = 35;//第一個數的橫坐標是35像素for(int i=0;i<4;i++){//r.nextInt(10)+""這種寫法效率是十分低的g.drawString(String.valueOf(r.nextInt(10)), x, 25);x+=35;}//輸出到瀏覽器上//參數: 1.內存對象。2.輸出的圖片格式。3.使用的輸出流ImageIO.write(image, "jpg", response.getOutputStream()); }public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response); }

}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LokwoBdB-1609509272867)(assets/ResponseDemo3.png)]### 1.3.4 設置響應消息頭-控制緩存```java /*** 設置緩存時間* 使用緩存的一般都是靜態資源* 動態資源一般不能緩存。* 我們現在目前只掌握了Servlet,所以用Servlet做演示*/ public class ResponseDemo4 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String str = "設置緩存時間";/** 設置緩存時間,其實就是設置響應消息頭:Expires 但是值是一個毫秒數。* 使用的是* response.setDateHeader();** 緩存1小時,是在當前時間的毫秒數上加上1小時之后的毫秒值*/response.setDateHeader("Expires",System.currentTimeMillis()+1*60*60*1000);response.setContentType("text/html;charset=UTF-8");response.getOutputStream().write(str.getBytes());}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-56D0vBAG-1609509272868)(assets/ResponseDemo4_chrome.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YRv0vxNe-1609509272869)(assets/ResponseDemo4_ie.png)]

1.3.5 設置響應消息頭定時刷新

/*** 設置響應消息頭:* 通過定時刷新演示添加消息頭*/ public class ResponseDemo5 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String str = "用戶名和密碼不匹配,2秒后轉向登錄頁面...";response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.write(str);//定時刷新,其實就是設置一個響應消息頭response.setHeader("Refresh", "2;URL=/login.html");//Refresh設置的時間單位是秒,如果刷新到其他地址,需要在時間后面拼接上地址}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-aHhtMd6Z-1609509272869)(assets/ResponseDemo5.png)]

1.3.6 請求重定向:注意地址欄發生改變。

/*** 設置響應狀態碼,實現重定向* 重定向的特點:* 兩次請求,地址欄改變,瀏覽器行為,xxxx**/ public class ResponseDemo6 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.設置響應狀態碼 // response.setStatus(302);//2.定向到哪里去: 其實就是設置響應消息頭,Location // response.setHeader("Location", "ResponseDemo7");//使用重定向方法response.sendRedirect("ResponseDemo7");//此行做了什么事,請看上面}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}} /*** 重定向的目的地*/ public class ResponseDemo7 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().write("welcome to ResponseDemo7");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-L1RSlEFK-1609509272870)(assets/ResponseDemo6.png)]

1.3.7 響應和消息頭組合應用-文件下載

首先,在工程的web目錄下新建一個目錄uploads,并且拷貝一張圖片到目錄中,如下圖所示:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-myrxCkLl-1609509272871)(assets/文件下載的圖片.png)]

文件下載的Servlet代碼如下:

/*** 文件下載**/ public class ResponseDemo8 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** 文件下載的思路:* 1.獲取文件路徑* 2.把文件讀到字節輸入流中* 3.告知瀏覽器,以下載的方式打開(告知瀏覽器下載文件的MIME類型)* 4.使用響應對象的字節輸出流輸出到瀏覽器上*///1.獲取文件路徑(絕對路徑)ServletContext context = this.getServletContext();String filePath = context.getRealPath("/uploads/6.jpg");//通過文件的虛擬路徑,獲取文件的絕對路徑//2.通過文件路徑構建一個字節輸入流InputStream in = new FileInputStream(filePath);//3.設置響應消息頭response.setHeader("Content-Type", "application/octet-stream");//注意下載的時候,設置響應正文的MIME類型,用application/octet-streamresponse.setHeader("Content-Disposition", "attachment;filename=1.jpg");//告知瀏覽器以下載的方式打開//4.使用響應對象的字節輸出流輸出OutputStream out = response.getOutputStream();int len = 0;byte[] by = new byte[1024];while((len = in.read(by)) != -1){out.write(by, 0, len);}in.close();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-S5Jn8P3X-1609509272871)(assets/ResponseDemo8.png)]

1.3.8 響應對象注意事項

第一: response得到的字符流和字節流互斥,只能選其一

第二:response獲取的流不用關閉,由服務器關閉即可

/*** 使用Response對象獲取流時候的注意事項:* 1.我們使用response獲取的流,可以不用關閉。服務器會給我們關閉。* 2.在response對象中,字節流和字符流互斥,輸出的時候,只能選擇一個* @author zhy**/ public class ResponseDemo9 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String str = "test";response.getOutputStream().write(str.getBytes());//response.getWriter().write(str); // response.getOutputStream().write("haha".getBytes());}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KA9hi0Tt-1609509272872)(assets/ResponseDemo9.png)]

2 請求對象

2.1 請求對象概述

2.1.1 關于請求

請求,顧明思議,就是使用者希望從服務器端索取一些資源,向服務器發出詢問。在B/S架構中,就是客戶瀏覽器向服務器發出詢問。在我們的JavaEE工程中,客戶瀏覽器發出詢問,要遵循HTTP協議所規定的。

請求對象,就是在JavaEE工程中,用于發送請求的對象。我們常用的對象就是ServletRequest和HttpServletRequest,它們的區別就是是否和HTTP協議有關。

2.1.2 常用請求對象

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NeylGrvd-1609509272873)(assets/請求對象的類試圖.png)]

2.2 常用方法介紹

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DRExlitc-1609509272873)(assets/Request方法詳解.png)]

2.3 請求對象的使用示例

2.3.1 請求對象常用方法1-獲取各種路徑

/*** 請求對象的各種信息獲取*/ public class RequestDemo1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//本機地址:服務器地址String localAddr = request.getLocalAddr();//本機名稱:服務器名稱String localName = request.getLocalName();//本機端口:服務器端口int localPort = request.getLocalPort();//來訪者ipString remoteAddr = request.getRemoteAddr();//來訪者主機String remoteHost = request.getRemoteHost();//來訪者端口int remotePort = request.getRemotePort();//統一資源標識符String URI = request.getRequestURI();//統一資源定位符String URL = request.getRequestURL().toString();//獲取查詢字符串String queryString = request.getQueryString();//獲取Servlet映射路徑String servletPath = request.getServletPath();//輸出內容System.out.println("getLocalAddr() is :"+localAddr);System.out.println("getLocalName() is :"+localName);System.out.println("getLocalPort() is :"+localPort);System.out.println("getRemoteAddr() is :"+remoteAddr);System.out.println("getRemoteHost() is :"+remoteHost);System.out.println("getRemotePort() is :"+remotePort);System.out.println("getRequestURI() is :"+URI);System.out.println("getRequestURL() is :"+URL);System.out.println("getQueryString() is :"+queryString);System.out.println("getServletPath() is :"+servletPath);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

2.3.2 請求對象常用方法2-獲取請求頭信息

/*** 獲取請求消息頭*/ public class RequestDemo2 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.根據名稱獲取頭的值 一個消息頭一個值String value = request.getHeader("Accept-Encoding");System.out.println("getHeader():"+value);//2.根據名稱獲取頭的值 一個頭多個值Enumeration<String> values = request.getHeaders("Accept");while(values.hasMoreElements()){System.out.println("getHeaders():"+values.nextElement());}//3.獲取請求消息頭的名稱的枚舉Enumeration<String> names = request.getHeaderNames();while(names.hasMoreElements()){String name = names.nextElement();String value1 = request.getHeader(name);System.out.println(name+":"+value1);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

2.3.3 請求對象常用方法3-獲取請求參數(非常重要)

在本小節,我們會講解HttpServletRequest對象獲取請求參數的常用方法,以及把獲取到的請求參數封裝到實體類中的方式。首先,我們先來創建一個Servlet對象

/*** 封裝請求正文到javabean(數據模型)*/ public class RequestDemo3 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** 把下面* 1)獲取請求參數* 2)封裝請求參數到實體類中* 中定義的test1到test8逐個添加到此處來運行即可。*/}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

接下來,我們在來準備一個表單頁面:

<html> <head><title>login to request demo 3</title> </head> <body> <form action="/day10_1122_requestresponse/RequestDemo3" method="post">用戶名:<input type="text" name="username" /><br/>密碼:<input type="password" name="password" /><br/>性別:<input type="radio" name="gender" value="1" checked><input type="radio" name="gender" value="0"><br/><input type="submit" value="注冊" /> </form> </body> </html>

現在,我們開始分析HttpServletRequest對象用于獲取請求參數的方法:

1)獲取請求參數

getParameter()方法的示例代碼

/*** 獲取請求正文,一個名稱對應一個值。 沒有使用確認密碼* @param request* @param response* @throws ServletException* @throws IOException*/ private void test1(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文String username = request.getParameter("username");String password = request.getParameter("password");String gender = request.getParameter("gender");System.out.println(username+","+password+","+gender); }

getParameterValues()方法的示例代碼

/*** 獲取請求正文,一個名稱可能對應多個值 使用了確認密碼* @param request* @param response* @throws ServletException* @throws IOException */ private void test2(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文String username = request.getParameter("username");String[] password = request.getParameterValues("password");//當表單中有多個名稱是一樣時,得到是一個字符串數組String gender = request.getParameter("gender");System.out.println(username+","+Arrays.toString(password)+","+gender); } <html> <head><title>login to request demo 4</title> </head> <body> <form action="/day10_1122_requestresponse/RequestDemo4" method="post" enctype="multipart/form-data">用戶名:<input type="text" name="username" /><br/>密碼:<input type="password" name="password" /><br/>確認密碼:<input type="password" name="password" /><br/>性別:<input type="radio" name="gender" value="1" checked><input type="radio" name="gender" value="0"><br/><input type="submit" value="注冊" /> </form> </body> </html>

getParameterNames()方法的示例代碼

/*** 獲取請求正文,一個名稱一個值。但是先要獲取正文名稱的枚舉(key的枚舉) 沒有使用確認密碼* @param request* @param response* @throws ServletException* @throws IOException */ private void test3(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文名稱的枚舉Enumeration<String> names = request.getParameterNames();//2.遍歷正文名稱的枚舉while(names.hasMoreElements()){String name = names.nextElement();String value = request.getParameter(name);System.out.println(name+":"+value);} }

總結:

? 以上三個方法可以獲取表單提交過來的請求參數。

? 參數的名稱是一個字符串,參數的值可能是一個字符串,也可能是一個字符串數組。

2)封裝請求參數到實體類中

我們通過上面的方法可以獲取到請求參數,但是如果參數過多,在進行傳遞時,方法的形參定義將會變得非常難看。此時我們應該用一個對象來描述這些參數,它就是實體類。這種類的定義,從基礎階段我們就開始使用了。在基礎階段,我們做過一個學生管理系統,用到了一個Student的類,它就是用于描述一個學生的實體類。

我們現在要做的就是把表單中提交過來的數據填充到實體類中。

第一種:最簡單直接的封裝方式

/*** 封裝請求正文到User對象中 沒有使用確認密碼* @param request* @param response* @throws ServletException* @throws IOException*/ private void test4(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文String username = request.getParameter("username");String password = request.getParameter("password");String gender = request.getParameter("gender");//2.創建一個User對象User user = new User();System.out.println("封裝前:"+user.toString());//3.把請求正文封裝到user對象中user.setUsername(username);user.setPassword(password);user.setGender(gender);System.out.println("封裝后:"+user.toString()); }

第二種:使用反射方式封裝

此種封裝的使用要求是,表單<input>標簽的name屬性取值,必須和實體類中定義的屬性名稱一致。

/*** 封裝請求正文到javabean中 沒有使用確認密碼* 使用反射+內省實現數據模型的封裝* 內省:是sun公司推出的一套簡化反射操作的規范。把javabean中的元素都封裝成一個屬性描述器。* 屬性描述器中會有字段信息,get和set方法(取值或存值)* @param request* @param response* @throws ServletException* @throws IOException */ private void test5(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文名稱的枚舉Enumeration<String> names = request.getParameterNames();User user = new User();System.out.println("封裝前:"+user.toString());//2.遍歷正文名稱的枚舉while(names.hasMoreElements()){String name = names.nextElement();String value = request.getParameter(name);try{//1.拿到User對象中的屬性描述器。是誰的屬性描述器:是由構造函數的第一個參數決定的。第二個參數是指定javabean的字節碼PropertyDescriptor pd = new PropertyDescriptor(name, User.class);//參數指的就是拿哪個類的哪個屬性的描述器//2.設置javabean屬性的值Method method = pd.getWriteMethod();//3.執行方法method.invoke(user, value);//第一個參數是指的給哪個對象,第二個參數指的是賦什么值}catch(Exception e){e.printStackTrace();}}System.out.println("封裝后:"+user.toString()); }

第三種:使用反射封裝,同時請求參數的值是一個數組

此種方式其實就是針對請求參數中包含name屬性相同的參數,例如:密碼和確認密碼,還有愛好。

/*** 獲取請求正文的關系映射Map<String,String[]> 使用確認密碼* @param request* @param response* @throws ServletException* @throws IOException*/ private void test6(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文的映射關系Map<String,String[]> map = request.getParameterMap();//2.遍歷集合for(Map.Entry<String,String[]> me : map.entrySet()){String name = me.getKey();String[] value = me.getValue();System.out.println(name+":"+Arrays.toString(value));} }

當我們把請求參數獲取出來之后,就要考慮如何針對數組的反射了,具體代碼如下:

/*** 封裝請求正文到javabean。使用的是反射+內省 使用了確認密碼* @param request* @param response* @throws ServletException* @throws IOException*/ private void test7(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文的映射關系Map<String,String[]> map = request.getParameterMap();Users user = new Users();System.out.println("封裝前:"+user.toString());//2.遍歷集合for(Map.Entry<String,String[]> me : map.entrySet()){String name = me.getKey();String[] value = me.getValue();try{//1.拿到User對象中的屬性描述器。是誰的屬性描述器:是由構造函數的第一個參數決定的。第二個參數是指定javabean的字節碼PropertyDescriptor pd = new PropertyDescriptor(name, Users.class);//參數指的就是拿哪個類的哪個屬性的描述器//2.設置javabean屬性的值Method method = pd.getWriteMethod();//3.執行方法//判斷參數到底是幾個值if(value.length > 1){//最少有2個元素method.invoke(user, (Object)value);//第一個參數是指的給哪個對象,第二個參數指的是賦什么值}else{method.invoke(user, value);//第一個參數是指的給哪個對象,第二個參數指的是賦什么值}}catch(Exception e){e.printStackTrace();}}System.out.println("封裝后:"+user.toString()); }

當我們寫完此種封裝方式之后,同學們可以發現,我們絕大多數封裝都可以使用這段代碼來實現。并且,無論是誰來寫這段通用的封裝代碼,其代碼內容都是大同小異的。**那么,我們就可以得出一個很有趣的結論:一般遇到這種情況時,肯定有人幫我們寫好了,我們只需要用就行了。**我們后面還會遇到類似這樣的情況。

此時,幫我們寫好這段封裝代碼的是apache軟件基金會,我們前面學習的tomcat也是它提供的。它里面有一個開源工具包集合commons,里面有很多開源工具類,今天我們就來講解第一個:commons-beanutils

第四種:使用apache的commons-beanutils實現封裝

實現代碼:

/*** 終極方法:使用beanutils實現請求正文封裝到javabean中 使用了確認密碼* 要想使用beanutils,需要先導包* @param request* @param response* @throws ServletException* @throws IOException*/ private void test8(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {Users user = new Users();System.out.println("封裝前:"+user.toString());try{BeanUtils.populate(user, request.getParameterMap());//就這一句話}catch(Exception e){e.printStackTrace();}System.out.println("封裝后:"+user.toString()); }

2.3.4 用流的形式讀取請求信息

我們除了使用2.3.3小節中獲取請求參數之外,還可以使用下面代碼中的 方式來獲取:

/*** 使用流的方式讀取請求正*/ public class RequestDemo4 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文的字節輸入流ServletInputStream sis = request.getInputStream();//2.讀取流中的數據int len = 0;byte[] by = new byte[1024];while((len = sis.read(by)) != -1){System.out.println(new String(by,0,len));}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

2.3.5請求正文中中文編碼問題

關于請求中文亂碼問題,我們需要分開討論,第一是POST請求方式,第二是GET方式。

1)POST方式請求

在POST方式請求中,我們的亂碼問題可以用如下代碼解決:

/*** 請求正文的中文亂碼問題*/ public class RequestDemo5 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.獲取請求正文/*POST方式:* 問題:* 取的時候會不會有亂碼* 答案:* 獲取請求正文,會有亂碼問題。* 是在獲取的時候就已經亂碼了。* 解決辦法:* 是request對象的編碼出問題了* 設置request對象的字符集* request.setCharacterEncoding("GBK");它只能解決POST的請求方式,GET方式解決不了* 結論:* 請求正文的字符集和響應正文的字符集沒有關系。各是各的*/request.setCharacterEncoding("UTF-8");String username = request.getParameter("username");//輸出到控制臺System.out.println(username);//輸出到瀏覽器:注意響應的亂碼問題已經解決了response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.write(username);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

2)GET方式請求

GET方式請求的正文是在地址欄中,在Tomcat8.5版本及以后,Tomcat服務器已經幫我們解決了,所以不會有亂碼問題了。

而如果我們使用的不是Tomcat服務器,或者Tomcat的版本是8.5以前,那么GET方式仍然會有亂碼問題,解決方式如下:(以下代碼了解即可,因為我們現在使用的是Tomcat9.0.27版本)

/*** 在Servlet的doGet方法中添加如下代碼*/ public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/** GET方式:正文在地址欄* username=%D5%C5%C8%FD* %D5%C5%C8%FD是已經被編過一次碼了** 解決辦法:* 使用正確的碼表對已經編過碼的數據進行解碼。* 就是把取出的內容轉成一個字節數組,但是要使用正確的碼表。(ISO-8859-1)* 再使用正確的碼表進行編碼* 把字節數組再轉成一個字符串,需要使用正確的碼表,是看瀏覽器當時用的是什么碼表*/String username = request.getParameter("username");byte[] by = username.getBytes("ISO-8859-1");username = new String(by,"GBK");//輸出到瀏覽器:注意響應的亂碼問題已經解決了response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.write(username); }public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response); }

2.3.6 請求轉發(與重定向的區別)

在實際開發中,重定向和請求轉發都是我們要用到的響應方式,那么他們有什么區別呢?我們通過下面的示例來看一下:

/*** 重定向特點:* 兩次請求,瀏覽器行為,地址欄改變,請求域中的數據會丟失* 請求轉發:* 一次請求,服務器行為,地址欄不變,請求域中的數據不丟失** 請求域的作用范圍:* 當前請求(一次請求),和當前請求的轉發之中*/ public class RequestDemo6 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.拿到請求調度對象RequestDispatcher rd = request.getRequestDispatcher("/RequestDemo7");//如果是給瀏覽器看的,/可寫可不寫。如果是給服務器看的,一般情況下,/都是必須的。//放入數據到請求域中request.setAttribute("CityCode", "bj-010");//2.實現真正的轉發操作rd.forward(request, response);//實現真正的轉發操作}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}public class RequestDemo7 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//獲取請求域中的數據String value = (String)request.getAttribute("CityCode");response.getWriter().write("welcome to request demo 7 "+value);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

2.3.7 請求包含

在實際開發中,我們可能需要把兩個Servlet的內容合并到一起來響應瀏覽器,而同學們都知道HTTP協議的特點是一請求,一響應的方式。所以絕對不可能出現有兩個Servlet同時響應方式。那么我們就需要用到請求包含,把兩個Servlet的響應內容合并輸出。我們看具體使用示例:

/*** 請求包含** 它是把兩個Servlet的響應內容合并輸出。* 注意:* 這種包含是動態包含。** 動態包含的特點:* 各編譯各的,只是最后合并輸出。*/ public class RequestDemo8 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().write("I am request demo8 ");//1.拿到請求調度對象RequestDispatcher rd = request.getRequestDispatcher("/RequestDemo9");//2.實現包含的操作rd.include(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }public class RequestDemo9 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().write("include request demo 9 ");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

2.3.8 細節問題

請求轉發的注意事項:負責轉發的Servlet,轉發前后的響應正文丟失,由轉發目的地來響應瀏覽器。

請求包含的注意事項:被包含者的響應消息頭丟失。因為它被包含起來了。

總結

以上是生活随笔為你收集整理的RequestResponse的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

4438全国亚洲精品在线观看视频 | 不卡日韩av | 久久久精品成人 | 国产精品一区二区三区观看 | 国产看片免费 | a国产精品 | 久久久久北条麻妃免费看 | 嫩草av在线 | 久久精品国产精品亚洲 | 99九九热只有国产精品 | 日批在线观看 | 亚洲国产精品成人综合 | 午夜久久美女 | 亚洲成aⅴ人在线观看 | 久久五月激情 | 亚洲精品在线免费观看视频 | 欧美a级一区二区 | 婷婷激情站 | 亚洲成a人片在线观看网站口工 | 天天干天天搞天天射 | 精品a级片 | 国产又粗又猛又黄视频 | 五月天综合色 | 一级性视频 | 亚洲免费观看在线视频 | 久久大视频| 最近日本韩国中文字幕 | 亚洲精品视频在线免费播放 | 精品电影一区 | 成人a在线观看 | 日本色小说视频 | 99久久精品久久亚洲精品 | 日韩精品无 | 亚洲日本黄色 | 国产成a人亚洲精v品在线观看 | 中文字幕一区二区三区在线播放 | 韩日成人av | 91在线免费观看国产 | 五月花婷婷 | www.一区二区三区 | 在线观看国产亚洲 | 亚洲精品国产精品99久久 | 精品a视频 | av中文字幕在线看 | 日韩在线色视频 | 色综合天天色综合 | 亚洲精品网址在线观看 | 亚洲激精日韩激精欧美精品 | 久久99国产精品二区护士 | 久草视频在线播放 | 91精品久久久久久久久久久久久 | 国产精品久久久999 国产91九色视频 | 久久五月天综合 | 欧美综合久久久 | 天堂在线免费视频 | 开心激情五月婷婷 | 在线视频99 | 黄色av三级在线 | 91av官网 | 成人av电影在线观看 | 麻豆传媒视频在线 | 亚洲综合成人专区片 | 国产在线精品一区二区三区 | www.色综合.com| 在线观看理论 | 国产精品专区一 | 天天操天天操天天操天天操 | 美女网站在线播放 | 麻豆视频在线播放 | 久久久久夜色 | 91精品国产亚洲 | 色婷婷六月| 激情综合中文娱乐网 | 天天综合中文 | 成年人视频在线 | 久久国产精品精品国产色婷婷 | 亚洲国产视频在线 | 中文字幕资源网 | 久久久久久在线观看 | 亚洲国产经典视频 | 精品国产乱码一区二区三区在线 | 天堂av在线 | www黄com | 91精彩在线视频 | 成人午夜免费福利 | 久久永久免费 | 青青草在久久免费久久免费 | 97超碰免费| 久久这里只有精品23 | 亚洲精品裸体 | 美女视频免费精品 | 99精品在这里 | 日日干网址 | 久久久久国产精品免费免费搜索 | 国产在线视频一区二区三区 | 日韩精品一区二区三区丰满 | 国精产品999国精产品岳 | 国产人成看黄久久久久久久久 | 亚洲五月婷婷 | 91丨九色丨高潮 | 黄网站色欧美视频 | 精品国产一区二区三区四区在线观看 | 精品久久中文 | av网站免费线看精品 | 97人人添人澡人人爽超碰动图 | 国产精品二区在线观看 | 亚洲黄色一级大片 | 亚洲精品中文在线观看 | 欧美性极品xxxx娇小 | 五月色婷 | 日韩性片| 欧美日韩免费网站 | 久久精品2 | 国产美女网站在线观看 | 亚洲国产成人精品电影在线观看 | 99久久婷婷国产精品综合 | 久久免费99精品久久久久久 | 亚洲欧洲精品视频 | 精品视频99 | 亚洲一区天堂 | 国产第一二区 | 成人av电影在线播放 | 日韩av进入 | 久久久www成人免费精品张筱雨 | 青青看片 | 黄色成年 | 色综合久久中文综合久久牛 | 色综合www | 狠狠操狠狠插 | 成人在线视频你懂的 | 欧美日韩性生活 | 日日日操操 | 四虎成人精品永久免费av九九 | 伊人成人精品 | 91精品国产自产在线观看永久 | 91tv国产成人福利 | 成人黄色免费在线观看 | 不卡日韩av | 久久国产精品99国产精 | 日本动漫做毛片一区二区 | 国产一级视频免费看 | 国产视频一区二区在线播放 | 日日添夜夜添 | 国产亚洲精品综合一区91 | 黄色www在线观看 | 国产精品日韩久久久久 | 韩日三级在线 | 人人澡人摸人人添学生av | 欧美成人亚洲 | 九九国产视频 | 精品欧美小视频在线观看 | 色综合久久88 | 精品国产乱码久久久久 | 免费黄色av | 97超碰在线久草超碰在线观看 | 成人黄色影片在线 | 国产在线视频一区二区三区 | 最近日本中文字幕a | 久久久久久久久久电影 | 国产精品6999成人免费视频 | 免费观看黄色12片一级视频 | 精品免费久久久久久 | 激情丁香在线 | 亚洲午夜精品久久久久久久久 | 欧美成人免费在线 | 午夜精品久久久久久久久久久久久久 | 国产美女视频 | 高清在线一区二区 | 91av影视 | 91在线视频网址 | 操操操夜夜操 | 中文字幕网站视频在线 | 五月婷婷,六月丁香 | 亚洲国产精品成人女人久久 | 黄色av成人在线观看 | 久久久久一区二区三区四区 | 亚洲激情精品 | 97精品国产aⅴ | 亚洲 欧美 国产 va在线影院 | 天天操操 | 在线视频1卡二卡三卡 | 综合网婷婷 | 久久少妇av | 日韩久久精品 | 丁香婷婷社区 | 国产精品视频久久 | 国产视频在线播放 | 国产黄色理论片 | 日韩,中文字幕 | 中文字幕日韩有码 | 亚洲精品视频在线 | 欧美淫aaa免费观看 日韩激情免费视频 | 亚洲欧美视频在线观看 | 少妇视频在线播放 | 91大神免费视频 | 亚洲欧美视频网站 | 国产黄色片网站 | 日韩簧片在线观看 | 久久免费看 | 色偷偷网站视频 | 91麻豆精品国产91久久久久久 | 亚洲精品午夜国产va久久成人 | 日韩在线短视频 | 91九色在线视频观看 | 探花视频免费在线观看 | 色网站在线| 91成人精品观看 | 久久99国产视频 | 亚洲在线黄色 | 成人黄大片视频在线观看 | 国产精品久久久久久久久久久久久久 | 欧美aa级 | 欧美粗又大 | 午夜精品久久久久99热app | 国产麻豆视频 | 国产亚洲综合在线 | 91亚洲狠狠婷婷综合久久久 | 久久看片网 | 国产精品免费久久久 | 亚洲免费高清视频 | 免费观看国产精品 | 成人免费观看网站 | 精品久久久亚洲 | 啪啪肉肉污av国网站 | 在线视频91 | 视频在线观看入口黄最新永久免费国产 | 国产精品久久99综合免费观看尤物 | 国产精品久久久久久久午夜片 | 久久久久久久久久免费 | 99在线免费观看视频 | 一区二区三区影院 | 在线 欧美 日韩 | av先锋中文字幕 | 国产69久久| 国产精品99久久久精品 | 色狠狠婷婷 | 国产成人亚洲在线观看 | 日韩精品免费 | 久久精品91久久久久久再现 | 午夜精品久久久久久久99婷婷 | 日本特黄特色aaa大片免费 | 久久久亚洲网站 | 丁香av在线 | 婷婷国产v亚洲v欧美久久 | 97视频亚洲| 在线高清| 国产精品网在线观看 | 精品一区二区在线看 | 日韩国产精品毛片 | 亚洲国产精品va在线 | 欧美精品免费在线观看 | 久草视频观看 | 激情自拍av | 日韩视频中文字幕在线观看 | 在线观看免费高清视频大全追剧 | 国产成人一区二区三区免费看 | 国产高清在线a视频大全 | 亚洲一级特黄 | 日本中文字幕在线观看 | 97人人澡人人爽人人模亚洲 | 激情中文在线 | 在线看av网址 | 在线观看av中文字幕 | 久久成人免费电影 | 色综合久久久久 | 97免费| 伊人亚洲综合网 | 在线视频 影院 | 精精国产xxxx视频在线播放 | 色噜噜噜| 色视频 在线| 中文国产成人精品久久一 | 久久久国产精品网站 | 日韩理论在线播放 | 亚洲人成免费 | 成人免费 在线播放 | 天天综合网 天天 | 欧美午夜性生活 | 亚洲精品乱码白浆高清久久久久久 | 丁香五月亚洲综合在线 | 久久久官网 | 久久久久久久久久久久国产精品 | 特级毛片在线观看 | 免费91麻豆精品国产自产在线观看 | 久久99九九99精品 | 手机成人av | 在线视频99 | 在线观看第一页 | 日韩精品一区二区三区视频播放 | 精品久久久久久久久久久院品网 | 天天综合亚洲 | 欧美污污视频 | av福利第一导航 | 黄色国产精品 | 一级片免费在线 | 日日干精品 | 成人h动漫在线看 | 色综合中文综合网 | 天天综合网久久综合网 | 亚洲精品国产拍在线 | 久草精品在线 | 在线成人观看 | 婷婷丁香花五月天 | 99精品国产一区二区三区不卡 | 精品国产伦一区二区三区免费 | 日日夜夜中文字幕 | 国产尤物在线观看 | av五月婷婷 | 五月婷婷激情 | 成人av在线影院 | 日韩精品免费在线播放 | 亚洲欧美va| 一区二区三区播放 | a天堂一码二码专区 | av片在线看 | 天天干天天干天天干天天干天天干天天干 | 成人91av| 久久精品一二三区 | 97超级碰碰 | 中文字幕一区二区三区乱码不卡 | 99热这里只有精品久久 | 在线看黄色av | 天天草天天草 | 欧美一级xxxx | 美女免费视频观看网站 | 91久久影院 | 日本女人在线观看 | 麻豆传媒一区二区 | 久久久久久99精品 | 四虎成人网 | 超碰免费97 | av资源在线看 | 久热爱 | 久久视了| 欧美永久视频 | 欧美日韩三级 | 久一久久 | 免费在线观看国产精品 | 天天插天天爱 | 色资源网免费观看视频 | 久久久国产精品网站 | 中文字幕在线影院 | 美女免费视频一区 | 色婷婷精品 | 日本久久高清视频 | 玖玖在线视频观看 | 国产免费片| 中文字幕在线视频一区二区三区 | 在线观看va | 久久精品99国产精品亚洲最刺激 | 国产在线91在线电影 | 久久尤物电影视频在线观看 | www成人av| 日韩免费一区二区 | 狠狠狠狠狠狠干 | 天天操夜夜曰 | 亚洲国产激情 | 天天操夜夜操天天射 | 国产一卡在线 | 欧美在线观看视频 | 91自拍91 | 丁香免费视频 | 精品久久一区二区三区 | 69亚洲乱| 韩国av一区二区三区 | 在线精品一区二区 | 91视频麻豆| 91视频国产免费 | 激情开心色 | 欧美激情va永久在线播放 | 十八岁以下禁止观看的1000个网站 | 色老板在线视频 | 奇米影视8888在线观看大全免费 | 久久美女免费视频 | 国产黄色美女 | 国产一区二区三区高清播放 | 九九久久久 | 人人干人人添 | 五月天六月丁香 | 一级久久久 | 日日干,天天干 | 91视频专区 | 美女国产 | 亚洲最新毛片 | 狠狠网亚洲精品 | 成人免费视频观看 | 十八岁以下禁止观看的1000个网站 | 中文字幕超清在线免费 | 久黄色 | 亚洲国产中文字幕在线观看 | 97天堂| 在线一区观看 | 免费在线国产黄色 | 一区二区中文字幕在线 | 99精品久久99久久久久 | 亚洲精品黄 | 天天综合天天做天天综合 | 亚洲综合涩 | 在线播放91 | 精品久久久久_ | 一区二区三区中文字幕在线 | 欧美一区日韩一区 | 国产在线观看二区 | 国产精品一区二区三区久久久 | 91日韩在线专区 | 婷婷色网视频在线播放 | 涩涩网站在线观看 | 久久69精品 | 国产成人一区二区精品非洲 | 操操操综合 | 综合激情网... | 天天天综合网 | 欧美孕妇与黑人孕交 | 九九热免费观看 | 欧美午夜性 | 成人免费观看电影 | 九九综合九九综合 | 五月婷在线播放 | 99999精品| 黄色国产在线 | 四虎在线视频 | av片一区二区 | 99视频国产精品免费观看 | 人人干在线观看 | av免费在线看网站 | 在线看毛片网站 | 免费99| 久久综合九色综合97婷婷女人 | av在线精品| 亚洲精品大全 | 视频一区在线播放 | 亚洲精品一区二区三区高潮 | 国产福利在线免费观看 | www欧美日韩 | 人人讲| 亚洲欧美综合精品久久成人 | 99久久精品国产观看 | 久久免费视频在线观看 | 国产亚洲精品中文字幕 | 日韩精品在线免费播放 | 国产精品黄网站在线观看 | 日韩一区二区三区在线观看 | 婷婷综合久久 | 麻豆91精品视频 | 国产 日韩 在线 亚洲 字幕 中文 | 国产色影院 | 成人黄色大片在线免费观看 | 亚洲精品播放 | 狠狠狠色丁香婷婷综合久久88 | 中文国产在线观看 | 91视频三区| www黄| 一区二区三区四区五区六区 | 亚洲欧美国产精品 | 日韩一区二区三区在线看 | 久久九九免费视频 | 在线涩涩 | 国产亚洲人成网站在线观看 | 亚洲专区视频在线观看 | 欧美在一区 | 精品麻豆 | 国产中文字幕在线免费观看 | 少妇bbbb揉bbbb日本 | 久久久人人人 | 日韩精品字幕 | 精品久久久久久久 | 黄色www在线观看 | www欧美色 | 色婷婷狠狠18 | 黄色三级网站在线观看 | 国产一区在线观看免费 | 婷婷在线观看视频 | 中文字幕影片免费在线观看 | 国产精品久久久久久久久久免费看 | 国产成人精品福利 | 亚洲欧洲日韩 | 国产女人18毛片水真多18精品 | 国产亚洲人成网站在线观看 | 精品一二三四视频 | 国产一区二区在线免费视频 | 亚洲最大成人免费网站 | 日日干天天插 | 久久国产精品色av免费看 | 成人资源在线 | 日日操网站 | 91精品国产欧美一区二区成人 | 欧美日韩国产二区 | 国产午夜精品福利视频 | 日韩中文字幕一区 | 高清免费在线视频 | 久久精品视频在线观看免费 | 黄色软件在线观看免费 | 久久伦理| 黄色国产高清 | 久久九九久久九九 | 婷婷色在线 | 中文字幕色在线视频 | 国产精品日韩欧美 | 三级黄色网址 | 天天干天天操天天爱 | 在线免费观看视频一区 | 久久亚洲福利 | 精品视频免费看 | 黄色大片中国 | 成人动漫视频在线 | 久久久久久久免费看 | 美女网站视频久久 | 久久综合色综合88 | 国产精品久久久久久久久大全 | 天天操狠狠操 | 亚洲天天干 | 成人高清av在线 | 成人亚洲综合 | 在线视频精品 | 国产成人精品亚洲精品 | 2019中文字幕第一页 | 久久一区91| 综合久久久久久久久 | 免费观看一级特黄欧美大片 | 午夜av在线免费 | 黄色小网站免费看 | 91精品国产欧美一区二区 | 亚洲干 | 亚洲国产激情 | 国产精品免费视频网站 | 免费午夜视频在线观看 | 欧美福利片在线观看 | 日韩免费小视频 | 国产亚洲精品久久 | 二区三区在线观看 | 国产成人精品一区二区三区福利 | 欧美日韩精品综合 | 91视频免费视频 | 天天玩天天干天天操 | 精品在线播放视频 | 91一区啪爱嗯打偷拍欧美 | 精品国产一区二区三区在线观看 | 亚洲精品一区二区久 | 人人干人人做 | 日韩久久精品一区二区三区 | 欧美va电影 | 久久久在线免费观看 | 国产亚洲成av人片在线观看桃 | 欧美 日韩精品 | 久草在线视频首页 | 国产美女黄网站免费 | 久久女同性恋中文字幕 | 丁香资源影视免费观看 | 97成人免费 | 国产精品乱码久久久久久1区2区 | 中文国产成人精品久久一 | 超级碰碰免费视频 | 国产日韩在线观看一区 | 在线播放91 | 麻花豆传媒mv在线观看网站 | 欧美激情精品久久久 | 超碰在线国产 | 国产999精品久久久久久 | 日韩中文字幕国产 | 久久综合九色综合久99 | 国产护士av | 亚洲黄色av一区 | 精品在线观看免费 | 色综合久久综合 | 中文视频一区二区 | 又黄又爽的视频在线观看网站 | 国产麻豆精品一区二区 | 成人中文字幕+乱码+中文字幕 | 欧美另类xxx | 欧美日韩在线观看一区二区三区 | 久久高清毛片 | 久久99精品久久久久婷婷 | 成人在线播放av | 中文字幕韩在线第一页 | 国产精品乱看 | 国产黄色在线观看 | 日本99干网 | 黄色大全免费观看 | 在线播放亚洲激情 | 青青射| 久久综合狠狠狠色97 | 日韩欧美一区二区三区免费观看 | 99精品视频网 | 五月婷婷开心中文字幕 | 久久亚洲成人网 | 欧美一区成人 | 激情欧美一区二区免费视频 | 欧日韩在线视频 | 青青草国产免费 | 99热这里有| 又大又硬又黄又爽视频在线观看 | 一级成人免费 | 国产精品理论在线观看 | 成人一区影院 | 欧美日韩一二三四区 | 国产三级香港三韩国三级 | 99精品在线播放 | 久久亚洲国产精品 | 亚洲国产经典视频 | www视频在线免费观看 | 91九色国产视频 | 久久综合射 | 国产免费一区二区三区最新 | 天天色天天色天天色 | 美女视频黄频大全免费 | 日日夜夜人人精品 | 日韩精品视频在线观看免费 | 在线观看日本高清mv视频 | 国产亚洲精品久久久久久久久久 | 四虎在线观看精品视频 | 久久久久日本精品一区二区三区 | 91精品一区二区三区久久久久久 | 免费观看的av网站 | 国产a级片免费观看 | 99视频久久 | 毛片网站在线观看 | 韩日电影在线 | 黄色av网站在线观看 | 国内精品久久久久影院男同志 | 久久成人欧美 | 成人a视频 | 五月综合网 | 亚洲影院天堂 | 中文字幕欧美日韩va免费视频 | 国产在线视频在线观看 | www.亚洲精品在线 | 亚洲精品啊啊啊 | 婷婷丁香九月 | 日日爽 | 日日干日日 | 精品黄色在线观看 | 国产青青青 | 天天躁日日躁狠狠躁av麻豆 | 韩国精品视频在线观看 | 亚洲专区在线视频 | www.天天射.com| 黄色视屏免费在线观看 | 国产精华国产精品 | 国产黄色一级片在线 | 九九热精品国产 | 视频成人| 色综合天天爱 | 97超碰超碰久久福利超碰 | 国产在线日本 | 婷婷丁香在线 | 免费高清男女打扑克视频 | 美女一区网站 | 片黄色毛片黄色毛片 | 三级动态视频在线观看 | 综合网在线视频 | 久久国产精品免费一区二区三区 | 91黄色影视| 色多多视频在线观看 | 国产一区二区三区免费视频 | 亚洲免费观看在线视频 | 日本成人中文字幕在线观看 | 91av在线不卡 | 中文字幕综合在线 | 日韩精品中文字幕久久臀 | 午夜久久| 99在线播放| 深夜视频久久 | 超碰97公开 | a在线观看视频 | 91大神dom调教在线观看 | 中文字幕在线播放一区二区 | 麻豆av电影 | 亚洲精品一区中文字幕乱码 | 欧美国产精品久久久久久免费 | 美女网站视频免费都是黄 | 婷婷av色综合 | 91精品国产91久久久久 | 热久久影视 | 日韩在线观看第一页 | 天天操天天干天天爱 | 亚洲精品国产精品国自产在线 | 国产999精品久久久影片官网 | 成人欧美一区二区三区在线观看 | 日精品| 国产一级在线播放 | 97人人看| 在线看成人片 | 日韩激情一二三区 | 亚洲久久视频 | 日韩欧美精品一区二区三区经典 | 亚洲成人一二三 | 最新国产在线 | 精品国产一区二区三区日日嗨 | 国产玖玖在线 | 久久久久免费视频 | 麻豆91精品91久久久 | 精品欧美乱码久久久久久 | 91在线免费公开视频 | 一区二区不卡视频在线观看 | 最近中文字幕mv | 91丨九色丨国产女 | 亚洲japanese制服美女 | 日韩视频二区 | 深夜免费福利在线 | 欧美一级片在线播放 | 2022久久国产露脸精品国产 | 国产伦精品一区二区三区… | 97视频网址 | 在线中文字幕av观看 | 日韩大片在线免费观看 | 日韩国产欧美在线播放 | www黄com | 永久免费视频国产 | 欧美日韩一级在线 | 黄污污网站 | 天天操夜 | 91在线播放综合 | www.综合网.com | 亚洲激情在线播放 | 五月激情六月丁香 | 91精品办公室少妇高潮对白 | 99视频在线免费观看 | 在线观看国产成人av片 | 97精品超碰一区二区三区 | 福利二区视频 | 国产成人高清av | 性色av免费观看 | 能在线看的av| 色婷婷综合久久久久中文字幕1 | 久久久官网 | 激情大尺度视频 | 日韩欧美精品一区 | 在线看片一区 | 人人搞人人搞 | 一级黄色毛片 | 91亚州 | 久久99精品久久久久久三级 | 国产成人av片 | 在线观看中文字幕视频 | www.玖玖玖 | 国产永久免费高清在线观看视频 | 探花系列在线 | 国产精品99在线观看 | 大型av综合网站 | 丁香资源影视免费观看 | 亚洲久草在线 | 欧美91片 | 激情网婷婷 | 天天se天天cao天天干 | 成人亚洲精品国产www | 99热999| 天天干天天干天天操 | 99久久久久久久久久 | 日本久久久久久久久 | 日本公妇在线观看高清 | 99re8这里有精品热视频免费 | 国产黄色片免费 | 久久综合久久鬼 | 丁香婷五月 | 中文字幕欧美激情 | 午夜精品久久久久久久久久久久久久 | 亚洲精区二区三区四区麻豆 | 色94色欧美| 91探花在线视频 | 综合天堂av久久久久久久 | 久久ww| 亚洲闷骚少妇在线观看网站 | 欧美成人h版 | 中文字幕在线看片 | 国产精品一区二区久久国产 | 久久兔费看a级 | 免费看一及片 | 欧美性久久久 | 国产丝袜美腿在线 | 午夜久久福利视频 | 99久久精品电影 | 日本中文字幕系列 | 精品亚洲欧美无人区乱码 | 精品一二三区视频 | 久久精品导航 | 国产免费视频一区二区裸体 | 欧美成人区 | 97在线观看视频免费 | 中文字幕在线免费看 | 免费精品人在线二线三线 | 国产精品美乳一区二区免费 | 亚洲一级二级 | 久久精品国产亚洲精品2020 | 日日摸日日爽 | 国产精品久久久久9999吃药 | 四虎8848免费高清在线观看 | 天天射天天爽 | 中文字幕电影高清在线观看 | 天天色天天搞 | av成人在线看 | 在线va视频 | 国产毛片在线 | 欧美性春潮 | 91在线一区 | 久久久一本精品99久久精品66 | 国产亚洲情侣一区二区无 | 欧美视频一区二 | 女人18片毛片90分钟 | 国产一级性生活 | 亚洲精品婷婷 | 久久精品国产一区二区三区 | 黄色av影视 | 97超碰在线久草超碰在线观看 | 亚洲天堂网视频在线观看 | 91在线精品一区二区 | 欧美激情一区不卡 | 天天综合区 | 国产三级久久久 | 日韩欧美xxxx | 999久久久国产精品 高清av免费观看 | 亚洲网久久 | 91av中文字幕 | 日韩黄色免费看 | 色香蕉在线视频 | 91丨九色丨国产丨porny精品 | 91精品视屏 | 少妇超碰在线 | 在线一二三四区 | 国产99在线免费 | 成人黄色小说在线观看 | 99精品乱码国产在线观看 | zzijzzij亚洲成熟少妇 | 在线中文字母电影观看 | 久久精品草 | 久草在线免费看视频 | 亚洲精品福利在线观看 | 六月色| 97品白浆高清久久久久久 | 日韩一区二区三区在线观看 | 精品国内自产拍在线观看视频 | 日韩一区二区久久 | 成年人在线看片 | 日韩91av | 就要干b | 国产伦精品一区二区三区照片91 | 日韩免 | 808电影免费观看三年 | 激情影音先锋 | 97超碰人人爱 | 欧美日韩国产在线观看 | 国产精品视频999 | 日韩婷婷 | www.五月婷婷.com | 五月婷婷中文字幕 | 日韩精品第1页 | 在线观看免费视频 | 中文成人字幕 | 美女视频a美女大全免费下载蜜臀 | 超级碰碰视频 | 欧美日bb| 午夜婷婷在线观看 | 欧美激情视频三区 | 国产精品日韩在线播放 | 美女精品在线观看 | 黄色片软件网站 | 丁香五月亚洲综合在线 | 奇米影视777四色米奇影院 | 亚洲三级性片 | 久久国产精品成人免费浪潮 | 久久精品系列 | 亚洲国产精品第一区二区 | 国产免费人成xvideos视频 | 中国一级特黄毛片大片久久 | 手机看片1042| 片网站 | 成人午夜网址 | 免费看黄的 | avove黑丝| 成年人精品 | 国产在线播放一区二区三区 | 九色91在线 | 最新日韩视频在线观看 | 91看片网址 | 国产精品久久久久久久7电影 | 欧美日韩中文国产 | 日日激情| www.亚洲视频 | 久久精品国亚洲 | 国内精品久久久久 | av+在线播放在线播放 | 国产精品久久久久久久久久久久午 | 夜夜操夜夜干 | 探花国产在线 | 日本成人中文字幕在线观看 | 91精品国自产在线观看 | 欧美精品久久久久久久久久丰满 | 西西www4444大胆在线 | 亚洲精品午夜久久久久久久久久久 | 久久国产视频网 | 国产亚洲成av人片在线观看桃 | 国产成人在线观看免费 | 91专区在线观看 | 久久久噜噜噜久久久 | 91九色国产蝌蚪 | 国产精品一区二区在线免费观看 | 人人干人人模 | 亚洲高清激情 | 中文资源在线官网 | 视频一区二区精品 | 亚洲精品97| 黄色美女免费网站 | av东方在线| 黄色成人91 | 成人黄色资源 | 欧美日韩国产亚洲乱码字幕 | 亚洲日本欧美在线 | 9999在线| 欧美一二在线 | 免费h精品视频在线播放 | 天天干天天操天天做 | 婷色| 亚洲欧美日韩精品久久奇米一区 | 成人精品999 | av丝袜制服 | 97视频免费 | 亚洲精品国产精品国 | 97在线看 | 色噜噜在线观看视频 | zzijzzij日本成熟少妇 | 久青草国产在线 | 亚洲 欧美 国产 va在线影院 | 久久综合99 | 亚洲综合色视频在线观看 | 色综合久久中文综合久久牛 | 亚洲免费精品一区二区 | 欧美淫视频 | 欧美日韩国产网站 | 国产91影视| 在线a人片免费观看视频 | 色偷偷888欧美精品久久久 | 国产午夜精品久久 | 成人久久久精品国产乱码一区二区 | 一区二区丝袜 | 伊人久久精品久久亚洲一区 | 成人国产精品免费观看 | 国产日韩中文字幕在线 | 久久久国产成人 | www国产亚洲精品久久麻豆 | 久久成人视屏 | av在线免费网 | 激情视频亚洲 | 日韩欧美国产精品 | 国产高清不卡在线 | 免费色视频网站 | 人人狠狠综合久久亚洲婷 | 日韩在线观看小视频 | 黄污网| 五月激情婷婷丁香 | 国产色在线 | 色婷av| 一区二区 精品 | 精品99久久 | 4p变态网欧美系列 | 91精品国产自产在线观看永久 | 91视频免费视频 | 99国产精品视频免费观看一公开 | 日韩黄色影院 | 国产成人三级在线观看 | 久久精品视频日本 | 特黄特色特刺激视频免费播放 | 日本三级久久久 | 天天艹天天操 | 国产福利午夜 | 国产日韩在线一区 | 色干干 | 亚洲精品tv| 黄色视屏在线免费观看 | 伊人色综合久久天天网 | 色91av | 国产分类视频 | 五月婷丁香 | 黄色软件在线观看 | 国产最新网站 | 狠狠干激情 | 一本一本久久a久久精品综合小说 | 天天色天天操综合 | 欧美精品久久久 | 99色在线 | 精品国产视频在线观看 | 久久综合久久八八 | 欧美在线1| caobi视频| av大全在线 | 欧美激情精品久久久 | 欧美一级性生活视频 | 在线观看a视频 | 日韩av电影网站在线观看 | 免费在线观看日韩视频 | 最新av在线免费观看 | 黄色一级大片在线免费看国产一 | 色搞搞 | 在线看成人av | a v在线视频 | 波多野结衣在线视频免费观看 | 亚洲伦理中文字幕 | 91丨九色丨国产在线观看 | 丝袜制服天堂 | 特级毛片在线免费观看 |