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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Struts 2常见应用

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

學習內容

?Struts 2國際化

?Struts 2的異常處理

?Struts 2的文件上傳與下載

能力目標

?熟練使用Struts 2實現國際化

?能通過Struts 2的異常處理增強WEB應用的健壯性

?使用Struts2實現文件上傳與下載

?

?


本章簡介

本章主要介紹Struts 2的常見應用,主要包括Struts 2國際化、Struts 2異常處理和文件上傳與下載。Internet把全世界聯系在了一起,WEB應用可以通過瀏覽器被全世界的人們所使用,所以開發人員需要考慮WEB應用系統在不同地區和語言環境中的使用情況,使WEB

應用系統能在不同的地區和語言環境中以當地的語言進行顯示,這個過程就稱之為國際化。

任何成熟的MVC類框架都應該提供成熟完善的異常處理機制,Struts 2采用了一種聲明式的異常處理機制,從而避免了在程序中編寫大量的try-catch塊,使異常處理和業務代碼不再耦合。

文件的上傳與下載也是WEB應用常見的功能,例如上傳圖片,本章最后會學習使用Struts 2實現文件的上傳與下載。

核心技能部分

9.1?sStruts 2國際化

國際化主要是指語言的國際化,目的是使應用程序能提供一個語言自適應、顯示更友好的用戶界面,掃除語言障礙,使不同地區和使用不同語言的用戶都能方便的使用我們開發的WEB應用系統。Struts 2國際化建立在Java國際化的基礎上,只是對Java國際化進行了進一步的優化和封裝,從而簡化了國際化的實現過程。

9.1.1?Struts 2國際化機制

Struts 2實現國際化的過程需要三個步驟:

(1)?創建中英文資源文件。

(2)?在struts.xml文件中配置資源文件。

(3)?在JSP頁面中使用<s:text />標簽或OGNL顯示國際化信息。

示例9.1

下面我們以添加學生為例來演示Struts 2實現國際化的詳細過程。

(1)?在工程的src根目錄下創建兩個國際化資源文件,分別是英文的資源文件:ApplicationResources_en.properties和中文的資源文件:ApplicationResources_zh.properties,參考代碼如下所示。

文件名:ApplicationResources_en.properties

addstu.title=\u6DFB\u52A0\u5B66\u751F

addstu.name=\u5B66\u751F\u59D3\u540D

addstu.birthday=\u5B66\u751F\u751F\u65E5

addstu.height=\u5B66\u751F\u8EAB\u9AD8

addstu.weight=\u5B66\u751F\u4F53\u91CD

addstu.btn=\u6DFB\u52A0

addstu.exception=\u4E0D\u597D\u610F\u601D\uFF0C\u7A0B\u5E8F\u6682\u65F6\u 51FA\u73B0\u5F02\u5E38\u3002

addstu.en=\u82F1\u6587

addstu.zh=\u4E2D\u6587

文件名:ApplicationResources_zh.properties

addstu.title=add a new Student

addstu.name=student'name

addstu.birthday=student'birthday

addstu.height=student'height

addstu.weight=student'weight

addstu.btn=Add

addstu.exception=Sorry,Program temporarily appear unusual.

addstu.zh=Chinese

addstu.en=EngLish

和Struts 1一樣,國際化資源文件是以properties為擴展名的文本文件,該文本文件以key=value的形式存儲了國際化消息資源。國際化資源文件的命名規則是resourceName_language.properties。其中,resourceName是自定義的資源文件基本名,language是不能自定義的,Java中規定了不同的字符代表不同的國家和地區的語言,zh表示簡體中文,en表示英語。

中文的資源文件因為包含了非西歐字符,所以必須把這個文件通過native2ascii命令進行轉碼,轉碼之后的中文資源文件才能使用,語法如下所示:

語法

native2ascii -encoding UTF-8 原中文資源文件名轉碼后的資源文件名

高版本的MyEclipse會自動對中文資源文件轉碼,因此可以直接編輯。

(2)?在struts.xml文件中配置資源文件,參考代碼如下所示。

<struts>

<constant name="struts.custom.i18n.resources" value="ApplicationResources" />

<package name="student" extends="struts-default">

<action name="add" class="com.zy.StudentAction"></action>

<action name="changeLang" class="com.zy.LanguageAction">

<result name="success">/addStu.jsp</result>

</action>

</package>

</struts>

在struts.xml文件中通過<constant>元素把國際化資源文件的名字告知Struts 2框架,其中name屬性的值必須是"struts.custom.i18n.resources",value屬性的值就是項目中國際化資源文件的名字,注意只寫基本名即可。

(3)?在JSP頁面中顯示國際化信息,參考代碼如下所示。

<%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title><s:text name="addstu.title"/></title>

</head>

<body>

<center>

<a href="changeLang.action?request_locale=zh_CN">

<s:text name="addstu.zh"/></a>?

<a href="changeLang.action?request_locale=en">

<s:text name="addstu.en"/></a>

</center>

<s:form action="add.action" method="post">

<table>

<tr><td><s:text name="addstu.name"/></td>

<td><s:textfield name="name" /></td></tr>

<tr><td><s:text name="addstu.birthday"/></td>

<td><s:textfield name="birthday" /></td></tr>

<tr><td><s:text name="addstu.height"/></td>

<td><s:textfield name="height" /></td></tr>

<tr><td><s:text name="addstu.weight"/></td>

<td><s:textfield name="weight" /></td></tr>

<tr><td colspan="2">

<s:submit value="%{getText('addstu.btn')}"/>

</td></tr>

</table>

</s:form>

</body>

</html>

在JSP頁面中顯示國際化信息的方式有兩種:

??如果是頁面上單獨的文本,可以使用<s:text/>標簽讀取國際化信息,name屬性的值是資

源文件中的key。

??如果是標簽中的某個屬性值,例如上述代碼中的提交按鈕,這時可以使用%{getText(' key ')}讀取國際化信息,其中key指的就是資源文件中的key。

運行該JSP頁面,效果如圖9.1.1和9.1.2所示。

?

圖9.1.1 中文界面

?

圖9.1.2 英文界面

問了方便用戶自由選擇語言,我們在頁面上放置了兩個超鏈接,單擊【英文】超鏈接后就顯示英文界面,單擊【Chinese】超鏈接后就顯示中文界面,這兩個超鏈接的代碼如下所示。

<a href="changeLang.action?request_locale=zh_CN">

<s:text name="addstu.zh"/></a>

<a href="changeLang.action?request_locale=en">

<s:text name="addstu.en"/></a>

在上述代碼中,超鏈接請求了changeLang.action并傳遞了參數“request_locale”,那么changeLang.action對應的Action類是如何實現中英文界面切換的呢?我們看下面該Action類的代碼。

public class LanguageAction extends ActionSupport {

public String execute()

{

return SUCCESS;

}

}

我們發現該Action類沒有做任何處理,為什么能夠實現中英文界面切換呢?事實上,這個功能是由Struts 2內置的名字是“i18n”的攔截器實現的,該攔截器被添加到了默認的攔截器棧中(defaultStack),具體實現過程如下:

??當客戶端請求發送到服務器端后,Struts 2的i18n攔截器會對客戶端請求進行攔截并獲得參數request_locale的值(zh或cn),該值存儲了客戶端瀏覽器的地區語言環境,獲得該值后i18n攔截器將它實例化成一個Locale對象并存儲在用戶session中一個名字為WW_TRANS_I18N_LOCALE的屬性中,該屬性的值將會作為瀏覽器默認的Locale。

??在獲得了客戶端地區語言環境后,Struts 2會查找struts.xml配置文件來加載國際化資源文件。

??加載好國際化資源文件后,Struts 2的視圖文件會通過Struts 2標簽把國際化消息顯示出來。

9.1.2?校驗配置文件的國際化

上一章我們學習了使用Struts 2內置校驗器進行輸入校驗,這時需要提供一個校驗配置文件,例如下面是登錄案例的校驗配置文件。

<validators>

<field name="name">

<field-validator type="requiredstring">

<message>登錄不能為空!</message>

</field-validator>

</field>

<field name="pwd">

<field-validator type="requiredstring">

<message>登錄密碼不能為空!</message>

</field-validator>

<field-validator type="stringlength">

<param name="minLength">6</param>

<message>密碼長度必須大于等于${minLength}</message>

</field-validator>

</field>

</validators>

在校驗配置文件中可以通過<message>元素設置提示信息,但是如果現在需要對這些提示信息進行國際化處理該怎么辦呢?

示例9.2

假如現在我們要添加學生,要求學生姓名非空,學生身高必須在120cm和220cm之間,考慮到國際化,校驗配置文件可以這樣寫:

<validators>

<field name="name">

<field-validator type="requiredstring">

<message key="addStu.validate.name"/>

</field-validator>

</field>

<field name="height">

<field-validator type="int">

<param name="min">120</param>

<param name="max">220</param>

<message ?key="addStu.validate.height"/>

</field-validator>

</field>

</validators>

<message>元素不再直接設置提示信息了,而是通過key屬性從國際化資源文件中取出信息,key屬性的值就是國際化資源文件中的key。下面是本示例中的資源文件:

中文資源文件:

addstu.title=\u6DFB\u52A0\u5B66\u751F

addstu.name=\u5B66\u751F\u59D3\u540D

addstu.birthday=\u5B66\u751F\u751F\u65E5

addstu.height=\u5B66\u751F\u8EAB\u9AD8

addstu.weight=\u5B66\u751F\u4F53\u91CD

addstu.btn=\u6DFB\u52A0

addstu.exception=\u4E0D\u597D51FA\u73B0\u5F02\u5E38\u3002

addstu.en=\u82F1\u6587

addstu.zh=\u4E2D\u6587

addstu.validate.name=\u5B66\u759D3\u540D\u5FC5\u987B\u586B\u5199\uFF01

addStu.validate.height=\u5B66\u751F\u8E5\u987B\u5728${min}\u548C${max}

英文資源文件:

addstu.title=add a new Student

addstu.name=student'name

addstu.birthday=student'birthday

addstu.height=student'height

addstu.weight=student'weight

addstu.btn=Add

addstu.exception=Sorry,Program temporarily appear unusual.

addstu.zh=Chinese

addstu.en=EngLish

addstu.validate.name=student name is required

addStu.validate.height=student height is must between ${min} and ${max}

其他文件的代碼不變,運行效果如圖9.1.3和圖9.1.4所示。

?

圖9.1.3 中文提示信息

?

圖9.1.4 英文提示信息

9.2?Struts 2異常處理

異常是程序運行時不可避免的情況,所以我們在進行程序開發時必須對異常進行處理。傳統的異常處理方式就是使用try-catch語句,這種處理機制采用的是硬編碼的方式,需要編寫很多重復的代碼,并且不利于維護。而Struts 2作為成熟的MVC框架提供了完善的異常處理機制,采用的是聲明式的異常處理方式,這種方式便于管理和維護。

9.2.1?Struts 2異常處理機制

客戶端發送一個請求后,Struts 2框架會把這個請求交給Action進行處理,在Action進行業務處理的過程中,如果出現異常了,Struts 2中名字為exception的攔截器就會自動攔截該異常并進行處理,然后再轉到相應的視圖頁面反饋給用戶。由于Struts 2把異常交給了exception攔截器進行處理,所以我們無須在Action中編寫try-catch語句塊,只需要在struts.xml中對Action進行異常配置就行了。

struts.xml文件通過使用<exception-mapping />元素來進行異常映射配置,在使用該元素時需要指定兩個屬性:

??exception屬性:該屬性用來指定異常的類型。

??result屬性:該屬性值是一個url地址,用來指定出現異常時Struts 2跳轉到哪個視圖。

根據異常映射起作用的范圍可以把異常映射配置分為全局異常映射和局部異常映射。

??全局異常映射:這種映射使用<global-exception-mapping />元素進行配置,在該元素中嵌套<exception-mapping />作為子元素,這種映射的作用范圍是package中的所有Action。

??局部異常映射:這種映射直接在Action內部使用<exception-mapping />元素配置就行了,當然它的作用范圍為它所在的Action。

這兩種異常映射的優先級不同,如果對一個Action既配置了全局映射又配置了局部映射,那么Struts 2會采用“就進原則”,即使用局部映射進行異常處理。

9.2.2?異常處理示例

示例9.3

下面通過一個示例來具體介紹Struts 2如何進行異常處理。在程序中如果出現除數為0的情況就會出現java.lang.ArithmeticException異常,這個大家都非常熟悉了。本示例就模擬除數為0的情況,如圖9.1.5所示。

?

圖9.1.5 運行效果

JSP頁面的參考代碼如下所示。

<body>

<h3><center>除法計算</center></h3>

<center>

<s:form action="jisuan.action" method="post" theme="simple">

<s:textfield name="a" cssStyle="width:60"></s:textfield>

除以

<s:textfield name="b" cssStyle="width:60"></s:textfield>

等于

<s:textfield name="c" cssStyle="width:60"></s:textfield>

<s:submit value="計算"/>

</s:form></center>

</body>

Action的代碼如下所示。

public class jisuanAction ?extends ActionSupport{

private int a; ???//被除數

private int b; ??//除數

private int c; ??//結果

//省略getter和setter方法

public String jisuan()

{

this.c=this.a/this.b;

return SUCCESS;

}

}

異常提示頁面error.jsp的代碼如下所示。

<body>

<center><h2>出現除0異常</h2></center>

</body>

重點是下面的配置文件,代碼如下所示。

<package name="struts2_math" extends="struts-default">

<global-results>

<result name="error">/error.jsp</result>

</global-results>

<global-exception-mappings>

<exception-mapping result="error"

?exception="java.lang.ArithmeticException">

</exception-mapping>

</global-exception-mappings>

<action name="jisuan" class="com.zy.jisuanAction" method="jisuan">

</action>

</package>

我們在配置文件的<global-exception-mappings>元素中配置了一個異常映射用來處理除0異常,如果有除0異常發生就跳轉到error.jsp頁面,如圖9.1.6所示。

?

圖9.1.6 異常提示

9.3?Struts 2文件上傳

文件上傳是WEB應用中經常遇到的問題,Struts 2默認使用Jakarta的Common-FileUpload文件上傳框架,并對其進行了優化和封裝。在實際應用中,需要把commons-io-xxx.jar和commons-fileupload-xxx.jar(xxx是版本號)導入到WEB項目中。我們通過MyEclipse 添加Struts支持時會默認導入這兩個Jar文件,如圖9.1.7所示。

?

圖9.1.7 導入Jar

9.3.1?單文件上傳

示例9.4

文件上傳中最簡單的是上傳一個文件,下面我們通過一個示例介紹如何使用Struts 2實現單文件上傳。

(1)?創建表單提供上傳文件的操作入口,代碼如下所示。

<body>

<s:form action="up.action" method="post" enctype="multipart/form-data">

<s:file name="upload" label="請選擇上傳文件"/>

<s:submit value="上傳"/>

</s:form>

</body>

需要注意:<s:form>標簽必須指定enctype屬性并且該屬性的值必須是“multipart/form-data”,這表示表單的數據不再以字符串的形式提交,而是以二進制編碼的形式來提交數據。

(2)?創建實現在服務器端接收上傳文件并保存到指定位置功能的Action,代碼如下所示。

public class MyUpAction extends ActionSupport{

??private File upload; ??//對應表單中文件域的名字

??private String uploadContentType; ???//文件類型

??private String uploadFileName; ??????//文件名字

//省略getter和setter方法

??public String execute() throws Exception

??{

//獲取服務器上保存文件的路徑和上傳文件的名字,本示例的路徑是/upfile

??????String fileName=ServletActionContext.getServletContext().

getRealPath("/upfile")+"\\"+getUploadFileName();

//文件輸出流

??????FileOutputStream fos=new FileOutputStream(fileName);

//文件上傳流

??????FileInputStream fis=new FileInputStream(getUpload()); ?

//下面的代碼把上傳到服務器的文件保存(寫入)到指定文件夾中

??????byte[] b=new byte[1024];

??????int len=0;

//通過循環把文件二進制數據寫入到服務器

??????while((len=fis.read(b))>0)

??????{

????????fos.write(b,0,len);

??????}

??????return this.SUCCESS;

??}

}

該Action與普通Action的差別不大,upload屬性封裝了表單中的文件域;uploadContentType封裝上傳文件的類型;uploadFileName封裝上傳文件的名字。以上三個屬性是必須的并且Struts 2會從文件域中解析出來自動賦值給Action。一般情況下,如果表單中包含一個name屬性為xxx的文件域,那么就需要在Action中使用如下的三個屬性來封裝文件域信息:

private File xxx:封裝文件域對應的文件內容。

?private String xxxFileName:封裝上傳文件的文件名。

?private String xxxContentType:封裝上傳文件的文件類型。

通過封裝上述三個屬性之后就可以在execute方法中實現文件上傳功能了。在execute方法中主要通過文件輸入輸出流實現文件的上傳。

(3)?上傳成功后跳轉到另外一個頁面顯示文件的名字,如果是圖片就把圖片顯示到頁面上,參考代碼如下所示。

<body>

<h3>文件上傳成功</h3>

<s:property value="uploadFileName"/><br>

<img src="upfile/<s:property value="uploadFileName"/>"/>

</body>

(4)?在struts.xml文件中進行配置,參考代碼如下所示。

<package name="upfile" extends="struts-default">

<action name="up" class="com.zy.MyUpAction">

<interceptor-ref name="fileUpload">

<param name="allowedExtensions">.bmp,.gif,.jpg</param>

<param name="maximumSize">1000000</param>

</interceptor-ref>

<interceptor-ref name="defaultStack"/>

<result name="success" type="dispatcher">/up_success.jsp</result>

<result name="input" >/up_success.jsp</result>

</action>

</package>

為了對上傳文件的類型和大小進行限制,我們為Action配置了名字是“fileUpload”的攔截器,該攔截器由Struts 2框架提供,專門用來限制上傳文件的類型和大小。在使用的時候需要指定兩個參數:

??allowedExtensions:該參數用來限制文件類型,需要給出擴展名,多個擴展名之間用逗

號隔開。

??maximumSize:該參數用來限制文件大小,單位是字節。

如果上傳文件失敗了,Struts 2會自動轉入到input結果視圖,所以必須為Action配置input結果視圖。另外,我們必須配置defaultStack默認攔截器棧,并且必須放在fileUpload攔截器的后面。

Struts 2默認情況下最大只能上傳2M的文件,超過2M的話maximumSize參數也不起作用,會直接出現異常。為了解決這個問題,我們可以在struts.xml文件中配置struts.multipart.maxSize常量,參考代碼如下所示。

<constant name="struts.multipart.maxSize" value="1000000000"/>

我們上傳一張圖片,運行效果如圖9.1.8和10.1.9所示。

?

圖9.1.8 上傳圖片

?

圖9.1.9 上傳成功

?

9.3.2?多文件上傳

示例9.5

在WEB應用中,一次上傳多個文件也是很常見的情況,這時我們只需在上述實現單文件上傳的代碼的基礎上稍作修改即可,與單文件上傳的本質是一樣的。

(1)?修改表單,增加幾個文件域,參考代碼如下所示。

<body>

<s:form action="up_m.action" method="post" enctype="multipart/form-data">

請選擇您要上傳的文件:<br>

<s:file name="upload" label="圖片1"/>

<s:file name="upload" label="圖片2"/>

<s:file name="upload" label="圖片3"/>

<s:submit value="上傳" />

</s:form>

</body>

多個文件域的name屬性值保持一致。

(2)?修改實現上傳的Action,參考代碼如下所示。

public class MyUpAction_m extends ActionSupport {

//由于是多文件上傳,所以下面三個屬性都改成了數組

??private File[] upload;

??private String[] uploadContentType;

??private String[] uploadFileName;

//省略getter和setter方法

??public String execute() throws Exception

??{

??????File[] files=getUpload();

//由于是多文件上傳,所以在源代碼的基礎上增加了for循環

??????for(int i=0;i<files.length;i++)

??????{

????????String fileName=ServletActionContext.getServletContext().

getRealPath("/upfile")+"\\"+getUploadFileName()[i];

????????FileOutputStream fos=new FileOutputStream(fileName);

????????FileInputStream fis=new FileInputStream(files[i]); ?????

????????byte[] b=new byte[1024];

????????int len=0;

????????while((len=fis.read(b))>0)

????????{

??????????fos.write(b,0,len);

????????}

??????}

??????return this.SUCCESS;

??}

}

(3)?修改上傳成功后的頁面,參考代碼如下所示。

<s:iterator value="uploadFileName" id="name">

<s:property value="name"/>

<img src="upfile/<s:property value="name"/>"/>

</s:iterator>

由于要顯示多個文件,所以這里使用了<s:iterator>迭代器來進行循環顯示。

struts.xml無需修改,運行效果如圖9.1.10和圖9.1.11所示。

?

圖9.1.10 多文件上傳

?

圖9.1.11上傳成功


本章總結

??國際化主要是指語言的國際化,目的是使應用程序能提供一個語言自適應、顯示更友好的用戶界面,掃除語言障礙,使不同地區和使用不同語言的用戶都能方便的使用我們開發的WEB應用系統。

(1)創建中英文資源文件。

(2)在struts.xml文件中配置資源文件。

(3)在JSP頁面中使用<s:text />標簽或OGNL顯示國際化信息。

??Struts 2作為成熟的MVC框架提供了完善的異常處理機制,采用的是聲明式的異常處理方式,這種方式便于管理和維護,struts.xml文件通過使用<exception-mapping />元素來進行異常映射配置。

(1)exception屬性:該屬性用來指定異常的類型。

(2)result屬性:該屬性值是一個url地址,用來指定出現異常時Struts 2跳轉到哪個視圖。

(3)全局異常映射:這種映射使用<global-exception-mapping />元素進行配置,在該元素中嵌套<exception-mapping />作為子元素,這種映射的作用范圍是package中的所有Action。

(4)局部異常映射:這種映射直接在Action內部使用<exception-mapping />元素配置就行了,當然它的作用范圍為它所在的Action。

??文件上傳是WEB應用中經常遇到的問題,Struts 2默認使用Jakarta的Common-FileUpload文件上傳框架,并對其進行了優化和封裝。

(1)<s:form>標簽必須指定enctype屬性并且該屬性的值必須是“multipart/form-data”,這表示表單的數據不再以字符串的形式提交,而是以二進制編碼的形式來提交數據。

(2)實現在服務器端接收上傳文件并保存到指定位置功能的Action。

(3)fileUpload攔截器,該攔截器由Struts 2框架提供,專門用來限制上傳文件的類型和大小。

任務實訓部分

1:添加管理員功能國際化

訓練技能點

??國際化

??<s:text>和OGNL顯示國際化消息

需求說明

在上一章的任務實訓部分我們實現了對添加管理員的輸入驗證,現在要求對該案例進行國際化處理,支持中文、英文的切換。

實現步驟

(1)?創建中英文國際化資源文件,參考代碼如下所示

英文資源文件:

addadmin.title=add a new Administrator

addadmin.name=name

addadmin.pwd=password

addadmin.submit=submit

addadmin.validate.name.null=name is required!

addadmin.validate.pwd.null=password is required!

addadmin.validate.pwd.length=password'length must be more than 6

addadmin.validate.pwd2=Two of the input password must be equal

addadmin.lang=ChooseLanguage

addadmin.zh=Chinese

addadmin.en=EngLish

中文資源文件:

addadmin.title=\u6DFB\u52A0\u7BA1\u7406\u5458

addadmin.name=\u767B\u5F55\u540D\u79F0

addadmin.pwd=\u767B\u5F55\u5BC6\u7801

addadmin.submit=\u63D0\u4EA4

addadmin.validate.name.null=\u767B\u5F55\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\uFF01

addadmin.validate.pwd.null=\u767B\u5F55\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A\uFF01

addadmin.validate.pwd.length=\u5BC6\u7801\u957F\u5EA6\u5FC5\u987B\u5927\u4E8E6\uFF01

addadmin.validate.pwd2=\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u5FC5\u987B\u4E00\u81F4\uFF01

addadmin.lang=\u8BED\u8A00\u9009\u62E9

addadmin.zh=\u4E2D\u6587

addadmin.en=\u82F1\u6587

(2)?下面是實現輸入驗證的Action,參考代碼如下所示。

public class AddAction extends ActionSupport {

private String logName;

private String logPwd1;

private String logPwd2;

public String execute() {

AdminDao ad=new AdminDao();

if(ad.addAdmin(logName, logPwd1))

return SUCCESS;

else

return ERROR;

}

public void validate()

{

if(logName==null||logName.equals(""))

this.addFieldError("logName",

getText("addadmin.validate.name.null"));

if(logPwd1==null||logPwd1.equals(""))

this.addFieldError("logPwd1",

getText("addadmin.validate.pwd.null"));

if(logPwd1.length()<6||logPwd2.length()>10)

this.addFieldError("logPwd1", )

getText("addadmin.validate.pwd.length"));

if(!logPwd1.equals(logPwd2))

this.addFieldError("logPwd2", getText("addadmin.validate.pwd2"));

}

//省略getter和setter方法

}

在通過addFieldError方法添加提示信息時,請注意這里使用了getText。

(3)?下面是添加管理員的表單,代碼如下所示。

<body>

<h3><s:text name="addadmin.title"/></h3>

<s:text name="addadmin.lang"/>:<select οnchange="changeLocal(this.value)" id="lang">

<option value="zh"><s:text name="addadmin.zh"/></option>

<option value="en"><s:text name="addadmin.en"/></option>

</select>

<s:form action="add.action" method="post">

<s:textfield name="logName" label="%{getText('addadmin.name')}"/>

<s:password name="logPwd1" label="%{getText('addadmin.pwd')}"/>

<s:password name="logPwd2" label="%{getText('addadmin.pwd')}"/>

<s:submit value="%{getText('addadmin.submit')}"/>

</s:form>

</body>

<script>

??if(location.search=="")

location="changeLang.action?request_locale=zh";

??else if(location.search=="?request_locale=zh")

document.getElementById("lang").selectedIndex=0;

??else

document.getElementById("lang").selectedIndex=1;

function changeLocal(val)

{

location="changeLang.action?request_locale="+val;

}

</script>

這里我們要求用戶可以自由選擇語言環境,但不是通過超鏈接實現的,而是通過下拉列表框,如圖9.2.1所示,所以必須通過JavaScript代碼進行控制。

?

圖9.2.1 中文界面

?

圖9.2.2 英文界面

2:國際化校驗配置文件

訓練技能點

??Struts 2內置校驗器

??國際化校驗配置文件

需求說明

上個實訓任務是通過重寫ActionSupport類的valudate方法來實現輸入校驗的,現在要求使用Struts 2的內置校驗器實現輸入校驗并實現校驗配置文件的國際化。

3:數據庫操作異常處理

訓練技能點

??Struts 2異常處理

需求說明

在使用JDBC進行數據庫操作時很容易出現異常,所以通常我們都需要對進行數據庫操作的代碼使用try-catch語句,但是這也不能滿足復雜項目的需求,現在要求為添加管理員的示例使用Struts 2完善異常處理,為Action配置全局異常映射。

4:添加學生照片

訓練技能點

??Struts 2文件上傳

需求說明

前面我們實現過一個添加學生的示例,現在要求在添加學生信息的時候必須保存學生的照片,請使用Struts 2文件上傳實現該功能。

實現步驟

(1)?在表單中增加文件域,代碼如下所示:

<body>

<s:form action="addStu.action" method="post"

?enctype="multipart/form-data">

<s:textfield name="name" label="學生姓名"/>

<s:textfield name="birthday" label="學生生日"/>

<s:textfield name="height" label="學生身高"/>

<s:textfield name="weight" label="學生體重"/>

<s:file name="upload" label="學生照片"/>

<s:submit value="添加"/>

</s:form>

</body>

注意為表單增加enctype="multipart/form-data"。

(2)創建實現上傳的Action,參考代碼如下所示:

public class MyUpAction extends ActionSupport{

private String name; ??//學生姓名

private String birthday; ??//學生生日

private int height; ???????//學生身高

private int weight; ??????//學生體重

?//封裝上傳文件域的屬性

private File upload;

//封裝上傳文件的類型

private String uploadContentType;

//封裝上傳文件名

private String uploadFileName;

//方法省略

}

(3)上傳成功后,把學生的相關信息顯示到頁面上,運行效果如圖9.2.3和圖9.2.4所示。

?

圖9.2.3 添加學生

?

圖9.2.4 顯示學生信息

?

鞏固練習

一、選擇題

1. 用來讀取國際化資源文件的Struts 2標簽是()。

A.?<s:textfield>

B.?<s:text>

C.?<s:message>

D.?<s:resource>

2.以下關于Struts 2的國際化資源文件說法正確的是()。

A.?資源文件的名字可以自定義,沒有任何規定

B.?資源文件只要放在正確的路徑下,Struts就能找到了,無需在struts-config.xml中進行任何配置

C.?資源文件只能放在WEB-INF/classes的根目錄下

D.?中文資源文件需要轉碼

3.以下關于Struts 2異常處理說法正確的是()。

A.?通過Struts 2的異常處理機制可以避免異常的發生

B.?Struts 2的異常處理需要名字為exception的攔截器

C.?全局異常映射的作用范圍是struts.xml中的所有Action

D.?全局異常映射的優先級高于局部異常映射

4.以下關于Struts 2異常處理說法正確的是()。

A.?通過Struts 2的異常處理機制可以避免異常的發生

E.?Struts 2的異常處理需要名字為exception的攔截器

F.?全局異常映射的作用范圍是struts.xml中的所有Action

G.?全局異常映射的優先級高于局部異常映射

5.以下關于Struts 2文件上傳說法錯誤的是()。

A.?表單必須設置enctype屬性

B.?通過名字是“fileUpload”的攔截器可以限制文件類型和大小

C.?Struts 2對上傳文件的大小沒有任何限制

D.?Struts 2支持多文件上傳?

二、上機練習

上一章的鞏固練習部分要求大家實現了一個注冊功能,現在在此基礎上使用Struts 2實現國際化和照片上傳功能。

總結

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

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

亚洲综合导航 | 欧美a级免费视频 | 免费视频 三区 | 91天堂影院 | 免费成人av | 久久艹国产视频 | 亚洲免费国产视频 | 成人免费看黄 | 久久成人综合 | 在线观看福利网站 | 视频在线在亚洲 | 国产99久久久久久免费看 | 欧美成a人片在线观看久 | www.91av在线 | 日韩精品视频一二三 | 国产成人精品国内自产拍免费看 | 国产精品黄网站在线观看 | 久久精品一区二区 | 成人久久综合 | 免费在线观看毛片网站 | 毛片精品免费在线观看 | 天堂在线一区二区三区 | 欧美国产日韩激情 | 日韩在线三区 | 亚洲视频免费 | 日韩91在线| 色综合咪咪久久网 | 亚洲国产精品成人精品 | 国产美女精彩久久 | 又粗又长又大又爽又黄少妇毛片 | 狠狠综合久久 | 欧美亚洲成人xxx | 91香蕉嫩草| 九九热有精品 | 五月激情丁香婷婷 | 日韩在线视频在线观看 | 黄色的片子| 国产精品黑丝在线观看 | 欧美日韩国产一二 | 亚洲资源 | 天天射网| 91免费网址 | 五月婷婷综合网 | 久久精品网址 | 亚洲黄色免费 | 日日夜夜天天干 | 亚洲激情综合 | av高清免费在线 | 欧美日韩首页 | 不卡的av在线播放 | 欧美va天堂va视频va在线 | 久久久久久毛片精品免费不卡 | 综合影视 | 成人小视频在线观看免费 | 美女视频国产 | 在线观看的av网站 | 国产一区国产二区在线观看 | .国产精品成人自产拍在线观看6 | 久久视精品 | 免费十分钟 | 久久超碰网 | 亚洲成人精品影院 | 日韩精品亚洲专区在线观看 | 亚洲电影图片小说 | 一级片视频在线 | 91av大全 | 永久免费av在线播放 | 伊人色**天天综合婷婷 | 免费看av片网站 | 久久这里只有精品久久 | 伊人一级 | 国产在线91精品 | 日韩手机在线观看 | 黄色网在线播放 | h网站免费在线观看 | 亚洲闷骚少妇在线观看网站 | 81精品国产乱码久久久久久 | 中文字幕一区二区三区在线播放 | 色婷婷播放 | 成人a级黄色片 | 国产97免费 | 97国产在线视频 | 在线草 | 狠狠色伊人亚洲综合网站野外 | 97精品国产97久久久久久粉红 | 亚洲欧美视频一区二区三区 | 亚洲精品玖玖玖av在线看 | 中文字幕免费高清在线观看 | 欧美精品在线视频观看 | 中文字幕高清在线 | 中文字幕欲求不满 | 天天操导航| 亚洲精品国产自产拍在线观看 | 久久久国产精品亚洲一区 | 日韩欧美一区视频 | av看片在线 | 久久小视频| www.色爱| 久久国产亚洲精品 | 狠狠狠色狠狠色综合 | 九九热在线观看 | 三上悠亚一区二区在线观看 | 久久99日韩 | 国产精品18久久久久vr手机版特色 | 最新av观看 | 国产成a人亚洲精v品在线观看 | 欧美色图另类 | 婷婷综合激情 | bbbbb女女女女女bbbbb国产 | 中国精品一区二区 | 永久精品视频 | 亚洲少妇久久 | 91久久久久久久 | 日本最新高清不卡中文字幕 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久久在线观看 | 国产成人av电影在线观看 | 国产午夜精品一区 | av福利第一导航 | 国产麻豆电影在线观看 | 久草在线免| 日韩欧美在线视频一区二区三区 | 国产中文伊人 | 久久成人国产精品 | 精品久久一区二区 | 久草视频在线免费 | 最近字幕在线观看第一季 | 国产日本在线播放 | 黄色网在线免费观看 | 久久女同性恋中文字幕 | 亚洲欧美婷婷六月色综合 | 高清不卡一区二区三区 | 狠狠狠色丁香婷婷综合激情 | 日日夜夜狠狠操 | 久草在线99 | 欧美aⅴ在线观看 | 日韩欧美一区二区三区在线 | 国产高清视频网 | 亚洲欧美综合 | av黄网站 | 97操碰| 国产一级精品在线观看 | 天天操天天干天天爽 | 五月综合婷 | 婷婷九月丁香 | 91喷水 | 亚洲精品男人天堂 | 不卡国产在线 | 中文字幕一区二区三区四区在线视频 | 99精品在线播放 | 亚洲九九影院 | 欧美日韩一区二区在线观看 | 激情久久一区二区三区 | 免费在线观看一区二区三区 | 亚洲精品国产精品国自 | 综合色狠狠 | 国产高清视频网 | 日韩视| 操操操夜夜操 | 97av精品 | 中文字幕国产一区二区 | 日韩在线视频精品 | www.久久99| 亚洲精品在线播放视频 | 一区二区不卡在线观看 | 免费观看xxxx9999片 | 国产午夜精品一区二区三区在线观看 | 免费欧美高清视频 | 国产xxxx做受性欧美88 | 国产精品免费观看国产网曝瓜 | 操老逼免费视频 | 超碰免费成人 | 91三级视频| 亚洲人成网站精品片在线观看 | 搡bbbb搡bbb视频 | 91精品久久久久久 | av电影免费 | 久久久久国产精品免费网站 | 免费在线观看亚洲视频 | 亚洲免费在线观看视频 | 欧美日韩三区二区 | 久久久亚洲成人 | 欧美人体xx| 国产一及片 | 91精品久久久久久综合五月天 | 国产精品中文字幕在线播放 | 超碰在线97观看 | 久久久久久高清 | 欧美精品久久久久a | 91探花在线 | 国产999精品久久久久久绿帽 | 亚洲欧美一区二区三区孕妇写真 | 一区二区三区在线免费播放 | 欧美日本国产在线观看 | 毛片1000部免费看 | 色综合久久88色综合天天6 | 日韩av手机在线观看 | 六月丁香久久 | 日韩久久精品一区二区 | 午夜精品一区二区三区免费视频 | 久久精品国产精品亚洲 | 欧美精品久久久久 | 激情五月五月婷婷 | 欧美日韩免费观看一区二区三区 | 天天摸天天舔 | 天天干,狠狠干 | 一级黄色大片 | 九色福利视频 | 人人爽人人搞 | 国产成人一区三区 | 国产精品国产自产拍高清av | 国产精品成人自产拍在线观看 | av免费在线观看网站 | 欧美日韩免费观看一区二区三区 | 99re国产视频 | 国产亚洲精品中文字幕 | 日韩剧情| 国产成人61精品免费看片 | 97成人免费| 亚洲电影一级黄 | 国产高清视频免费观看 | 欧美性网站 | 日韩成人在线一区二区 | 视频直播国产精品 | 99久久er热在这里只有精品66 | 特级a毛片| 综合婷婷丁香 | 欧美91片| 日韩在线观看你懂得 | 国产v亚洲v | 日本黄色免费播放 | 天操夜夜操 | 91精品蜜桃| 天天色天天操天天爽 | 国产男女爽爽爽免费视频 | 国产免费xvideos视频入口 | 高清不卡一区二区三区 | 亚洲精品免费在线 | 亚洲视频2 | 在线观看视频中文字幕 | 天天操夜操视频 | 久久久久综合精品福利啪啪 | 国产美女网 | 丁香视频 | 综合色婷婷 | 亚洲黄色在线观看 | 成人av电影免费在线观看 | 日韩狠狠操 | 免费在线观看av网站 | 不卡的av在线播放 | 国内外成人在线视频 | 日日操狠狠干 | 一级欧美日韩 | 2023国产精品自产拍在线观看 | 久久国产三级 | 婷婷丁香五| 亚洲天堂在线观看完整版 | 久草视频在线看 | 久久综合爱 | 日日干av | 日韩精品一区二区免费 | 成人综合婷婷国产精品久久免费 | 色天堂在线视频 | 狠狠色香婷婷久久亚洲精品 | 久久久久国产精品厨房 | 国产精品白浆 | 九色最新网址 | 日韩欧美高清一区二区 | 天天色播 | 伊人久久精品久久亚洲一区 | 中字幕视频在线永久在线观看免费 | 欧美日韩国内在线 | 丁香免费视频 | 亚洲精品18日本一区app | 欧美伦理一区二区 | 91精品视频播放 | 九九九视频精品 | 国内精品久久久精品电影院 | 伊色综合久久之综合久久 | 久久综合免费视频影院 | 又爽又黄又无遮挡网站动态图 | 久草久草视频 | 欧美一级片免费播放 | 免费视频 三区 | 91看片一区二区三区 | 国产精品福利在线观看 | 欧美日性视频 | 91亚洲精品久久久中文字幕 | 99人久久精品视频最新地址 | 欧美日韩一区二区久久 | 国产精品123 | 精品99视频 | 一区二区不卡在线观看 | 久久女同性恋中文字幕 | 亚洲欧美成人在线 | 日韩午夜视频在线观看 | 亚洲最大成人网4388xx | 99c视频高清免费观看 | 久久深夜福利免费观看 | 久久精品久久精品久久精品 | 色操插 | 国产成人亚洲在线观看 | 视频国产| 99视频精品免费观看, | 午夜视频免费播放 | 亚洲午夜精品电影 | 天堂网在线视频 | 美女久久| 国产精品黄网站在线观看 | av一级片在线观看 | 美女激情影院 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲精品国偷拍自产在线观看 | 999久久精品 | 欧美性色黄大片在线观看 | 依人成人综合网 | 久久久久久久久久久久久国产精品 | 十八岁免进欧美 | 亚洲精品456在线播放乱码 | 日韩理论片在线观看 | 美女视频黄是免费的 | 婷婷四房综合激情五月 | 亚洲美女在线一区 | 国产在线小视频 | 成全在线视频免费观看 | 婷婷激情五月 | 在线中文字幕观看 | 九月婷婷人人澡人人添人人爽 | 四虎最新域名 | 少妇bbbb搡bbbb桶 | 久久久在线 | 最新日韩视频 | 久久最新视频 | 久久av影院 | 色综合综合 | 看av免费 | 免费91在线 | 国产精品99久久久久人中文网介绍 | 四虎影院在线观看av | 日韩欧美69| 免费精品 | 国产亚洲高清视频 | 99久久久国产精品免费99 | 天天射天天做 | 五月婷婷综合激情网 | 中文字幕av最新更新 | 日韩一区二区三区免费视频 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 亚洲国产网址 | av观看免费在线 | 青春草国产视频 | 天天干天天干天天操 | 91完整视频 | 日韩在线免费视频 | 日韩精品在线看 | 六月婷婷久香在线视频 | www.天堂av | 又黄又刺激 | 毛片网站在线看 | 国产精品久久久久久久午夜片 | 在线观看亚洲国产 | 欧美成人按摩 | 久久综合之合合综合久久 | 中文字幕在线观看日本 | 日日日天天天 | 国产精品免费观看久久 | 中文亚洲欧美日韩 | 亚洲国产成人高清精品 | 五月天色丁香 | 精品久久久久久久久久久久久久久久久久 | 人人爽人人爽人人爽学生一级 | 午夜色影院 | 亚洲黄色小说网址 | 欧美一级看片 | 中文在线免费一区三区 | 91精品伦理 | 久久国产精品99久久久久 | 啪啪小视频网站 | 在线观看色网站 | 午夜成人影视 | 日本中文字幕观看 | 四月婷婷在线观看 | 国产精品成人一区二区 | av在线专区 | 亚洲六月丁香色婷婷综合久久 | 在线不卡视频 | 中文字幕在线播放一区 | 9在线观看免费高清完整版在线观看明 | 欧美精品久久久久久久久老牛影院 | 狠狠干在线播放 | a成人v | 九草在线观看 | 欧美成人精品欧美一级乱黄 | 黄色国产在线观看 | 久久露脸国产精品 | 在线观看久 | 亚洲影视资源 | 伊人永久在线 | 激情综合五月婷婷 | 亚洲一区二区精品3399 | 亚洲精品视频网站在线观看 | 最近字幕在线观看第一季 | 日韩电影在线观看一区二区三区 | 中文字幕人成乱码在线观看 | 伊人影院在线观看 | 国产精品中文字幕在线播放 | 久久精品视频在线免费观看 | 少妇性xxx| 一区二区av | av看片在线 | 久久专区 | 久久91网 | 婷婷在线网站 | 日本婷婷色 | 狂野欧美激情性xxxx欧美 | 在线观看视频国产一区 | 亚州欧美视频 | 黄色a视频免费 | 日韩精品观看 | 日韩久久在线 | 中文亚洲欧美日韩 | 国产不卡免费 | 丁香电影小说免费视频观看 | 99热国产在线 | 又黄又爽的视频在线观看网站 | 天天se天天cao天天干 | 国色综合 | 国产.精品.日韩.另类.中文.在线.播放 | 国产少妇在线观看 | 欧美a在线免费观看 | www.国产视频 | 天天操夜夜爱 | 最近免费中文字幕mv在线视频3 | 99麻豆视频 | 奇米影视8888在线观看大全免费 | 麻豆免费视频 | 三级动图 | 中文字幕中文字幕在线中文字幕三区 | 精品国产乱码久久久久 | 亚洲少妇自拍 | 国产资源精品 | 国产亚洲视频在线观看 | 97超碰在线久草超碰在线观看 | 久久久在线观看 | 天天操天天干天天综合网 | 天天干天天操天天做 | 怡红院av久久久久久久 | 最近中文字幕大全中文字幕免费 | 精品一区电影 | 亚洲一区欧美激情 | 国产一级电影免费观看 | 99综合电影在线视频 | 91探花国产综合在线精品 | 日韩精品免费一区二区 | 人人干人人上 | 免费看日韩片 | 一区二区三区动漫 | 国产精品成人自产拍在线观看 | 国产黄大片在线观看 | 成人中文字幕+乱码+中文字幕 | 91精品国产自产91精品 | 精品国产一区二区三区久久久 | 久久99精品国产91久久来源 | 久久久国产电影 | 久久精品三级 | 天天操天天操一操 | 99视频久久 | 国产精品女同一区二区三区久久夜 | 亚洲精品国产精品99久久 | 在线观看成人小视频 | 午夜视频一区二区 | 99久久精品费精品 | 国产精品 国内视频 | 欧美日在线观看 | 亚洲国产精品激情在线观看 | 成人动态视频 | 国产粉嫩在线观看 | 探花视频在线观看+在线播放 | 亚洲天堂网在线视频观看 | 日韩精品一区二区三区丰满 | 欧美夫妻性生活电影 | 91在线播放国产 | 中文成人字幕 | 久久激情综合 | 国产精品久久久久久久久久久久久 | 免费av在线网 | 99精品在线| 黄色在线观看网站 | 在线观看av大片 | 国产伦精品一区二区三区在线 | 欧美日韩在线视频一区 | 操老逼免费视频 | 97在线视 | 亚洲热久久 | 国产色拍拍拍拍在线精品 | 亚洲va欧洲va国产va不卡 | 成人久久精品视频 | 免费亚洲黄色 | 色婷婷国产精品 | 中文字幕免费在线看 | 久久成人18免费网站 | 欧美一级欧美一级 | 日本资源中文字幕在线 | 色婷婷综合久久久久中文字幕1 | 日韩欧美在线视频一区二区三区 | 97超碰中文字幕 | 456成人精品影院 | 婷婷丁香视频 | 国产成人精品一区二区在线观看 | 97超碰影视| ,久久福利影视 | 免费黄色激情视频 | 91九色在线| 国产亚洲精品久久网站 | 超碰在97 | 午夜成人免费电影 | 亚洲va欧美va人人爽春色影视 | 亚洲欧洲成人精品av97 | 亚洲高清91 | 五月开心网 | 国产一二三区在线观看 | 国产精品一二三 | 天堂在线视频免费观看 | 91精品网站在线观看 | 麻豆 91 在线| 国产一区免费视频 | 亚洲精品日韩av | 狠狠色丁香婷婷综合欧美 | 国产黄色av影视 | 精品视频久久久 | 国产99久久久久久免费看 | 国产精品一区二区吃奶在线观看 | 久久精品8 | 狠日日| 久久综合中文字幕 | 中文字幕成人在线 | 韩国精品福利一区二区三区 | 91香蕉视频污在线 | 国产精品美女久久久久久久 | 成人av电影免费在线观看 | 免费看黄在线观看 | 免费看的黄色 | 亚洲精品xxx | 免费黄色av | 日韩免费av片 | 亚洲欧美国产日韩在线观看 | 91精品秘密在线观看 | 国产亚洲高清视频 | 在线观看日韩精品视频 | 国产a视频免费观看 | 欧美日韩国产精品一区 | 婷婷综合亚洲 | 国产美女免费观看 | 黄色成人av | 91麻豆网 | 在线观看你懂的网站 | 四虎影视精品成人 | 久久久久免费精品国产小说色大师 | 最新久久久| 免费视频区 | 国产91勾搭技师精品 | 又爽又黄又刺激的视频 | 91porny九色在线播放 | 国产高清久久久 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日本午夜免费福利视频 | 日韩高清av| 蜜臀av性久久久久av蜜臀妖精 | 大荫蒂欧美视频另类xxxx | 最新免费av在线 | 亚洲在线高清 | 九九爱免费视频 | 在线香蕉视频 | 999国产在线 | 在线色资源 | 久久久久久久综合色一本 | 乱男乱女www7788 | 国产伦精品一区二区三区… | 国产精品18久久久久久首页狼 | 99精品久久99久久久久 | 91手机电视 | 91在线视频精品 | 91免费网 | 欧美激情精品久久久 | 一区二区三区日韩视频在线观看 | 久久久久一区二区三区 | 97超碰人人看 | 国产中文在线播放 | 久久激情视频 久久 | 国产精品免费一区二区 | 国产综合精品一区二区三区 | 日韩理论片在线 | 成人在线观看日韩 | 99久久精品免费看国产四区 | 久久精品1区 | 日韩久久一区二区 | 亚洲成人黄色在线观看 | 国产精品24小时在线观看 | 国产精品一区二区果冻传媒 | 国产精品乱码一区二区视频 | 欧美激情xxxx性bbbb | 国产日韩精品一区二区在线观看播放 | 99国产视频在线 | 狠狠操.com| 国产白浆视频 | 91看片在线看片 | 日韩久久精品一区二区三区下载 | 在线免费成人 | 免费看亚洲毛片 | 色婷婷综合久久久中文字幕 | 婷婷香蕉 | 亚洲六月丁香色婷婷综合久久 | 99精品国产兔费观看久久99 | 美女一级毛片视频 | 国产人成精品一区二区三 | 亚洲欧美日本一区二区三区 | 国产免费一区二区三区网站免费 | 一级黄色a视频 | 色999在线 | 亚洲国产视频网站 | 91精品办公室少妇高潮对白 | 九九热视频在线播放 | 欧美黄色成人 | 色国产精品一区在线观看 | 亚洲 欧美变态 另类 综合 | 有码中文在线 | 国产精品不卡在线观看 | 99久久99久久精品国产片果冰 | 亚洲精品婷婷 | 91在线小视频 | 色免费在线 | 国产成人一级电影 | 日韩在线观看一区二区 | 菠萝菠萝蜜在线播放 | 国产亚洲精品久久久久久大师 | 天天操天天舔天天爽 | 国产亚洲人| 六月丁香在线视频 | 日本久久久久久科技有限公司 | 毛片精品免费在线观看 | 在线免费色视频 | 在线观看免费视频 | 激情五月色播五月 | 97超碰人人澡 | 91丨九色丨蝌蚪丨老版 | 免费黄色小网站 | 色在线免费视频 | 99久久国产免费,99久久国产免费大片 | 啪啪午夜免费 | 免费高清在线观看成人 | 亚洲午夜av | 国产一级电影 | 麻豆视频免费在线 | 91麻豆精品一区二区三区 | 波多野结衣视频一区二区三区 | 亚洲国产精品成人va在线观看 | 色综合久久久久综合99 | 一级欧美黄 | 国产精品亚洲综合久久 | 日本精品一区二区 | 国产又粗又猛又黄 | 国产在线观看你懂得 | 日韩精品三区四区 | 亚洲国产精品激情在线观看 | 中文字幕一区2区3区 | 天天操天天操天天操天天操天天操 | av视屏在线| 婷婷丁香色 | 高清免费av在线 | 欧美日韩aaaa | 日韩欧美网址 | 人人爽人人舔 | 日韩精品欧美专区 | 亚洲精品视频一 | 99视频精品在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 在线亚洲欧美日韩 | 久久电影网站中文字幕 | h动漫中文字幕 | 天天亚洲综合 | 黄色小网站在线 | 国际精品网 | 亚洲亚洲精品在线观看 | 国产成人精品一区二 | 天天操天天操天天操天天操天天操 | 福利一区二区 | 草久热| 国产日韩欧美精品在线观看 | 免费黄色在线网址 | 日韩欧美一区二区不卡 | 视频二区在线视频 | 九九在线国产视频 | 欧美成人亚洲 | 久久精品在线 | 久久免费视频在线观看 | 中文字幕第一页在线视频 | 国产视频在线播放 | 成人九九视频 | av免费观看高清 | 亚洲国产三级在线观看 | 三级黄色a | 国产精品9999久久久久仙踪林 | 最新婷婷色 | 91在线精品一区二区 | 亚洲成人av电影 | 中文字幕日韩电影 | 干干夜夜 | 国产资源网 | 国产黄网站在线观看 | 成人日批视频 | 在线a人片免费观看视频 | 在线黄色观看 | 久草在线视频免费资源观看 | 最近免费观看的电影完整版 | 西西www444| 日本黄色一级电影 | 免费视频久久久 | 亚洲一区二区三区四区精品 | 色综合婷婷久久 | 深爱激情综合 | 97精品一区 | 国产三级久久久 | 国产群p视频 | 国产精品久久久久久久久久久久久 | 日韩视频免费播放 | 久久综合狠狠综合久久狠狠色综合 | 日韩av免费大片 | 色噜噜日韩精品一区二区三区视频 | 国产色道| 亚洲欧美日韩精品久久久 | 蜜臀av免费一区二区三区 | 日韩午夜电影 | 最近免费观看的电影完整版 | 国产资源站 | av看片网址 | 五月婷在线 | 成x99人av在线www | 在线观看中文字幕视频 | 日韩午夜电影 | 91精品久久香蕉国产线看观看 | 日韩免费av片 | 欧美男女爱爱视频 | 色先锋资源网 | 韩国av永久免费 | 国产精品1区2区 | 午夜久久久久久久久久久 | 中文字幕在线视频免费播放 | 在线免费视频a | 高清中文字幕 | 国产免费av一区二区三区 | 日韩在线免费观看视频 | 手机成人免费视频 | 国产精品女同一区二区三区久久夜 | 国产精品18久久久久vr手机版特色 | www久久99| 波多野结衣动态图 | 欧美成亚洲 | 国产精品高 | 狠狠色狠狠色合久久伊人 | 欧美va在线观看 | 成人免费观看a | 四虎在线观看视频 | 国产尤物视频在线 | 手机av电影在线观看 | 亚洲欧美综合 | 激情视频一区二区 | 日韩欧美在线综合网 | 久久综合九色综合97婷婷女人 | 免费在线观看成人av | 在线三级播放 | 99精品黄色片免费大全 | 亚洲国产成人av网 | 91视频免费看网站 | 69精品视频在线观看 | 又黄又爽又刺激视频 | 日韩高清一二三区 | 亚洲综合情 | 在线播放第一页 | 成人国产精品久久久久久亚洲 | 97精品国产aⅴ | 久久久久久久国产精品 | 摸bbb搡bbb搡bbbb | 91精品国产入口 | ww亚洲ww亚在线观看 | 欧美日韩中文另类 | 2021国产在线| 日韩极品视频在线观看 | 久久精品超碰 | 欧美国产日韩在线观看 | 视频成人免费 | 在线视频 成人 | 国产精品久久久777 成人手机在线视频 | 午夜狠狠干 | 99精品在线视频观看 | 国产色婷婷 | 亚洲综合成人专区片 | 精品国产日本 | 伊人狠狠 | 免费日韩 精品中文字幕视频在线 | 久久激情视频 久久 | 黄色一区二区在线观看 | 五月天中文字幕 | 一级片视频免费观看 | 人人干狠狠干 | 久久久久久国产精品久久 | 亚洲电影院 | 亚洲精品在线视频播放 | 91成人网在线 | 国产成人三级一区二区在线观看一 | 亚洲视频在线观看网站 | 99久久久国产精品免费99 | 日韩在线观看不卡 | 欧美在线视频一区二区 | 国产 视频 久久 | 欧美精品免费在线 | 久久一区二区三区四区 | 色综合网| 日韩美一区二区三区 | 欧美夫妻性生活电影 | 亚洲日b视频 | 国产一级免费在线 | 国产精品第7页 | 人人搞人人干 | 久久精品电影网 | 亚洲精品88欧美一区二区 | 日本精品视频网站 | 91成人网页版 | 天天操天天干天天玩 | 中文字幕亚洲欧美日韩2019 | 中文字幕一区二区三区久久 | 亚洲午夜精品久久久久久久久 | 国产高清视频在线播放 | 欧美日韩不卡在线观看 | 色偷偷97 | 久久国产网站 | 国产亚洲精品久久久久秋 | 国产精品理论片在线播放 | 欧美成人h版电影 | 久久国产手机看片 | 欧美精品久久久久性色 | 91精品久久久久久久99蜜桃 | 亚洲在线精品 | 又粗又长又大又爽又黄少妇毛片 | 国产中文字幕视频在线观看 | 五月天六月色 | www亚洲一区 | 欧美日韩中文视频 | 不卡电影一区二区三区 | 中文字幕在线网址 | 91大神视频网站 | 国产在线观看av | 91理论电影| 精品免费视频 | 精品在线不卡 | 免费看黄色毛片 | 成年人视频在线免费播放 | 国产永久免费高清在线观看视频 | 国产精品视频在线观看 | 西西4444www大胆艺术 | 日日夜夜骑 | 日韩大片免费在线观看 | 97电影网站 | 日韩精品一区二区三区三炮视频 | 国产成人精品久久久久 | 久久伊人综合 | 成人国产精品久久久 | 国产九九九视频 | 天天操天天干天天干 | 亚洲精品国偷自产在线91正片 | 国产第一页福利影院 | 久久久久久国产精品亚洲78 | 日韩羞羞| 日韩免费电影一区二区 | 日韩剧 | 中文字幕在线观看一区二区 | 日韩av片无码一区二区不卡电影 | 日批视频 | 国产亚洲va综合人人澡精品 | 国产一级做a | 国产91国语对白在线 | 成人午夜电影在线播放 | 97电影在线观看 | 六月丁香婷婷网 | 福利区在线观看 | 国产r级在线观看 | 欧美在线观看视频一区二区 | 日日操夜夜操狠狠操 | 日日夜夜天天人人 | 天天操天天操天天操天天操天天操天天操 | 激情网在线视频 | 国产在线精品国自产拍影院 | 91影视成人 | 国产麻豆果冻传媒在线观看 | 爱爱一区 | 久久久精品国产一区二区三区 | 午夜电影一区 | 亚洲美女精品 | 97超碰成人 | 亚洲日韩中文字幕 | 日韩精品91偷拍在线观看 | 超碰97人 | 国产视频69 | www.天天操 | 国产一级一片免费播放放 | 久久精品国产亚洲aⅴ | 久久都是精品 | 日韩久久精品一区二区三区下载 | 97成人资源站 | 国产另类xxxxhd高清 | 国产精品久久久久久麻豆一区 | 免费视频久久久久 | 亚洲视频观看 | 亚洲麻豆精品 | 久久久久国产a免费观看rela | 99人久久精品视频最新地址 | 69久久久 | 国产伦理久久 | 国产手机视频在线 | 97久久精品午夜一区二区 | 久草在在线 | 久久三级视频 | 国产精品久久久999 国产91九色视频 | www.天天干| 又色又爽又黄高潮的免费视频 | 国产精品男女 | 亚洲精品成人免费 | 99久久久久久久久久 | 在线播放 日韩专区 | 成人午夜黄色影院 | 手机av在线免费观看 | 黄色毛片大全 | 亚洲理论电影 | 欧美最猛性xxxxx免费 | 韩日av一区二区 | 亚洲欧美日韩不卡 | 亚洲成人资源在线 | 欧美成人精品三级在线观看播放 | 日韩精品免费一线在线观看 | 日韩欧美在线综合网 | 欧美精品久久久久久久久老牛影院 | 久久在线视频精品 | 在线观看视频日韩 | 日韩精品视频在线观看网址 | 国内精自线一二区永久 | 国产精品高清免费在线观看 | 中文字幕一区二区三区在线观看 | 国产精品视频区 | 国产精品入口麻豆 | 一区免费视频 | 色在线亚洲 | 婷婷电影在线观看 | 久久影院中文字幕 | 毛片99| 97精品国产aⅴ | 精精国产xxxx视频在线播放 | 午夜精品久久一牛影视 | 久久国产精品一区二区三区四区 | 美女福利视频一区二区 | 久久精品美女视频网站 | 久久噜噜少妇网站 | 国产精品系列在线 | 日韩网站免费观看 | 日韩在线免费观看视频 | 久久高清免费观看 | 国产精品成久久久久 | 日韩视频免费观看高清完整版在线 | 亚洲爽爽网 | 91精品国产入口 | 久久综合五月天 | 免费看黄在线看 | 久久全国免费视频 | 久久99精品久久久久久久久久久久 | 久久婷婷一区二区三区 | 黄色软件在线看 | 欧美日韩伦理一区 | 五月婷婷综合久久 | 久久久久久高清 | 午夜黄色一级片 | 2021国产在线 | 国产精品丝袜久久久久久久不卡 | av成人动漫在线观看 | 欧洲亚洲国产视频 | 日韩视频一区二区三区 | 国产综合激情 | 成人免费看黄 | 日日操天天爽 | 射射射av | 久久免费一 | 美腿丝袜一区二区三区 | 99久高清在线观看视频99精品热在线观看视频 | 超级碰碰碰碰 | 天堂在线视频中文网 | 天海翼一区二区三区免费 | 伊人中文在线 | 国产拍在线 | 99久久精品免费看国产麻豆 | 91手机视频在线 | 久久中文精品视频 |