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

手把手教你在Eclipse中配置開發(fā)Struts

開發(fā) 后端
本文根據(jù)實(shí)例詳細(xì)介紹了如果在Eclipse中配置并開發(fā)Struts。此前在網(wǎng)上也看到過不少此類文章,而且還是有不少網(wǎng)友問此類問題。所以想根據(jù)自己的實(shí)際經(jīng)驗(yàn),并結(jié)合例子寫一篇詳細(xì)的文章,一個(gè)是方便大家,再一個(gè)也是檢驗(yàn)一下自己的知識。

開發(fā)環(huán)境

JDK1_4_03
tomcat5.0.28
Eclipse3.1.2
MyEcilpse4.1
TomcatPlugin插件
更多Eclipse插件下載

需求

本文所要結(jié)合的Struts應(yīng)用實(shí)例為用戶登錄(logon),用戶登錄(logon)的需求為:

1  接收用戶名和密碼,跳轉(zhuǎn)到成功頁面,并提示“歡迎您登錄!”。
2  如果用戶名為空就提交表單,則提示“請輸入用戶名!”。
3  如果密碼為空就提交表單,則提示“請輸入密碼!”。
4  如果輸入非法用戶名,則提示“請輸入正確的用戶名!”。
5  通過模型組件,保存登錄信息。

登錄應(yīng)用實(shí)例的框架介紹

用戶登錄(logon)應(yīng)用由以下模塊組成:

1  模型(M):模型為一個(gè)JAVABEAN組件-SaveLogon,包含username(用戶名)和userpassword(密碼)兩個(gè)屬性,提供讀取和設(shè)置屬性的方法get/set,以及保存登錄信息的方法saveToDb()。saveToDb的任務(wù)是把登錄信息保存到持久化存儲系統(tǒng)(例如數(shù)據(jù)庫)。

2  視圖(V):視圖包括兩個(gè)JSP文件,以及一個(gè)ActionForm Bean-logonForm。JSP文件分別為:logon.jsp、success.jsp。logon.jsp負(fù)責(zé)接受用戶輸入的用戶名和密碼以及顯示出錯(cuò)信息,success.jsp負(fù)責(zé)顯示登錄成功信息。

3  控制器(C):控制器為Action類logonAction。對數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯驗(yàn)證、調(diào)用模型組件保存登錄信息、選擇視圖組件返回給用戶。

Struts的工作機(jī)制

用戶在視圖組件(logon.jsp)中輸入用戶名和密碼并提交HTML表單,Struts框架會(huì)先讀取WEB.XML中關(guān)于servlet的配置,然后自動(dòng)將表單數(shù)據(jù)封裝到ActionForm Bean中,在本例中是logonForm。logonForm會(huì)對提交的數(shù)據(jù)進(jìn)行數(shù)據(jù)合法性驗(yàn)證(例如最短長度、是否包含非法字符等)。如果ActionForm Bean驗(yàn)證未通過,則logonForm返回ActionErrors對象,Struts框架會(huì)把ActionErrors對象保存在request范圍內(nèi),并把請求轉(zhuǎn)發(fā)到視圖組件,并在視圖組件中通過﹤?xml:namespace prefix = html />標(biāo)簽,展示request范圍內(nèi)的ActionErrors對象所包含的錯(cuò)誤信息;如果通過ActionForm Bean驗(yàn)證,則logonForm返回的ActionErrors對象為NULL,Struts框架將表單數(shù)據(jù)提交到控制器組件logonAction,控制器對表單數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯驗(yàn)證,如果logonAction驗(yàn)證未通過,則創(chuàng)建包含錯(cuò)誤信息的ActionMessages對象,并通過saveErrors方法把ActionMessages對象保存到request范圍內(nèi),并把請求轉(zhuǎn)發(fā)到視圖組件,并在視圖組件中通過標(biāo)簽,展示request范圍內(nèi)的ActionErrors對象所包含的錯(cuò)誤信息;如果logonAction驗(yàn)證通過,則Struts框架訪問模型組件,然后Struts框架會(huì)返回ActionFoward對象,并根據(jù)Struts-config.xml文件的配置情況,決定將ActionFoward對象包含的轉(zhuǎn)發(fā)信息傳遞到那一個(gè)視圖組件。

部署Struts框架

Struts的工作機(jī)制大家都有了一定的了解了,現(xiàn)在介紹如何在Eclipse中部署Struts框架。

本文的環(huán)境前文已經(jīng)提到,Eclipse以及其插件MyEclipse和TomcatPlugin的安裝本文不介紹。

1    新建一個(gè)項(xiàng)目

1)  選擇Java >> Tomcat Project,下一步,如圖一

Tomcat Project
(圖一)

2)填寫項(xiàng)目名稱,如果不采用項(xiàng)目所在目錄的缺省值,請修改,點(diǎn)擊完成。如圖二

項(xiàng)目名稱
(圖二)

#p#

2    創(chuàng)建Struts框架

1)    右鍵選擇項(xiàng)目 >> 新建 >> 其他 >> MyEclipse >> Web-Struts >> Struts 1.2 >> Struts 1.2 Form,Action & JSP。如圖三。如果這一步出現(xiàn)錯(cuò)誤,本文不做描述,請參考我的另一邊文章-MyEclipse中創(chuàng)建Struts出現(xiàn)錯(cuò)誤的解決辦法。

新建Struts框架
(圖三)

2)    配置Struts ActionForm  

因?yàn)楸疚牡腟truts應(yīng)用實(shí)例為用戶登錄,所以Use case選用logon。Superclass選擇如圖所示,其他默認(rèn)。如圖四

配置Struts ActionForm
(圖四)

接下來填寫Optional Details,輸入Form表單項(xiàng),本例為用戶名(username)和密碼(userpassword)。點(diǎn)擊Add,輸入請參考圖五、圖六。

Form表單項(xiàng)
(圖五)

輸入用戶名
(圖六)

輸后完畢,Optional Details的Form Properties中會(huì)顯示。如圖七

Form Properties
(圖七)

Methods選項(xiàng)卡的設(shè)置我們采用默認(rèn)設(shè)置,不去修改。

點(diǎn)擊JSP選項(xiàng)卡,將“Create JSP form”選項(xiàng)的勾選中,采用默認(rèn)設(shè)置“/form/logon.jsp”。如圖八

Form Declaration
(圖八)

#p#

3)    配置Struts Action

以上步驟完成了對Form的配置,下面配置Action。

在圖八中點(diǎn)擊下一步,采用默認(rèn)即可。如圖九

Struts Action
(圖九)

Parameter和Methods選項(xiàng)也采用默認(rèn)。

點(diǎn)擊Forwards選項(xiàng)卡,點(diǎn)擊Add,配置成功頁面信息。本文選取根目錄的success.jsp作為成功頁面,Name為logon_sc。如圖十

配置成功
(圖十)

輸后完畢,Optional Details的Forwards中會(huì)顯示。如圖十一

Option Details
(圖十一)

點(diǎn)擊完成。

Struts已經(jīng)配置完畢??纯碋clipse中,項(xiàng)目中多了一些東東,例如struts相關(guān)的jar,以及struts-config.xml和tld文件。struts-config.xml的代碼如下:

#p#

代碼清單一(struts-config.xml)

﹤?xml version="1.0" encoding="UTF-8"?>
﹤!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "

﹤struts-config>

﹤data-sources />

﹤form-beans >

﹤!--這里是ActionForm的配置信息,ActionForm Bean的name為logonForm,對應(yīng)的類為com.mystruts.struts.form.LogonForm-->

﹤form-bean name="logonForm" type="com.mystruts.struts.form.LogonForm" />

﹤/form-beans>

﹤global-exceptions />

﹤global-forwards />

﹤action-mappings >

﹤!--這里是Action組件的配置信息,描述了從特定的請求路徑到響應(yīng)的Action的映射-->

﹤!--attribute設(shè)置Action關(guān)聯(lián)的ActionForm在request或者session范圍內(nèi)的key.就是在request或者session共享內(nèi)的名稱-->

﹤!--input指定包含表單的URL,當(dāng)表單驗(yàn)證失敗的時(shí)候發(fā)送的URL-->

﹤!--name指定和該Action關(guān)聯(lián)的Form名字.該名字必須是在form-bean中定義過的,可寫可不寫-->

﹤!--path指定請求訪問Action的路徑,必須以/開頭-->

﹤!--scope指定Form的存在范圍,例如request-->

﹤!--type指定Action組件對應(yīng)的類-->

﹤action

attribute="logonForm"

input="/form/logon.jsp"

name="logonForm"

path="/logon"

scope="request"

type="com.mystruts.struts.action.LogonAction">

﹤!--這里是forward,即局部轉(zhuǎn)發(fā)配置信息,登錄成功后轉(zhuǎn)向/success.jsp,name為logon_sc-->

﹤forward

name="logon_sc"

path="/success.jsp"

/>

﹤/action>

﹤/action-mappings>

﹤!--這里是消息資源文件的配置信息,用來配置Resource Bundle.用于存放本地文本消息文件。parameter指定文件名,不包含后綴名。-->

﹤message-resources parameter="com.mystruts.struts.ApplicationResources" />

﹤/struts-config>

創(chuàng)建消息資源文件

視圖組件將使用標(biāo)簽來輸出文本內(nèi)容,這些內(nèi)容來自于Resource Bundle。Resource Bundle對應(yīng)消息資源文件。

代碼清單二(ApplicationResources.properties)

# 這里是注釋
logon.page.title = 我的第一個(gè)Struts

logon.username.error = 請輸入用戶名!

logon.userpassword.error = 請輸入密碼!

logon.badusername.error = 用戶名不能為admin!

logon.baduserpassword.error = 密碼不能為123456!

logon.success = 歡迎您登錄!

為了實(shí)現(xiàn)國際化,消息資源文件中的漢字采用的是UTF-8編碼。查看如何實(shí)現(xiàn)漢字轉(zhuǎn)化為UTF-8。

創(chuàng)建JSP文件

logon.jsp(所在路徑為/form/)接收用戶輸入的用戶名和密碼,并顯示表單驗(yàn)證失敗的錯(cuò)誤信息。success.jsp顯示登錄成功的信息。

JSP文件全部使用客戶化標(biāo)簽,無JAVA代碼,輸入的文本內(nèi)容完全由標(biāo)簽提供。

代碼清單三(logon.jsp)

﹤%@ page contentType="text/html;charset=UTF-8" language="java"%>
﹤%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

﹤%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

﹤%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

 

﹤html>

﹤head>

﹤!--title使用客戶化標(biāo)簽,文本內(nèi)容對應(yīng)的是消息資源文件中l(wèi)ogon.page.title的值-->

﹤title>﹤bean:message key="logon.page.title"/>﹤/title>

﹤/head>

﹤body>

﹤html:form action="/logon" method="POST">

用戶名:﹤html:text property="username"/>﹤html:errors property="username"/>﹤br/>

密 碼:﹤html:password property="userpassword"/>﹤html:errors property="userpassword"/>﹤br/>

﹤html:submit value="登錄"/>﹤html:reset value="取消"/>

﹤/html:form>

﹤/body>

﹤/html> 

代碼清單四(success.jsp)

﹤%@ page language="java" pageEncoding="UTF-8"%>
﹤%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

﹤%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

﹤%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

﹤html:html lang="true">

﹤head>

﹤html:base />

﹤title>success.jsp﹤/title>

﹤/head>

 

﹤body>

﹤logic:present name="savelogon" scope="request">

﹤bean:write name="savelogon" property="username"/>

﹤bean:message key="logon.success"/>

﹤/logic:present>

﹤/body>

﹤/html:html>

 

創(chuàng)建ActionForm Bean組件logonFrom

用戶提交HTML表單后,Struts框架會(huì)自動(dòng)把表單數(shù)據(jù)封裝到ActionForm Bean(本例是logonForm)中。ActionForm Bean的屬性必須與HTML表單的字段一一對應(yīng)。ActionForm Bean會(huì)對表單數(shù)據(jù)進(jìn)行驗(yàn)證,并提供將HTML表單的字段值重置為默認(rèn)值的方法(等同于HTML中Form表單的Reset)。

代碼清單五(logonFrom.java)

package com.mystruts.struts.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
* MyEclipse Struts
* Creation date: 02-27-2006
*
* XDoclet definition:
* @struts.form name="logonForm"
*/
public class LogonForm extends ActionForm {

// --------------------------------------------------------- Instance Variables

/** userpassword property */
private String userpassword;

/** username property */
private String username;

// --------------------------------------------------------- Methods

/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
//用于表單驗(yàn)證的validate方法
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {


//聲明一個(gè)ActionErrors對象
ActionErrors errors = new ActionErrors();

//如果用戶名驗(yàn)證失敗,將ActionMessage對象保存到ActionErrors對象errors中。logon.username.error對應(yīng)消息資源文件中的logon.username.error的值。
if(username==null || username.length()<3){
errors.add("username", new ActionMessage("logon.username.error"));
}


//如果密碼驗(yàn)證失敗,將ActionMessage對象保存到ActionErrors對象errors中。logon.userpassword.error對應(yīng)消息資源文件中的logon.userpassword.error的值。
if(userpassword==null || userpassword.length()<3){
errors.add("userpassword", new ActionMessage("logon.userpassword.error"));
}
// TODO Auto-generated method stub

//返回ActionErrors對象errors,Struts框架會(huì)把errors保存在request范圍內(nèi),并將請求轉(zhuǎn)發(fā)到視圖組件logon.jsp中,通過來顯示錯(cuò)誤信息
return errors;
}

/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {

// TODO Auto-generated method stub
this.username = null;
this.userpassword = null;
}

/**
* Returns the userpassword.
* @return String
*/
public String getUserpassword() {
return userpassword;
}

/**
* Set the userpassword.
* @param userpassword The userpassword to set
*/
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}

/**
* Returns the username.
* @return String
*/
public String getUsername() {
return username;
}

/**
* Set the username.
* @param username The username to set
*/
public void setUsername(String username) {
this.username = username;
}

}

 

創(chuàng)建控制器Action組件logonAction

logonAction對表單數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯驗(yàn)證。

代碼清單六(logonAction.java)

package com.mystruts.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.mystruts.struts.SaveLogon;
import com.mystruts.struts.form.LogonForm;

/**
* MyEclipse Struts
* Creation date: 02-27-2006
*
* XDoclet definition:
* @struts.action path="/logon" name="logonForm" input="/form/logon.jsp" scope="request" validate="true"
* @struts.action-forward name="logon_sc" path="/success.jsp"
*/
public class LogonAction extends Action {

// --------------------------------------------------------- Instance Variables

// --------------------------------------------------------- Methods

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
//通過ActionForm Bean的驗(yàn)證后,Struts框架會(huì)自動(dòng)調(diào)用execute方法
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub

//獲得表單數(shù)據(jù)中的username
String username = (String)((LogonForm)form).getUsername();

//獲得表單數(shù)據(jù)中的userpassword
String userpassword = (String)((LogonForm)form).getUserpassword();

//定義非法用戶名
String badusername = "admin";

//定義非法密碼
String baduserpassword = "123456";


//聲明一個(gè)ActionMessages對象
ActionMessages errors = new ActionMessages();

if(badusername.equals(username)){

//如果用戶名驗(yàn)證失敗,將ActionMessage對象保存到ActionMessages對象errors中。logon.badusername.error對應(yīng)消息資源文件中的logon.badusername.error的值。
errors.add("username",new ActionMessage("logon.badusername.error",badusername));

//保存ActionMessages對象errors到request范圍。
saveErrors(request,errors);

//返回ActionForward對象,Struts框架會(huì)把請求轉(zhuǎn)發(fā)到視圖組件logon.jsp中,通過來顯示錯(cuò)誤信息。
return(new ActionForward(mapping.getInput()));
}

if(userpassword.equals(baduserpassword)){
errors.add("userpassword",new ActionMessage("logon.baduserpassword.error",baduserpassword));
saveErrors(request,errors);
return(new ActionForward(mapping.getInput()));
}


//定義模型組件SaveLogon
SaveLogon sl = new SaveLogon();
sl.setUsername(username);
sl.setUserpassword(userpassword);
sl.saveToDb();


//控制器組件將SavaLogon對象保存到request范圍,savalogon對應(yīng)視圖組件success.jsp中﹤?xml:namespace prefix = login />﹤login:present>標(biāo)簽的name以及﹤?xml:namespace prefix = bear />﹤bear:write>標(biāo)簽的name
request.setAttribute("savelogon",sl);

//清除request范圍內(nèi)的ActionForm Bean,因?yàn)楹竺娴恼埱笠呀?jīng)不需要了
request.removeAttribute(mapping.getAttribute());


//控制器組件將信息轉(zhuǎn)交到視圖組件logon.jsp,logon_sc對應(yīng)struts-config.xml中的forward元素的name
return(mapping.findForward("logon_sc"));
}

}

 

創(chuàng)建模型組件SaveLogon

本模型提供get/set方法,以及saveToDb方法。在例子中并未實(shí)現(xiàn)saveToDb方法。

代碼清單七(SaveLogon.java)

package com.mystruts.struts;

/**
* @author Administrator
*
*/
public class SaveLogon {

private String username = null;
private String userpassword = null;

public void setUsername(String username){
this.username = username;
}

public String getUsername(){
return this.username;
}

public void setUserpassword(String userpassword){
this.userpassword = userpassword;
}

public String getUserpassword(){
return this.userpassword;
}

public void saveToDb(){

}


}

#p#

運(yùn)行

如果用戶名和密碼為空,運(yùn)行結(jié)果如圖十二、圖十三、圖十四所示。


(圖十二)

如果用戶名為admin,運(yùn)行結(jié)果如圖十三


(圖十三)

如果通過驗(yàn)證,運(yùn)行結(jié)果如圖十四


(圖十四)

 

 

小結(jié)

1    為了降低偶合度,應(yīng)該建立一個(gè)存放常量的JAVA文件。例如logonAction.java中的String badusername = "admin",或者request.setAttribute("savelogon",sl)的第一個(gè)參數(shù)。

2    要實(shí)現(xiàn)Struts的國際化,支持多國語言,編碼方式一定要為UTF-8。

3    在配置Action時(shí),見圖九,如果選取redirect,則在struts-config.xml中的action元素會(huì)多一個(gè)屬性,redirect="true"。運(yùn)行的結(jié)果是success.jsp中無法獲得request范圍內(nèi)的savelogon對象。

您正在閱讀的是:手把手教你在Eclipse中配置開發(fā)Struts

【編輯推薦】

  1. 在Eclipse中安裝TomcatPlugin
  2. jsp開發(fā)所需要的eclipse插件及安裝 配置方法
  3. JDK安裝卸載與Eclipse的安裝配置
  4. Eclipse+MyEclipse安裝及環(huán)境配置
  5. Myeclipse6.0.1安裝及其配置
責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2021-02-26 11:54:38

MyBatis 插件接口

2021-08-02 07:35:19

Nacos配置中心namespace

2024-04-02 08:58:13

2024-03-05 18:27:43

2022-11-28 08:23:14

IDEAGradle配置

2021-07-14 09:00:00

JavaFX開發(fā)應(yīng)用

2011-05-03 15:59:00

黑盒打印機(jī)

2025-05-07 00:31:30

2011-01-10 14:41:26

2020-06-01 16:25:43

WindowsLinux命令

2022-06-30 08:13:44

PythonWeb編程語言

2011-02-22 17:42:26

2023-04-26 12:46:43

DockerSpringKubernetes

2022-01-08 20:04:20

攔截系統(tǒng)調(diào)用

2022-12-07 08:42:35

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2022-07-27 08:16:22

搜索引擎Lucene

2011-02-22 13:46:27

微軟SQL.NET

2021-12-28 08:38:26

Linux 中斷喚醒系統(tǒng)Linux 系統(tǒng)

2010-01-07 14:24:54

Linux防火墻
點(diǎn)贊
收藏

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

在线观看一区二区三区视频| 日韩av一级大片| 久草视频手机在线观看| 麻豆成人入口| 欧美午夜在线观看| 亚洲色婷婷久久精品av蜜桃| 婷婷五月综合激情| 美女脱光内衣内裤视频久久网站| 欧美精品在线免费观看| 毛茸茸多毛bbb毛多视频| 成人激情视屏| 亚洲成a人v欧美综合天堂| 日韩欧美激情一区二区| 亚洲av综合色区无码一二三区| 久久av在线| 久久6精品影院| 久久久久久久毛片| www.久久东京| 欧美乱熟臀69xxxxxx| 北条麻妃在线视频观看| a级网站在线播放| 久久一日本道色综合| 97免费高清电视剧观看| 波多野结衣一区二区三区在线| 综合久久一区| 色天天综合狠狠色| 黄色正能量网站| 9l视频自拍九色9l视频成人| 欧美日韩精品久久久| 男人日女人下面视频| 直接在线观看的三级网址| 国产人成亚洲第一网站在线播放 | 国产一区二区三区免费在线观看| 国产福利成人在线| www.日本精品| 影音先锋中文字幕一区| 欧美久久精品午夜青青大伊人 | 亚洲人成在线观看一区二区| 日本欧美精品久久久| 男人天堂手机在线观看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美日韩成人高清| 污片在线免费看| av高清一区| 色狠狠桃花综合| 国产在线观看福利| 国产高清中文字幕在线| 亚洲香蕉伊在人在线观| 台湾无码一区二区| 天天干在线视频论坛| 亚洲欧洲美洲综合色网| 一本一道久久久a久久久精品91| 国产免费av高清在线| 国产丝袜欧美中文另类| 热re99久久精品国99热蜜月| 免费一级在线观看播放网址| 91免费观看视频在线| 久久久久久久久一区| 日漫免费在线观看网站| 久久青草欧美一区二区三区| 免费看成人片| wwwww在线观看免费视频| 国产日本亚洲高清| 亚洲图片在线观看| 在线激情免费视频| 亚洲日本一区二区| 久久www视频| caoprom在线| 色综合色综合色综合色综合色综合| 夫妻免费无码v看片| 欧美福利在线播放| 欧美日韩国产综合一区二区三区 | 成人av动漫在线| 精品伦理一区二区三区| 欧美视频综合| 国产精品成人午夜| 免费看欧美黑人毛片| 亚洲欧美se| 欧美日韩一级片网站| 日韩欧美理论片| 午夜精品在线| 国产丝袜精品第一页| 少妇的滋味中文字幕bd| 影音先锋成人在线电影| 久久人人爽人人| 成人a v视频| 国产一区视频导航| 精品免费二区三区三区高中清不卡| 理论视频在线| 亚洲精品视频在线观看网站| 欧美视频在线观看网站| 成人免费一区| 亚洲福利在线看| 麻豆视频免费在线播放| 亚洲大胆在线| 国产精品极品美女粉嫩高清在线| 国产熟女一区二区三区五月婷| 99re热视频这里只精品| 一区二区三区偷拍| 欧美男男tv网站在线播放| 7777精品伊人久久久大香线蕉| 亚洲美女在线播放| 日韩伦理视频| 91av免费观看91av精品在线| 艳妇乳肉豪妇荡乳av| av成人免费在线观看| 亚洲制服中文| 日本乱码一区二区三区不卡| 欧美另类videos死尸| 日本丰满少妇裸体自慰| 欧美伊人久久| 国产精品久久久久秋霞鲁丝| 神马午夜一区二区| 亚洲欧美日韩系列| 国产wwwxx| 天堂俺去俺来也www久久婷婷| 久久精品99国产精品酒店日本| 亚洲免费在线观看av| 国产一区二区毛片| 亚洲人久久久| 欧美va视频| 日韩激情视频在线| 日韩激情一区二区三区| 国产麻豆9l精品三级站| 日韩精品久久久| 性孕妇free特大另类| 亚洲成人黄色在线观看| 日韩女优一区二区| 精品一区二区精品| 亚洲制服中文| 日本免费一区二区三区等视频| 亚洲区免费影片| 天天综合网入口| 国产精品一区二区免费不卡 | 亚洲特级毛片| 亚洲已满18点击进入在线看片| p色视频免费在线观看| 色香蕉久久蜜桃| 国产精品揄拍100视频| 日韩视频二区| 精品亚洲一区二区三区四区五区高| 免费在线看电影| 日韩欧美国产电影| 久久久久亚洲AV| 国产成人免费视频一区| 成人av在线播放观看| 91精品短视频| 国内精品国产三级国产在线专| 亚洲精品18在线观看| 亚洲综合在线视频| 国产chinese中国hdxxxx| 国产一区日韩一区| 国产日韩二区| 亚洲午夜天堂| 在线性视频日韩欧美| 中文天堂在线视频| 日韩美女视频19| 韩国三级在线播放| 在线观看一区| 欧美日韩三区四区| 国产成人免费精品| 久久夜精品香蕉| 亚洲国产欧美另类| 欧美日韩一区二区免费在线观看| 永久免费成人代码| 卡一卡二国产精品| 日韩精品一区二区三区四| 国产三级精品三级在线观看国产| 午夜精品久久久久久99热软件| 亚洲色大成网站www| 日本韩国欧美三级| 精品国产国产综合精品| 国产·精品毛片| aa在线观看视频| 精品久久影院| 51国偷自产一区二区三区| 成人影院在线播放| 亚洲欧美在线看| 国产精品毛片一区二区在线看舒淇| 亚洲精品ww久久久久久p站| 国产精品久久久久久久无码| 天堂午夜影视日韩欧美一区二区| 亚洲欧美丝袜| 大奶在线精品| 国产精品美女呻吟| 欧美精品videosex| 在线日韩精品视频| 亚洲国产av一区二区| 日本韩国精品在线| 国产女人被狂躁到高潮小说| 99re视频精品| 五月天六月丁香| 日韩影院免费视频| 黄色一级片黄色| 青青草国产成人a∨下载安卓| www 成人av com| 一区二区视频免费完整版观看| 欧美成人精品在线播放| 久草在线青青草| 精品精品欲导航| 中文字幕av影视| 婷婷六月综合网| 成人免费精品动漫网站| 久久久国产午夜精品| 日韩欧美中文视频| 日韩国产欧美视频| 亚洲理论电影在线观看| 日韩激情在线| 久久久久久久久久久久久久久久av| 麻豆国产精品| 国产精品亚洲精品| 亚洲伊人av| 97香蕉久久超级碰碰高清版| wwwav在线| 色悠悠久久久久| 日本国产在线| 亚洲精品大尺度| 成 人片 黄 色 大 片| 欧美日韩一级视频| 日韩中文字幕高清| 欧美视频二区36p| 天天操天天射天天爽| 亚洲私人影院在线观看| 99国产精品无码| 国产午夜精品久久久久久免费视| 91人妻一区二区| 国产精品一品二品| 天天操精品视频| 精品一区二区日韩| www.涩涩涩| 蜜臀av在线播放一区二区三区 | 精品欧美一区二区三区在线观看 | 欧洲精品一区二区三区久久| 欧美一区二区三区免费看| 爱爱爱视频网站| 91精品一区二区三区综合| 亚洲午夜在线观看| 欧美色图一区二区| 成人精品一区二区三区四区 | 国产精品99久久久久久久女警| xx欧美撒尿嘘撒尿xx| 久久九九精品| 国语对白做受xxxxx在线中国| 99国产一区| 波多野结衣之无限发射| 亚洲美女一区| 欧美变态另类刺激| 欧美一级久久| 性欧美极品xxxx欧美一区二区| 日韩精品一二三| 五月婷婷狠狠操| 久久99国产精品免费| theporn国产精品| 国产精品69毛片高清亚洲| 一级全黄裸体片| jvid福利写真一区二区三区| 国产高潮视频在线观看| 99视频在线精品| 国产中年熟女高潮大集合| 99国产精品国产精品毛片| 美女又爽又黄视频毛茸茸| 91免费小视频| 国产精品久久久久久久av| 中文字幕五月欧美| 麻豆一区产品精品蜜桃的特点| 尤物视频一区二区| 色网站在线播放| 色先锋资源久久综合| 亚洲视频在线观看免费视频| 91麻豆精品国产91久久久使用方法 | 717成人午夜免费福利电影| 精品美女www爽爽爽视频| 亚洲国产成人精品久久| 韩国福利在线| 久久影视免费观看 | 国产97人人超碰caoprom| yw.尤物在线精品视频| 成人精品久久一区二区三区| 亚洲一区二区三区中文字幕在线观看| 精品在线一区| 久久国产成人午夜av影院宅| 免费在线精品视频| 亚洲经典在线| 中文字幕永久视频| 国产成人自拍高清视频在线免费播放| 国产高清自拍视频| 国产精品国产三级国产普通话三级 | 欧洲精品久久一区二区| 亚洲欧美制服中文字幕| 18videosex性欧美麻豆| 51色欧美片视频在线观看| 成人在线观看免费视频| 国产精品制服诱惑| 九九亚洲视频| 欧美日韩视频免费| 青娱乐精品在线视频| 日韩无码精品一区二区| 国产精品美女久久久久aⅴ| 九九九国产视频| 欧美日韩成人在线| 欧美91精品久久久久国产性生爱| 久久中国妇女中文字幕| 国产日韩电影| 99超碰麻豆| 欧美亚洲在线日韩| 日韩中文在线字幕| 日韩成人一级大片| 在线免费观看a级片| 亚洲人成在线观看一区二区| 日韩黄色片网站| 亚洲第一天堂av| av毛片在线免费看| 国产精品尤物福利片在线观看| 久久夜色精品国产噜噜av小说| gogogo免费高清日本写真| 久久久久久黄| 伊人网综合视频| 亚洲最新视频在线观看| 91午夜交换视频| 中国china体内裑精亚洲片| caoporn视频在线| av免费观看久久| 伊人久久大香线| 制服丝袜中文字幕第一页| 国产日韩欧美a| 伦av综合一区| 日韩黄色av网站| 色多多在线观看| 国产精品一区二区三区在线观| 雨宫琴音一区二区三区| 亚洲这里只有精品| 欧美国产乱子伦| 波多野结衣网站| 伊人激情综合网| av有声小说一区二区三区| 欧美日韩最好看的视频| 99亚洲视频| a视频免费观看| 狠狠色狠色综合曰曰| 四虎免费在线观看| 68精品久久久久久欧美| 久久视频在线观看| 国产精品自拍片| 久久综合国产精品| 黄色片网站在线免费观看| 日韩高清不卡av| 亚洲综合电影| 日韩一区免费观看| 男女视频一区二区| 极品美妇后花庭翘臀娇吟小说| 正在播放亚洲一区| 美女日批视频在线观看| 俄罗斯精品一区二区| 亚洲区欧美区| 成人免费av片| 欧美日韩视频在线第一区 | 久久久久久久国产精品视频| 中文字幕久久精品一区二区| 日韩极品视频在线观看| jlzzjlzz亚洲日本少妇| 欧美一区二区激情视频| 伊人久久五月天| 欧美成a人片免费观看久久五月天| 一区二区91美女张开腿让人桶| 黄网站免费久久| 日本特黄特色aaa大片免费| 日韩精品高清在线观看| 性欧美freehd18| 潘金莲一级淫片aaaaa免费看| 国产成人亚洲综合a∨婷婷图片| 日韩欧美a级片| 国产亚洲精品91在线| av国产精品| 青青青青草视频| 26uuu色噜噜精品一区二区| 国产九色91回来了| 久久成人国产精品| 日韩高清三区| 在线观看免费污视频| 一区二区三区精密机械公司| 婷婷在线免费观看| 国产精品入口福利| 欧美久久成人| 久久久亚洲av波多野结衣| 在线成人免费视频| 国内激情视频在线观看| 亚洲一区高清| 97se亚洲国产综合自在线不卡| 国产精品sm调教免费专区| 欧美巨乳美女视频| 国产精品手机在线播放| 97人人模人人爽人人澡| 韩曰欧美视频免费观看| 老司机在线永久免费观看| 精品国产乱码久久久久久蜜柚| 日韩黄色一级片| 国产黄色片视频| 日韩中文字幕av| 亚洲黄页网站| 中文字幕在线视频一区二区|