精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何用 javaweb來寫在線聊天應(yīng)用

開發(fā) 后端
  寫這個玩意兒就是想練練手, 用戶需要登陸才能在線聊天,不要依賴數(shù)據(jù)庫, 不需要數(shù)據(jù)庫的操作, 所有的數(shù)據(jù)都是保存在內(nèi)存中, 如果服務(wù)器一旦重啟,數(shù)據(jù)就沒有了;

寫這個玩意兒就是想練練手, 用戶需要登陸才能在線聊天,不要依賴數(shù)據(jù)庫, 不需要數(shù)據(jù)庫的操作, 所有的數(shù)據(jù)都是保存在內(nèi)存中, 如果服務(wù)器一旦重啟,數(shù)據(jù)就沒有了;

登錄界面:

  

聊天界面:

  

左側(cè)是在線的用戶列表, 右側(cè)是聊天的內(nèi)容, 內(nèi)容的格式為 “作者 : 內(nèi)容”;

點擊button可以發(fā)布聊天信息;

使用的是spring搭建的框架,基于tomcat的服務(wù)器;

web.xml的配置如下:

 

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <web-app version="3.0"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  6.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
  7.   <display-name></display-name>     
  8.   <welcome-file-list> 
  9.     <welcome-file>index.htm</welcome-file> 
  10.   </welcome-file-list> 
  11.    
  12.   <servlet> 
  13.     <servlet-name>test</servlet-name> 
  14.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class
  15.     <load-on-startup>1</load-on-startup> 
  16.     </servlet> 
  17.  
  18.     <servlet-mapping> 
  19.     <servlet-name>test</servlet-name> 
  20.     <url-pattern>*.htm</url-pattern> 
  21.     </servlet-mapping> 
  22.  
  23.     <listener> 
  24.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class
  25.     </listener> 
  26.      
  27.     <filter> 
  28.         <filter-name>CharacterEncodingFilter</filter-name> 
  29.         <filter-class>com.nono.Filter.CharacterEncodingFilter</filter-class
  30.         <init-param> 
  31.             <param-name>encoding</param-name> 
  32.             <param-value>UTF-8</param-value> 
  33.         </init-param> 
  34.     </filter> 
  35.      
  36.     <filter>   
  37.         <filter-name>SecurityServlet</filter-name>   
  38.         <filter-class>com.nono.SecurityServlet</filter-class>   
  39.     </filter>   
  40.     <filter-mapping>   
  41.         <filter-name>SecurityServlet</filter-name>   
  42.         <url-pattern>*.htm</url-pattern>   
  43.     </filter-mapping> 
  44.      
  45.  
  46.     <!--  
  47.         使用Spring中的過濾器解決在請求和應(yīng)答中的中文亂碼問題  
  48.     <filter> 
  49.         <filter-name>characterEncodingFilter</filter-name> 
  50.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class
  51.         <init-param> 
  52.             <param-name>encoding</param-name> 
  53.             <param-value>utf-8</param-value> 
  54.         </init-param> 
  55.         <init-param> 
  56.                 強制轉(zhuǎn)換編碼(request和response均適用)  
  57.             <param-name>ForceEncoding</param-name> 
  58.             <param-value>true</param-value> 
  59.         </init-param> 
  60.     </filter> 
  61.     --> 
  62.     
  63.     <context-param> 
  64.         <param-name> 
  65.         contextConfigLocation 
  66.         </param-name> 
  67.         <param-value> 
  68.         /WEB-INF/test-servlet.xml 
  69.         </param-value> 
  70.     </context-param> 
  71. </web-app> 

 

conteConfigLocation的配置為:

 

  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
  4.  xmlns:context="http://www.springframework.org/schema/context" 
  5.  xmlns:aop="http://www.springframework.org/schema/aop" 
  6.  xmlns:tx="http://www.springframework.org/schema/tx" 
  7.  xmlns:mvc="http://www.springframework.org/schema/mvc" 
  8.  xmlns:task="http://www.springframework.org/schema/task" 
  9.  xsi:schemaLocation="http://www.springframework.org/schema/beans 
  10.       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  11.       http://www.springframework.org/schema/context 
  12.       http://www.springframework.org/schema/context/spring-context-3.0.xsd 
  13.       http://www.springframework.org/schema/tx 
  14.       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
  15.       http://www.springframework.org/schema/aop 
  16.       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
  17.       http://www.springframework.org/schema/mvc 
  18.       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
  19.       http://www.springframework.org/schema/task 
  20.       http://www.springframework.org/schema/task/spring-task-3.0.xsd"> 
  21.      
  22.  
  23.     <context:annotation-config> </context:annotation-config> 
  24.     <context:component-scan base-package="com.nono" > </context:component-scan> 
  25.      
  26.     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
  27.         <property name="suffix"
  28.             <value>.jsp</value> 
  29.         </property> 
  30.     </bean> 
  31. </beans> 

整個項目的結(jié)構(gòu)為一個主路由, 四個po層,  兩個過濾器:

  

 

界面的用戶列表和用戶內(nèi)容列表用了ajax刷新, 感覺不錯的說:

 

  1. <!-- 
  2.     修改pageEncoding為 utf-8 
  3.  --> 
  4. <%@ page language="java" import="java.util.*"  pageEncoding="utf-8"%> 
  5. <% 
  6. String path = request.getContextPath(); 
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"
  8. %> 
  9.  
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  11. <html> 
  12.   <head> 
  13.     <base href="<%=basePath%>"
  14.      
  15.     <title>login</title> 
  16.     <meta charset="utf-8"
  17.     <link href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"
  18.     <script src="http://cdn.bootcss.com/jquery/1.9.0/jquery.js"></script> 
  19.   </head> 
  20.   <style> 
  21.       html,body,.bg{ 
  22.           height:100%; 
  23.       } 
  24.       .bg{ 
  25.           background:url(imgs/bg.jpeg); 
  26.       } 
  27.   </style> 
  28.   <body> 
  29.         <div class="container-fuild bg"
  30.             <div class="row"
  31.                 <div class="col-sm-4"
  32.                     <div class="page-header"
  33.                         <h2> 
  34.                             list 
  35.                         </h2> 
  36.                         <ol id="list"
  37.                             <li>name—</li> 
  38.                             <li>name—</li> 
  39.                             <li>name—</li> 
  40.                             <li>name—</li> 
  41.                         </ol> 
  42.                     </div> 
  43.                 </div> 
  44.                 <div class="col-sm-8"
  45.                         <h2> 
  46.                             content 
  47.                         </h2> 
  48.                     <div id="con" class="page-header"
  49.                       <p> 
  50.                           <b>haha:</b> 
  51.                           <big> 
  52.                               say someting 
  53.                           </big> 
  54.                       </p> 
  55.                       <p> 
  56.                           <b>haha:</b> 
  57.                           <big> 
  58.                               say someting 
  59.                           </big> 
  60.                       </p> 
  61.                     </div> 
  62.                     <form> 
  63.                       <div class="form-group"
  64.                         <label for="text">enter text</label> 
  65.                         <input type="text" id="answer" class="form-control" id="text" placeholder="text"
  66.                       </div> 
  67.                       <button type="button" id="sb" class="btn btn-default">Submit</button> 
  68.                     </form> 
  69.                 </div> 
  70.             </div> 
  71.         </div> 
  72.         <script> 
  73.             $("#sb").click(function() { 
  74.                 $.post("chat.htm""content="+ $("#answer").val(), function(data) { 
  75.                     console.log(data); 
  76.                 }); 
  77.             }); 
  78.              
  79.             function Get(url , el, fn) { 
  80.                 this.post = function() { 
  81.                     $.post(url, function(data) { 
  82.                         data = JSON.parse(data); 
  83.                         var html = ""
  84.                         $.each(data,function(i, e) { 
  85.                             html += fn(i,e); 
  86.                         }); 
  87.                         $(el).html( html ); 
  88.                     }); 
  89.                 }; 
  90.             }; 
  91.              
  92.             (function() { 
  93.              
  94.                 var list = new Get("getList.htm""#list", function(i, e) { 
  95.                     return  "<li>" + e.name + "</li>"
  96.                 }); 
  97.                  
  98.                 var content =  new Get("getContent.htm""#con", function(i, e) { 
  99.                     return "<p><b>"+ e.name +" : </b><big>"+ e.content +"</big></p>"
  100.                 }); 
  101.                  
  102.                 setInterval(function() { 
  103.                     list.post(); 
  104.                     content.post(); 
  105.                 },1000); 
  106.                  
  107.             })(); 
  108.         </script> 
  109.   </body> 
  110. </html> 

 

權(quán)限控制的話我們可以用到fileter:

 

  1. package com.nono; 
  2.  
  3. import java.io.IOException; 
  4. import javax.servlet.Filter; 
  5. import javax.servlet.FilterChain; 
  6. import javax.servlet.FilterConfig; 
  7. import javax.servlet.ServletException; 
  8. import javax.servlet.ServletRequest; 
  9. import javax.servlet.ServletResponse; 
  10. import javax.servlet.http.HttpServlet; 
  11. import javax.servlet.http.HttpServletRequest; 
  12. import javax.servlet.http.HttpServletResponse; 
  13. import javax.servlet.http.HttpSession; 
  14.  
  15. import com.nono.po.User; 
  16.  
  17. public class SecurityServlet extends HttpServlet implements Filter { 
  18.     private static final long serialVersionUID = 1L; 
  19.  
  20.     public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { 
  21.            HttpServletRequest request=(HttpServletRequest)arg0;    
  22.            HttpServletResponse response  =(HttpServletResponse) arg1;     
  23.            HttpSession session = request.getSession(); 
  24.            User user = (User) session.getAttribute("user"); 
  25.            String url=request.getRequestURI();    
  26.            //如果用戶信息不是空的, 或者要訪問的是登陸的界面(get,post的方式包含了login字符串); 
  27.            if( user!=null  || url.indexOf("login")>-1 ) { 
  28.                arg2.doFilter(arg0, arg1);    
  29.                return
  30.            }else
  31.                //余下的全跳到登陸界面 
  32.                response.sendRedirect(request.getContextPath() + "/login.htm"); 
  33.                return
  34.            } 
  35.     } 
  36.     public void init(FilterConfig arg0) throws ServletException { 
  37.     } 
  38.  

 

 路由控制和服務(wù)放到了一起, 因為權(quán)限控制使用過濾器處理, 所以在路由里面我們就不用關(guān)心用戶的消息, 只要處理業(yè)務(wù)邏輯就好了:

 

  1. package com.nono.Controller; 
  2.  
  3. import java.util.ArrayList; 
  4. import java.util.HashMap; 
  5. import java.util.Vector; 
  6.  
  7. import javax.jms.Session; 
  8. import javax.print.DocFlavor.STRING; 
  9. import javax.print.attribute.HashAttributeSet; 
  10. import javax.servlet.http.HttpServletRequest; 
  11. import javax.servlet.http.HttpServletResponse; 
  12. import javax.servlet.http.HttpSession; 
  13.  
  14. import net.sf.json.JSONArray; 
  15.  
  16. import org.omg.CORBA.PUBLIC_MEMBER; 
  17. import org.springframework.beans.factory.annotation.Autowired; 
  18. import org.springframework.stereotype.Controller; 
  19. import org.springframework.web.bind.annotation.RequestMapping; 
  20. import org.springframework.web.bind.annotation.RequestMethod; 
  21. import org.springframework.web.bind.annotation.ResponseBody; 
  22.  
  23. import com.nono.po.Content; 
  24. import com.nono.po.Contents; 
  25. import com.nono.po.User; 
  26. import com.nono.po.Users; 
  27.  
  28. @Controller 
  29. public class MainController { 
  30.     //用戶和用戶組; 
  31.     @Autowired 
  32.     Users users; 
  33.      
  34.     @Autowired 
  35.     Contents contents; 
  36.      
  37.     @RequestMapping(value="login", method=RequestMethod.GET) 
  38.     public String login (HttpServletRequest request) { 
  39.         return "login"
  40.     } 
  41.  
  42.      
  43.     @RequestMapping(value="login", method=RequestMethod.POST) 
  44.     public String loginPOST ( HttpServletRequest request, HttpServletResponse response ) { 
  45.          
  46.         String string = "login"
  47.         String name = (String) request.getParameter("name"); 
  48.         Boolean flag = true
  49.         //如果名字不是空的話; 
  50.         if( !name.equals("") ) { 
  51.             Vector vector = users.getList(); 
  52.             for(int i=0; i< vector.size(); i++) { 
  53.                 User user = (User) vector.elementAt(i); 
  54.                 if( user.getName().equals( name ) ) { 
  55.                     flag = false
  56.                 }; 
  57.             }; 
  58.         }; 
  59.          
  60.         //用戶名不存在 
  61.         if( flag ) { 
  62.             User user = new User(); 
  63.             user.setName( name ); 
  64.             HttpSession session = request.getSession(true); 
  65.             //設(shè)置Session的過期時間為10分鐘 
  66.             session.setMaxInactiveInterval(600); 
  67.             //設(shè)置seesion中的用戶信息; 
  68.             session.setAttribute("user", user); 
  69.             //添加用戶; 
  70.             users.addUser( user ); 
  71.              
  72.             //加入的提示; 
  73.             Content content = new Content(); 
  74.             content.setName( name ); 
  75.             content.setContent( "enter the chat room!" ); 
  76.             contents.addContent( content  ); 
  77.              
  78.             string = "chat"
  79.             return string; 
  80.         }else
  81.             //用戶名已經(jīng)存在 
  82.             request.setAttribute("info""用戶名已經(jīng)存在1"); 
  83.             string = "login"
  84.             return string; 
  85.         } 
  86.     } 
  87.      
  88.     @RequestMapping(value="chat", method=RequestMethod.GET) 
  89.     public String main (HttpServletRequest request) { 
  90.         String string = "chat"
  91.         return string; 
  92.     } 
  93.      
  94.     @RequestMapping(value="chat", method=RequestMethod.POST) 
  95.     @ResponseBody 
  96.     public String chat(HttpServletRequest request) { 
  97.         String string = (String) request.getParameter("content"); 
  98.         HttpSession session = request.getSession(); 
  99.         //設(shè)置seesion中的用戶信息; 
  100.         User user = (User) session.getAttribute("user"); 
  101.         String name = user.getName(); 
  102.         Content content = new Content(); 
  103.         content.setName( name ); 
  104.         content.setContent( string ); 
  105.         contents.addContent( content  ); 
  106.         return "true"
  107.     } 
  108.      
  109.     @RequestMapping(value="getList", method=RequestMethod.POST, produces = "text/html;charset=UTF-8"
  110.     @ResponseBody 
  111.     public String getList( HttpServletRequest request) { 
  112.         return JSONArray.fromObject( users.getList() ).toString(); 
  113.     } 
  114.      
  115.     @RequestMapping(value="getContent", method=RequestMethod.POST, produces = "text/html;charset=UTF-8"
  116.     @ResponseBody 
  117.     public String getArrayList() { 
  118.         ArrayList list = (ArrayList) contents.getContents(); 
  119.         ArrayList result = new ArrayList(); 
  120.         forint i= 0; i< list.size(); i++ ) { 
  121.             HashMap<String,String> hashMap = new HashMap(); 
  122.             hashMap.put("name", ((Content)list.get(i)).getName()); 
  123.             hashMap.put("content", ((Content)list.get(i)).getContent()); 
  124.             result.add( hashMap ); 
  125.         }; 
  126.         return JSONArray.fromObject( result ).toString(); 
  127.     } 
  128.      

 

有哪位大神告訴我為什么中文各種亂碼, 在界面中的utf-8也設(shè)置, @ResponseBody的也設(shè)置了, 還是亂碼, encodeURIComponent過的也是亂碼, 坑爹啊;

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2021-11-16 14:25:38

JavaScript前端

2016-09-22 21:12:14

2016-09-14 21:17:47

PythonAsyncio游戲

2013-02-22 09:28:45

MEAP軟件移動應(yīng)用開發(fā)HTML5

2011-09-28 11:22:52

Hadoop

2016-09-19 21:24:08

PythonAsyncio游戲

2013-06-07 09:57:21

iPaaSSaaS集成iPaaS解決方案

2012-05-21 10:19:31

Hadoop

2019-06-04 08:00:00

機器人聊天機器人人工智能

2011-12-31 14:24:13

2025-03-31 09:30:52

2014-06-10 15:07:19

Oracle數(shù)據(jù)庫優(yōu)化

2014-06-04 13:19:29

C++ndk安卓開發(fā)

2023-04-13 21:59:44

ChatGPT聊天機器人

2009-06-15 10:21:07

基于JBossMBean

2020-01-09 09:43:12

Signal聊天應(yīng)用開源

2025-05-09 08:34:57

RSocketSpringBoot聊天系統(tǒng)

2023-12-21 08:00:00

ChatGPT人工智能大型語言模型

2017-06-07 23:15:30

應(yīng)用程序熱補丁代碼

2017-06-07 23:33:01

應(yīng)用程序熱補丁代碼
點贊
收藏

51CTO技術(shù)棧公眾號

三级欧美在线一区| 日韩精品免费一区二区夜夜嗨| 成人欧美一区二区三区在线播放| 91在线|亚洲| 国产无码精品在线播放| 国产一区二区在线| 日韩欧美一级在线播放| 999香蕉视频| 在线观看电影av| 久久嫩草精品久久久精品一| 国产日韩在线一区| 久久草视频在线| 日韩欧美精品| 日韩电影大片中文字幕| 91亚洲一区二区| 在线观看精品| 亚洲国产精品久久不卡毛片 | 欧美综合视频在线| 热久久久久久久| 97在线看福利| 久久久久久久久97| 91日韩免费| 亚洲片在线资源| 国产一级免费片| 成人综合日日夜夜| 欧美在线视频你懂得| av免费观看国产| av在线免费网站| 国产精品私人影院| 精品亚洲一区二区三区四区五区高| 一级黄在线观看| 日韩精品久久理论片| 91国语精品自产拍在线观看性色 | 成人免费网址| 中文字幕免费不卡| 麻豆精品传媒视频| 天天干视频在线观看| 国产精品系列在线播放| 成人福利网站在线观看| 无码人妻精品一区二区蜜桃色欲| 99热免费精品| 亚州国产精品久久久| 九九热这里有精品视频| 亚洲第一偷拍| 久久影院资源网| 亚洲精品卡一卡二| 999久久久国产精品| 中文字幕免费精品一区| 亚洲av熟女国产一区二区性色 | 亚洲女人天堂色在线7777| 女同性αv亚洲女同志| 国产成人久久精品一区二区三区| 欧美日韩一区二区不卡| 九一精品在线观看| 2019年精品视频自拍| 欧美午夜电影在线播放| 日韩一区二区三区不卡视频| 成人毛片免费| 欧美日韩性生活| 亚洲视频第二页| 亚洲成人a级片| 欧美一级在线视频| 免费黄色av网址| 欧美电影完整版在线观看| 亚洲福利视频专区| 无遮挡aaaaa大片免费看| 日韩大胆成人| 国产亚洲xxx| 992在线观看| 一区二区影院| 欧美日韩国产成人在线| 国产精品suv一区二区| 99国产精品私拍| 国产大片精品免费永久看nba| 欧美激情一区二区三区免费观看 | 国产欧美中文字幕| 国产特级aaaaaa大片| 国产精品一区二区黑丝| 国产99在线播放| 亚洲色图欧美视频| 国产人妖乱国产精品人妖| 午夜老司机精品| 黄色在线免费网站| 亚洲风情在线资源站| 人妻少妇被粗大爽9797pw| 九九热这里有精品| 日韩午夜激情av| 日本一区二区三区网站| 精品理论电影| 欧美激情啊啊啊| 中文人妻av久久人妻18| 国产资源精品在线观看| 精品国产一区二区三区免费| shkd中文字幕久久在线观看| 一区二区三区四区在线免费观看| 日韩中文字幕三区| 成人综合日日夜夜| 日韩精品在线观| 亚洲伦理一区二区三区| 亚洲综合日韩| 亚洲永久免费观看| 久久久久久久影视| 一区二区三区四区不卡视频| 可以在线看的黄色网址| 视频精品一区二区三区| 一本色道久久综合亚洲精品小说| 欧美交换国产一区内射| 老色鬼久久亚洲一区二区| 亚洲在线免费看| 日韩二区三区| 一区二区三区加勒比av| 国产性生交xxxxx免费| 亚洲精品午夜| 日韩视频中文字幕| 中文字幕国产在线观看| 国产suv精品一区二区三区| 亚洲国产精品一区在线观看不卡| av手机免费在线观看| 欧美日韩国产片| 公肉吊粗大爽色翁浪妇视频| 亚洲经典在线看| 91观看网站| 91福利在线视频| 色综合久久综合| av电影在线播放| 88国产精品视频一区二区三区| 欧美综合一区第一页| 超碰在线观看av| 亚洲三级在线免费观看| 91n.com在线观看| 小嫩嫩12欧美| 97精品国产91久久久久久| 国产人妻精品一区二区三区| 中文字幕国产一区二区| 国产精品免费成人| 亚洲福利天堂| 欧洲成人在线观看| 五月婷婷狠狠干| 五月天中文字幕一区二区| 能看毛片的网站| 亚洲色图欧美| 成人午夜一级二级三级| 国产激情视频在线观看| 欧美日韩视频在线一区二区| 免费观看a级片| 日韩精品欧美成人高清一区二区| 欧美一区二区三区成人久久片 | 欧美性xxxx极品hd满灌| 欧产日产国产精品98| 亚洲婷婷在线| 国产精品一级久久久| caoprom在线| 亚洲国产精品大全| 男人的天堂一区二区| 97久久精品人人做人人爽| 国产九色porny| 精品一区二区男人吃奶| 69av在线视频| 国产黄在线播放| 精品视频1区2区| 人人澡人人澡人人看| 国产精品18久久久久| 97超碰国产精品| 欧美三级自拍| 国产精欧美一区二区三区| 高清性色生活片在线观看| 欧美日韩在线观看一区二区 | 91精品视频观看| 99视频免费在线观看| 日韩欧美久久久| 国产在线观看免费av| 久久综合成人精品亚洲另类欧美 | 农村妇女一区二区| 久久躁日日躁aaaaxxxx| 亚洲AV无码精品色毛片浪潮| 亚洲va韩国va欧美va| 国产精品福利在线观看网址| 中文字幕亚洲影院| 在线电影一区二区| 精品免费二区三区三区高中清不卡| 色在线中文字幕| 久久精品国产电影| 免费a级片在线观看| 日韩欧美在线视频日韩欧美在线视频| 亚洲午夜久久久久久久国产| 国产一区二区三区av电影| 免费一级特黄特色毛片久久看| 九九亚洲视频| 91精品视频大全| 欧美aa一级| 久久久久999| 神马久久精品| 3751色影院一区二区三区| 国产精久久久久久| 国产精品素人视频| 欧美夫妇交换xxx| 麻豆91在线观看| 日本在线xxx| 97偷自拍亚洲综合二区| 久久精品aaaaaa毛片| 日韩一级特黄| 5566成人精品视频免费| 国产高清一区二区三区视频| 国产视频精品免费播放| a级片免费观看| 在线观看视频一区二区欧美日韩| www青青草原| 国产精品私人影院| 好吊一区二区三区视频| 国内精品久久久久影院一蜜桃| 国产h视频在线播放| 亚洲国产老妈| 亚洲人成网站在线播放2019| 日韩深夜影院| 9a蜜桃久久久久久免费| 91精品亚洲一区在线观看| 欧美综合一区第一页| 国产精品69xx| 日韩午夜在线视频| 国产精品99999| 日韩精品在线私人| 韩国av免费在线观看| 777xxx欧美| 中文字幕 亚洲视频| 精品国产福利在线| 久久久久久久久久久久久久免费看| 欧美国产日韩在线观看| 最新中文字幕视频| 99精品视频一区二区三区| 99999精品| 狠狠色丁香婷综合久久| 国产精品视频中文字幕| 人人狠狠综合久久亚洲| 精品久久久久av| 国产精品毛片| 国产精品网站免费| 最新日韩三级| av在线一区二区| 狠狠热免费视频| 日韩高清一区二区| 久草综合在线观看| 石原莉奈在线亚洲三区| av观看免费在线| 国产精品毛片在线看| 久久网站免费视频| 国产精品入口| 男人日女人bb视频| 久久久久中文| 91淫黄看大片| 青青草精品视频| 日本激情视频在线播放| 久久精品国产网站| 成人黄色一级大片| 国产精品一区二区三区乱码 | 国产激情精品久久久第一区二区| 思思久久精品视频| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲精品国产一区二区三区| 国内久久精品视频| 成年人看片网站| 99视频精品全部免费在线| 国产精品无码网站| 久久久久久综合| 国产123在线| 亚洲人成人一区二区在线观看| 青草影院在线观看| 亚洲国产精品久久久男人的天堂| 国产手机在线视频| 在线观看视频一区| 91国在线视频| 精品黑人一区二区三区久久| 十八禁一区二区三区| 亚洲人成电影在线观看天堂色| xxxxx日韩| 欧美成在线视频| 黄色污网站在线观看| 国产精品男女猛烈高潮激情| 97精品资源在线观看| 国产精品二区在线| 国产99亚洲| 99精品一级欧美片免费播放| 亚洲精品黄色| 午夜免费福利在线| 国产成人av一区二区三区在线观看| 国产精品久久AV无码| 国产精品美日韩| 福利一区二区三区四区| 在线精品视频一区二区| 国产三级伦理片| 国产视频精品va久久久久久| 黄色网页在线免费看| 欧美亚州一区二区三区| 91麻豆精品国产综合久久久 | av黄在线观看| 日本欧美一二三区| 人人爱人人干婷婷丁香亚洲| 久久久久久久有限公司| 日韩免费一区| www.中文字幕在线| 国产曰批免费观看久久久| www.久久国产| 一区二区三区在线不卡| 在线观看中文字幕码| 亚洲精品一线二线三线| 色影院视频在线| 欧美最猛性xxxxx亚洲精品| 欧美日韩黄网站| 色一情一乱一伦一区二区三区丨| 亚洲小说区图片区| 中文字幕 欧美日韩| 国产三级久久久| 男人的天堂一区| 欧美变态凌虐bdsm| 久草免费在线| 国产精品男女猛烈高潮激情| 免费观看不卡av| 无码专区aaaaaa免费视频| 国产福利一区在线| 国产wwwwxxxx| 在线观看精品一区| 久香视频在线观看| 97在线视频一区| 国产欧美自拍一区| 国内自拍中文字幕| 激情综合一区二区三区| 精品无码在线观看| 一道本成人在线| 亚洲三级中文字幕| 5278欧美一区二区三区| 99国产精品久久一区二区三区| 国产精品无码乱伦| 精品中文av资源站在线观看| 91精品久久久久久久久久久久| 日韩欧美在线免费观看| 日本ー区在线视频| 日本不卡高字幕在线2019| 久久草在线视频| 黄页网站大全在线观看| 成人午夜免费av| 精品无码人妻一区二区三区品| 日韩欧美中文字幕制服| 在线播放蜜桃麻豆| 99超碰麻豆| 亚洲黄色大片| 精品人妻一区二区三区日产乱码卜| 亚洲一二三区不卡| 亚洲黄色精品视频| 国内精品视频久久| 伦理一区二区三区| 欧美 日韩精品| 国产视频一区在线播放| 狠狠狠狠狠狠狠| 色悠悠国产精品| 91精品网站在线观看| 老司机午夜免费福利视频| 国产白丝精品91爽爽久久| 日韩美女视频网站| 亚洲摸下面视频| 精品久久毛片| 国产一区一区三区| 国产盗摄精品一区二区三区在线| 久久精品这里只有精品| 亚洲国产婷婷香蕉久久久久久| 亚洲天堂电影| 午夜精品区一区二区三| 国产麻豆精品一区二区| 久久久夜色精品| 日韩成人中文电影| 成人在线中文| 欧美 日韩 国产精品| 99久久精品国产一区二区三区| 精品人妻一区二区三区潮喷在线 | 欧美大香线蕉线伊人久久国产精品| 男人的天堂亚洲| 国精产品久拍自产在线网站| 日韩欧美一级二级| 深夜在线视频| 亚洲欧美一区二区原创| 国产精品亚洲第一区在线暖暖韩国| 一级片免费网址| 日韩在线观看网址| 成人av激情人伦小说| 97公开免费视频| 亚洲欧美日韩系列| 午夜福利一区二区三区| 国产精品黄视频| 国语自产精品视频在线看8查询8| 少妇按摩一区二区三区| 91精品国产丝袜白色高跟鞋| 97人人爽人人澡人人精品| 精品欧美一区二区精品少妇| 成人免费无遮挡无码黄漫视频| 欧美午夜精品理论片a级按摩| www.在线视频| 久久艳妇乳肉豪妇荡乳av| 久久精品国产精品青草| 亚洲一区欧美在线| 久久手机精品视频| 一区二区三区日本久久久| 国产九九九视频|