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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Struts2 XML配置详解

發布時間:2025/7/14 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2 XML配置详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1.????深入Struts2的配置文件 本部分主要介紹struts.xml的常用配置。 1.1.????包配置: Struts2框架中核心組件就是Action、攔截器等,Struts2框架使用包來管理Action和攔截器等。每個包就是多個Action、多個攔截器、多個攔截器引用的集合。 在struts.xml文件中package元素用于定義包配置,每個package元素定義了一個包配置。它的常用屬性有: l?name:必填屬性,用來指定包的名字。 l?extends:可選屬性,用來指定該包繼承其他包。繼承其它包,可以繼承其它包中的Action定義、攔截器定義等。 l?namespace:可選屬性,用來指定該包的命名空間。
<! DOCTYPE? struts? PUBLIC ???????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ???????? "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > ???? <!-- struts2 action 必須放在一個指定的包空間下定義 ?--> ???? < package? name = "default"? extends = "struts-default" > ???? <!--? 定義處理請求 URL login.action Action --> ???????? < action? name = "login"? class = "org.qiujy.web.struts.action.LoginAction" > ???????? <!--? 定義處理結果字符串和資源之間的映射關系 ?--> ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > </ struts >
如上示例的配置,配置了一個名為default的包,該包下定義了一個Action。 1.2.????命名空間配置: 考慮到同一個Web應用中需要同名的Action,Struts2以命名空間的方式來管理Action,同一個命名空間不能有同名的Action。 Struts2通過為包指定namespace屬性來為包下面的所有Action指定共同的命名空間。 把上示例的配置改為如下形式:
<! DOCTYPE? struts? PUBLIC ???????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ???????? "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > ???? <!-- struts2 action 必須放在一個指定的包空間下定義 ?--> ???? < package? name = "qiujy"? extends = "struts-default" > ???? <!--? 定義處理請求 URL login.action Action --> ???????? < action? name = "login"? class = "org.qiujy.web.struts2.action.LoginAction" > ???????? <!--? 定義處理結果字符串和資源之間的映射關系 ?--> ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > ??? ???? < package? name = "my"? extends = "struts-default"? namespace = "/manage" > ???? <!--? 定義處理請求 URL login.action Action --> ???????? < action? name = "backLogin"? class = "org.qiujy.web.struts2.action.LoginAction" > ???????? <!--? 定義處理結果字符串和資源之間的映射關系 ?--> ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > </ struts >
如上配置了兩個包:default和my,配置my包時指定了該包的命名空間為/manage。 對于包default:沒有指定namespace屬性。如果某個包沒有指定namespace屬性,即該包使用默認的命名空間,默認的命名空間總是""。 對于包my:指定了命名空間/manage,則該包下所有的Action處理的URL應該是“命名空間/Action名”。如上名為 backLogin的Action,它處理的URL為: http://localhost:8080/userlogin_struts2 /manage/backLogin.action Struts2的命名空間的作用等同于struts1里模塊的作用。 1.3.????包含配置: 在Struts2中可以將一個配置文件分解成多個配置文件,那么我們必須在struts.xml中包含其他配置文件。
< struts > ???? < include? file = "struts-default.xml" /> ???? < include? file = "struts-user.xml" /> ???? < include? file = "struts-book.xml" /> ???? < include? file = "struts-shoppingCart.xml" /> ??? ??? ...... ??? </ struts >
1.4.????攔截器配置: 見后面章節介紹。 1.5.????常量配置: Struts2框架有兩個核心配置文件,其中struts.xml文件主要負責管理應用中的Action映射, 及Action處理結果和物理資源之間的映射關系。除此之外,Struts2框架還包含了一個struts.properties文件,該文件主義了Struts2框架的大量常量屬性。但通常推薦也是在struts.xml文件中來配置這些常量屬性。 如:后面會講到Struts2的國際化,它的資源文件位置就用常量屬性來指定:
< struts > ??? ...... ???? < constant? name = "struts.custom.i18n.resources"? value = "messages" /> </ struts >
表示指定了資源文件的放置在classes目錄下,基本名是messages,則在classes目錄下您就應該放置類似messages_zh_CN.properties,message_en.properties名的文件。 2.????Struts2的Action 2.1.????實現Action類: Struts2中Action是核心內容,它包含了對用戶請求的處理邏輯,我們也稱Action為業務控制器。 Struts2中的Action采用了低侵入式的設計,Struts2不要求Action類繼承任何的Struts2的基類或實現Struts2接口。(但是,我們為了方便實現Action,大多數情況下都會繼承com.opensymphony.xwork2.ActionSupport類,并重寫此類里的public String execute() throws Exception方法。因為此類中實現了很多的實用接口,提供了很多默認方法,這些默認方法包括獲取國際化信息的方法、數據校驗的方法、默認的處理用戶請求的方法等,這樣可以大大的簡化Action的開發。) Struts2中通常直接使用Action來封裝HTTP請求參數,因此,Action類里還應該包含與請求參數對應的屬性,并且為屬性提供對應的getter和setter方法。(當然,Action類中還可以封裝處理結果,把處理結果信息當作一屬性,提供對應的getter和setter方法) 修改第一部分的用戶登錄示例:把Action改成如下:
package ?org.qiujy.web.struts2.action; import ?com.opensymphony.xwork2.ActionSupport; /** ? * @author qiujy ? * @version 1.0 ? */ public class ?LoginAction? extends ?ActionSupport { ???? private ?String? userName ; ???? private ?String? password ; ??? ???? private ?String? msg ;? // 結果信息屬性 ??? ???? /** ??? ? * @return the msg ??? ? */ ???? public ?String getMsg() { ???????? return msg ; ??? } ???? /** ??? ? * @param msg the msg to set ??? ? */ ???? public void ?setMsg(String msg) { ???????? this . msg ?= msg; ??? } ???? /** ??? ? * @return the userName ??? ? */ ???? public ?String getUserName() { ???????? return userName ; ??? } ???? /** ??? ? * @param userName the userName to set ??? ? */ ???? public void ?setUserName(String userName) { ???????? this . userName ?= userName; ??? } ???? /** ??? ? * @return the password ??? ? */ ???? public ?String getPassword() { ???????? return password ; ??? } ???? /** ??? ? * @param password the password to set ??? ? */ ???? public void ?setPassword(String password) { ???????? this . password ?= password; ??? } ??? ???? /** ??? ? * 處理用戶請求的 excute() 方法 ??? ? * @return 結果導航字符串 ??? ? * @throws Exception ??? ? */ ???? public ?String execute()? throws ?Exception{ ??????? if ( "test" .equals( this . userName ) && "test" .equals( this . password )){ ??????????? msg ?=? " 登錄成功,歡迎 " ?+? this . userName ; ??????????? return this . SUCCESS ; ?????? } else { ??????????? msg ?=? " 登錄失敗,用戶名或密碼錯 " ; ??????????? return this . ERROR ; ?????? } ??? } }
往success.jsp和error.jsp頁面中添加 ${msg}?EL表達式來顯示結果信息。則最終效果跟以前一樣。 2.2.????Action訪問Servlet API Struts2中的Action并沒有和任何Servlet API耦合,這樣框架更具靈活性,更易測試。 但是,對于web應用的控制器而言,不訪問Servlet API幾乎是不可能的,例如跟蹤HTTP Session狀態等。Struts2框架提供了一種更輕松的方式來訪問Servlet API。Struts2中提供了一個ActionContext類(當前Action的上下文對象),通過這個類可以訪問Servlet API。下面是該類中提供的幾個常用方法: l?public static ActionContext getContext() :獲得當前Action的ActionContext實例。 l?public Object get(Object key) :此方法類似于調用HttpServletRequest的getAttribute(String name)方法。 l?public void put(Object key, Object value) :此方法類似于調用HttpServletRequest 的setAttribute(String name, Object o)。 l?public Map getParameters() :獲取所有的請求參數。類似于調用HttpServletRequest對象的getParameterMap() 方法。 l?public Map getSession() :返回一個Map對象,該Map對象模擬了HttpSession實例。 l?public void setSession(Map session) : 直接傳入一個Map實例,將該Map實例里的key-value對轉換成session的屬性名-屬性值對。 l?public Map getApplication() :返回一個Map對象,該對象模擬了該應用的ServletContext實例。 l?public void setApplication(Map application) :直接傳入一個Map實例,將該Map實例里的key-value對轉換成application的屬性名-屬性值對。 修改以上用戶登錄驗證示例的Action類中的execute方法:
public ?String execute()? throws ?Exception{ ???????? if ( "test" .equals( this . userName ) &&? "test" .equals( this . password )){ ???????????? msg ?=? " 登錄成功,歡迎 " ?+? this . userName ; ???????????? // 獲取 ActionContext 實例,通過它來訪問 Servlet API ??????????? ActionContext context = ActionContext.getContext(); ???????????? // session 中是否已經存放了用戶名,如果存放了:說明已經登錄了; // 否則說明是第一次登錄成功 ???????????? if ( null ?!= context.getSession().get( "uName" )){ ???????????????? msg ?=? this . userName ?+? " :你已經登錄過了 !!!" ; ??????????? } else { ??????????????? context.getSession().put( "uName" ,? this . userName ); ??????????? } ??????????? ???????????? return this . SUCCESS ; ??????? } else { ???????????? msg ?=? " 登錄失敗,用戶名或密碼錯 " ; ???????????? return this . ERROR ; ??????? } ??? }
Struts2中通過ActionContext來訪問Servlet API,讓Action徹底從Servlet API 中分離出來,最大的好處就是可以脫離Web容器測試Action。 另外,Struts2中還提供了一個ServletActionContext類,Action只要繼承自該類,就可以直接訪問Servlet API。具體方法參看struts2的API文檔。 3.????一個Action內包含多個請求處理方法的處理 Struts1提供了DispatchAction,從而允許一個Action內包含多個請求處理方法。Struts2也提供了類似的功能。處理方式主要有以下三種方式: 3.1.????動態方法調用: DMI:Dynamic Method Invocation 動態方法調用。 動態方法調用是指:表單元素的action不直接等于某個Action的名字,而是以如下形式來指定對應的動作名:
<form method="post"?action="userOpt!login.action">
則用戶的請求將提交到名為”userOpt”的Action實例,Action實例將調用名為”login”方法來處理請求。同時login方法的簽名也是跟execute()一樣,即為public String login() throws Exception。 注意:要使用動態方法調用,必須設置Struts2允許動態方法調用,通過設置struts.enable.DynamicMethodInvocation常量來完成,該常量屬性的默認值是true。 3.1.1.??????示例: 修改用戶登錄驗證示例,多增加一個注冊用戶功能。 1. ???????修改Action類:
package ?org.qiujy.web.struts2.action; import ?com.opensymphony.xwork2.ActionContext; import ?com.opensymphony.xwork2.ActionSupport; /** ? * @author qiujy ? * @version 1.0 ? */ public class ?LoginAction? extends ?ActionSupport{ ???? private ?String? userName ; ???? private ?String? password ; ??? ???? private ?String? msg ;? // 結果信息屬性 ??? ???? /** ??? ? * @return the msg ??? ? */ ???? public ?String getMsg() { ???????? return msg ; ??? } ???? /** ??? ? * @param msg the msg to set ??? ? */ ???? public void ?setMsg(String msg) { ???????? this . msg ?= msg; ??? } ???? /** ??? ? * @return the userName ??? ? */ ???? public ?String getUserName() { ???????? return userName ; ??? } ???? /** ??? ? * @param userName the userName to set ??? ? */ ???? public void ?setUserName(String userName) { ???????? this . userName ?= userName; ??? } ???? /** ??? ? * @return the password ??? ? */ ???? public ?String getPassword() { ???????? return password ; ??? } ???? /** ??? ? * @param password the password to set ??? ? */ ???? public void ?setPassword(String password) { ???????? this . password ?= password; ??? } ??? ???? /** ??? ? * 處理用戶請求的 login() 方法 ??? ? * @return 結果導航字符串 ??? ? * @throws Exception ??? ? */ ???? public ?String login()? throws ?Exception{ ???????? if ( "test" .equals( this . userName ) &&? "test" .equals( this . password )){ ???????????? msg ?=? " 登錄成功,歡迎 " ?+? this . userName ; ???????????? // 獲取 ActionContext 實例,通過它來訪問 Servlet API ??????????? ActionContext context = ActionContext.getContext(); ???????????? // session 中是否已經存放了用戶名,如果存放了:說明已經登錄了; // 否則說明是第一次登錄成功 ???????????? if ( null ?!= context.getSession().get( "uName" )){ ???????????????? msg ?=? this . userName ?+? " :你已經登錄過了 !!!" ; ??????????? } else { ??????????????? context.getSession().put( "uName" ,? this . userName ); ??????????? } ??????????? ???????????? return this . SUCCESS ; ??????? } else { ???????????? msg ?=? " 登錄失敗,用戶名或密碼錯 " ; ???????????? return this . ERROR ; ??????? } ??? } ??? ???? public ?String regist()? throws ?Exception{ ???????? // 將用戶名,密碼添加到數據庫中 ???????? //... ???????? msg ?=? " 注冊成功。 " ; ???????? return this . SUCCESS ; ??? } }
2. ???????struts.xml文件:沒有什么變化,跟以前一樣配置
<! DOCTYPE? struts? PUBLIC ???????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ???????? "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > ???? < package? name = "my"? extends = "struts-default"? namespace = "/manage" > ???? <!--? 定義處理請求 URL login.action Action --> ???????? < action? name = "userOpt"? class = "org.qiujy.web.struts2.action.LoginAction" > ???????? <!--? 定義處理結果字符串和資源之間的映射關系 ?--> ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > </ struts >
3. ???????頁面: index.jsp
<%@? page? language = "java"? pageEncoding = "UTF-8" %> < html > ? < head > ???? < title > 用戶登錄頁面 </ title > ? </ head > ? ? < body > ?? < h2 > 用戶入口 </ h2 > ?? < hr > ???? < form? action = "manage/userOpt!login.action"? method = "post" > ???? < table? border = "1" > ??? ????? < tr > ??? ????????? < td > 用戶名: </ td > ??? ????????? < td >< input? type = "text"? name = "userName" /></ td > ??? ????? </ tr > ??? ????? < tr > ??? ????????? < td > 密碼: </ td > ??? ????????? < td >< input? type = "password"? name = "password" /></ td > ??? ????? </ tr > ??? ????? < tr > ??? ????????? < td? colspan = "2" > ??? ????????????? < input? type = "submit"? value = "? 確定 ?" /> ??? ????????? </ td > ??? ????? </ tr > ???? </ table > ???? </ form > ? </ body > </ html >
regist.jsp
<%@? page? language = "java"? pageEncoding = "UTF-8" %> < html > ? < head > ???? < title > 用戶注冊頁面 </ title > ? </ head > ? ? < body > ?? < h2 > 用戶注冊 </ h2 > ?? < hr > ???? < form? action = "manage/userOpt!regist.action"? method = "post" > ???? < table? border = "1" > ??? ????? < tr > ??? ????????? < td > 用戶名: </ td > ??? ????????? < td >< input? type = "text"? name = "userName" /></ td > ??? ????? </ tr > ??? ????? < tr > ??? ????????? < td > 密碼: </ td > ??? ????????? < td >< input? type = "password"? name = "password" /></ td > ??? ????? </ tr > ??? ????? < tr > ??? ????????? < td? colspan = "2" > ??? ????????????? < input? type = "submit"? value = "? 注冊 ?" /> ??? ????????? </ td > ??? ????? </ tr > ???? </ table > ???? </ form > ? </ body > </ html >
4. ???????運行結果: 3.2.????Action配置method屬性: 將Action類中的每一個處理方法都定義成一個邏輯Action方法。
<! DOCTYPE? struts? PUBLIC ???????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ???????? "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > ???? < package? name = "my"? extends = "struts-default"? namespace = "/manage" > ???????? < action? name = "userLogin"? class = "org.qiujy.web.struts2.action.LoginAction"? method = "login" > ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ??????? ???????? < action? name = "userRegist"? class = "org.qiujy.web.struts2.action.LoginAction" method = "regist" > ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > </ struts >
如上,把LoginAction中的login和regist方法都配置成邏輯Action。要調用login方法,則相應的把index.jsp中表單元素的action設置為"manage/userLogin.action";要調用regist方法,把regist.jsp中表單元素的action設置為"manage/userRegist.action"。 3.3.????使用通配符映射(wildcard mappings)方式: 在struts.xml文件中配置<action…>元素時,它的name、class、method屬性都可支持通配符,這種通配符的方式是另一種形式的動態方法調用。 當我們使用通配符定義Action的name屬性時,相當于用一個元素action定義了多個邏輯Action:
< action? name = "user_*" class = "org.qiujy.web.struts2.action.UserAction"? method = "{1}" > ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action >
如上,<action name=”user_*”>定義一系列請求URL是user_*.action模式的邏輯Action。同時method屬性值為一個表達式{1},表示它的值是name屬性值中第一個*的值。例如:用戶請求URL為user_login.action時,將調用到UserAction類的login方法;用戶請求URL為user_regist.action時,將調用到UserAction類的regist方法。 4.????處理結果 Struts2的Action處理完用戶請求后,將返回一個普通字符串,整個普通字符串就是一個邏輯視圖名。Struts2通過配置邏輯視圖名和物理視圖資源之間的映射關系,一旦系統收到Action返回的某個邏輯視圖名,系統就會把對應的物理視圖資源呈現給瀏覽者。 4.1.????配置處理結果: Struts2的Action處理用戶請求結束后,返回一個普通字符串-邏輯視圖名,必須在struts.xml文件中完成邏輯視圖和物理視圖資源的映射,才可讓系統轉到實際的視圖資源。 Struts2通過在struts.xml文件中使用<result …/>元素來配置結果。Struts2提供了兩種結果。 l?局部結果:將<result …/>作為<action …>元素的子元素配置。 l?全局結果:將<result …/>作為<global-results …>元素的子元素配置。 在package元素中配置<global-results>子元素:
<global-results> <result name="error">/Error.jsp</result> <result name="invalid.token">/Error.jsp</result> <result name="login" type="redirect-action">Logon!input</result> </global-results>
4.2.????處理結果類型: Struts2提供了對不同種類返回結果的支持,常見的有JSP,FreeMarker,Velocity等。 Struts2支持的不同類型的返回結果為:
名字 說明
chain 用來處理Action鏈
dispatcher 用來轉向頁面,通常處理JSP,這是默認的結果類型
freeMarker 處理FreeMarker模板
httpHeader 用來控制特殊的Http行為
redirect 重定向到一個URL
redirect-action 重定向到一個Action
stream 向瀏覽器發送InputSream對象,通常用來處理文件下載
velocity 處理Velocity模板
xslt 處理XML/XLST模板
plaintext 顯示原始文件內容,例如文件源代碼
tiles 結合Tile使用
另外第三方的Result類型還包括JasperReports Plugin,專門用來處理JasperReport類型的報表輸出;Jfreechart Plugin;JSF Plugin。 4.3.????動態返回結果 有些時候,只有當Action執行完畢的時候我們才知道要返回哪個結果,這個時候我們可以在Action內部定義一個屬性,這個屬性用來存儲Action執行完畢之后的result值,例如:
private String nextAction; public String getNextAction() { return nextAction; }
在strutx.xml配置文件中,我們可以使用${nextAction}來引用到Action中的屬性,通過${nextAction}表示的內容來動態的返回結果,例如:
<action name="fragment" class="FragmentAction"> <result name="next" type="redirect-action">${nextAction}</result> </action>
上述Action的execute方法返回next的時候,還需要根據nextAction的屬性來判斷具體定位到哪個Action。 5.????屬性驅動和模型驅動 不管屬性驅動還是模型驅動,Struts2框架都是通過攔截器負責提取請求參數,并將請求數據封裝到相應的Action實例的屬性或專門的模型的屬性。 5.1.????屬性驅動: 屬性驅動就是屬性(property)作為貫穿MVC流程的信息攜帶者。簡單的說,就是使用Action實例來封裝請求參數和處理結果信息。前面我們做的示例都屬于屬性驅動模式。 5.2.????模型驅動: 模型驅動就是使用單獨的javaBean作為貫穿整個MVC流程的信息攜帶者。也就是說,使用單獨的VO(值對象)來封裝請求參數和處理結果信息。 示例:繼續修改用戶登錄驗證: 1. ???????新增一用戶域模型對象:User.java
package ?org.qiujy.domain; public class ?User { ???? private ?String? userName ; ???? private ?String? password ; ???? /** ??? ? * @return the userName ??? ? */ ???? public ?String getUserName() { ???????? return userName ; ??? } ???? /** ??? ? * @param userName the userName to set ??? ? */ ???? public void ?setUserName(String userName) { ???????? this . userName ?= userName; ??? } ???? /** ??? ? * @return the password ??? ? */ ???? public ?String getPassword() { ???????? return password ; ??? } ???? /** ??? ? * @param password the password to set ??? ? */ ???? public void ?setPassword(String password) { ???????? this . password ?= password; ??? } }
2. ???????業務控制器:UserAction.java
package ?org.qiujy.web.struts2.action; import ?org.qiujy.domain.User; import ?com.opensymphony.xwork2.ActionContext; import ?com.opensymphony.xwork2.ActionSupport; public class ?UserAction? extends ?ActionSupport{ ???? // 定義用于封裝請求參數的模型對象 ???? private ?User? user ?=? new ?User(); ??? ???? private ?String? msg ;? // 結果信息屬性 ??? ???? /** ??? ? * @return the user ??? ? */ ???? public ?User getUser() { ???????? return user ; ??? } ???? /** ??? ? * @param user the user to set ??? ? */ ???? public void ?setUser(User user) { ???????? this . user ?= user; ??? } ???? /** ??? ? * @return the msg ??? ? */ ???? public ?String getMsg() { ???????? return msg ; ??? } ???? /** ??? ? * @param msg the msg to set ??? ? */ ???? public void ?setMsg(String msg) { ???????? this . msg ?= msg; ??? } ??? ???? /** ??? ? * 處理用戶請求的 login() 方法 ??? ? * @return 結果導航字符串 ??? ? * @throws Exception ??? ? */ ???? public ?String login()? throws ?Exception{ ??????? String userName =? user .getUserName(); ??????? String password =? user .getPassword(); ??????? ???????? if ( "test" .equals(userName) &&? "test" .equals(password)){ ???????????? msg ?=? " 登錄成功,歡迎 " ?+ userName; ???????????? // 獲取 ActionContext 實例,通過它來訪問 Servlet API ??????????? ActionContext context = ActionContext.getContext(); ???????????? // session 中是否已經存放了用戶名,如果存放了:說明已經登錄了;否則說明是第一次登錄成功 ???????????? if ( null ?!= context.getSession().get( "uName" )){ ???????????????? msg ?= userName +? " :你已經登錄過了 !!!" ; ??????????? } else { ??????????????? context.getSession().put( "uName" , userName); ??????????? } ??????????? ???????????? return this . SUCCESS ; ??????? } else { ???????????? msg ?=? " 登錄失敗,用戶名或密碼錯 " ; ???????????? return this . ERROR ; ??????? } ??? } ??? ???? public ?String regist()? throws ?Exception{ ???????? // 將用戶名,密碼添加到數據庫中 ???????? //... ???????? msg ?=? " 注冊成功。 " ; ???????? return this . SUCCESS ; ??? } }
3. ???????配置文件:struts.xml
<! DOCTYPE? struts? PUBLIC ???????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ???????? "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > ???? < package? name = "my"? extends = "struts-default"? namespace = "/manage" > ???????? < action? name = "userOpt"? class = "org.qiujy.web.struts2.action.UserAction" > ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > </ struts >
4. ???????頁面: index.jsp
<%@? page? language = "java"? pageEncoding = "UTF-8" %> < html > ? < head > ???? < title > 用戶登錄頁面 </ title > ? </ head > ? ? < body > ?? < h2 > 用戶入口 </ h2 > ?? < hr > ???? < form? action = "manage/userOpt!login.action"? method = "post" > ???? < table? border = "1" > ??? ????? < tr > ??? ????????? < td > 用戶名: </ td > ??? ????????? < td > < input? type = "text"? name = "user.userName" /> </ td > ??? ????? </ tr > ??? ????? < tr > ??? ????????? < td > 密碼: </ td > ??? ????? < td > <input type="password" name="user.password"/> </ td > ??? ????? </ tr > ??? ????? < tr > ??? ????????? < td? colspan = "2" > ??? ????????????? < input? type = "submit"? value = "? 確定 ?" /> ??? ????????? </ td > ??? ????? </ tr > ???? </ table > ???? </ form > ? </ body > </ html >
其它頁面略。 5. ???????運行效果:同以前一樣。 6. ???????源代碼: 6.????Struts2的異常處理機制: 任何成熟的MVC框架都應該提供成就的異常處理機制。Strut2也不例外。Struts2提供了一種聲明式的異常處理方式。Struts2也是通過配置的攔截器來實現異常處理機制的。 Struts2的異常處理機制通過在struts.xml文件中配置<exception-mapping …>元素完成的,配置該元素時,需要指定兩個屬性: exception:此屬性指定該異常映射所設置的異常類型。 result:此屬性指定Action出現該異常時,系統轉入result屬性所指向的結果。 6.1.????異常映射也分為兩種: l?局部異常映射:<exception-mapping…>元素作為<action…>元素的子元素配置。 l?全局異常映射:<exception-mapping…>元素作為<global-exception-mappings>元素的子元素配置。 6.2.????輸出異常信息: 使用Struts2的標簽來輸出異常信息: l?<s:property value="exception.message"/> : 輸出異常對象本身。 l?<s:property value="exceptionStack"/> : 輸出異常堆棧信息。 6.3.????示例: 還是修改用戶登錄示例: 1) ??????把UserAciton.java中的regist方法改成:
public ?String regist()? throws ?Exception{ ???????? // 將用戶名,密碼添加到數據庫中 ???????? //... ???????? //msg = " 注冊成功。 "; ???????? if ( true ){ ??????????? throw new ?java.sql.SQLException( " 沒有數據庫驅動程序 " ); ?????? } ??????? ???????? return this.SUCCESS; ??? }
2) ??????修改struts.xml文件:
<! DOCTYPE? struts? PUBLIC ???????? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ???????? "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > ???? < package? name = "my"? extends = "struts-default"? namespace = "/manage" > ???????? <!--? 定義全局處理結果 ?--> ???????? < global-results > ???????? <!--? 邏輯名為 sql 的結果,映射到 /exception.jsp 頁面 ?--> ???????? < result? name = "sql" > /exception.jsp </ result > ???????? </ global-results > ??????? ???????? < global-exception-mappings > ???????? <!--? Action 拋出 SQLException 異常時,轉入名為 sql 的結果 ?--> ???????? < exception-mapping? exception = "java.sql.SQLException"? result = "sql" /> ???????? </ global-exception-mappings > ??????? ???????? < action? name = "userOpt"? class = "org.qiujy.web.struts2.action.UserAction" > ???????????? < result? name = "success" > /success.jsp </ result > ???????????? < result? name = "error" > /error.jsp </ result > ???????? </ action > ???? </ package > </ struts >
3) ??????新增一頁面:exception.jsp
<%@? page? language = "java"? pageEncoding = "utf-8" %> <%@? taglib? uri = "/struts-tags"? prefix = "s"? %> < html > ? < head > ???? < title > 異常信息 </ title > ? </ head > ? ? < body > ? < h2 > ? 出現異常啦 ? </ h2 > ? < hr /> ??? < h3? style = "color:red" > ??? <!--? 獲得異常對象 ?--> ???? < s:property? value = "exception.message" /> ???? </ h3 > ???? < br /> ???? <!--? 異常堆棧信息 ?--> ???? < s:property? value = "exceptionStack" /> </ html >
4) ??????運行regist.jsp進行調試:

轉載于:https://my.oschina.net/softwarechina/blog/135951

總結

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

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

国产视频手机在线 | 国产精品高潮呻吟久久久久 | 亚洲一区视频免费观看 | 国产手机视频 | 天天操网站 | 日韩三级视频在线看 | 欧美日韩中 | 国产又粗又长的视频 | 欧美午夜精品久久久久久浪潮 | 久久人人爽人人人人片 | 国产伦理剧 | 夜添久久精品亚洲国产精品 | 国产又粗又猛又爽又黄的视频先 | 中文字幕免费高 | 精品国产乱码久久久久久浪潮 | 国产亚洲综合在线 | 特黄特色特刺激视频免费播放 | 久草色在线观看 | 综合成人在线 | 中文字幕亚洲国产 | 国产精品美女久久久久久久网站 | 国产精品毛片一区视频播 | 日韩激情中文字幕 | 欧美日韩三级 | 色在线视频网 | 国内精品视频一区二区三区八戒 | 欧美国产日韩中文 | 日韩欧美在线综合网 | 免费在线观看日韩欧美 | 亚洲精品456在线播放第一页 | 日韩免费大片 | 久久国内精品99久久6app | 国产免费三级在线观看 | 黄色av影院 | 日韩午夜在线观看 | h网站免费在线观看 | av国产网站 | 久久免费一级片 | 97看片吧| 亚洲欧美日韩精品久久久 | 奇人奇案qvod| 国产精品9区 | 久久精品免视看 | 性色av免费看 | 在线免费观看黄色大片 | 精品国产99国产精品 | 狠狠色丁香久久综合网 | 黄色在线看网站 | 国产一级黄色电影 | 麻豆久久久久 | 久久黄色网页 | 91精品国产综合久久婷婷香蕉 | 欧美夫妻生活视频 | 亚洲成av人片在线观看www | 国产最新视频在线观看 | 亚洲国产精品va在线看黑人 | 中文字幕在线观看一区 | 五月婷婷中文字幕 | 99久久精| 久久精品中文 | av色图天堂网 | 亚洲激情在线 | 狠狠色丁香婷婷综合橹88 | 国产美女视频免费观看的网站 | 三级av在线免费观看 | 国产精品精品 | 九九免费精品视频在线观看 | 欧美男男激情videos | 国外av在线 | 手机av在线免费观看 | 2000xxx影视 | 免费看av片网站 | 亚洲精品在线免费看 | 欧美精品久久久久久久久久久 | 97视频人人澡人人爽 | 麻豆一区二区三区视频 | 久久精品一二三 | 亚洲精品午夜视频 | 日韩网站中文字幕 | 美女av在线免费 | 婷婷资源站 | 东方av免费在线观看 | 日韩久久视频 | 最近乱久中文字幕 | 久久综合射 | 久久综合色播五月 | 夜夜爽88888免费视频4848 | 亚洲精品在线免费看 | 国产在线视频一区 | 日韩伦理片一区二区三区 | 久久影院午夜论 | 欧美成人日韩 | 香蕉视频国产在线观看 | 99热在线国产 | 亚洲精品在线一区二区 | 91av在线免费视频 | 欧美夫妻性生活电影 | 91成人网在线 | 在线国产日本 | 激情综合亚洲 | 国产在线观看你懂得 | 97成人在线免费视频 | 五月天婷婷在线播放 | 在线视频在线观看 | 五月开心六月伊人色婷婷 | 毛片基地黄久久久久久天堂 | 日韩一区精品 | 久草91视频 | 在线看欧美 | 欧美日韩3p | 激情五月色播五月 | 91精品久久香蕉国产线看观看 | 美女网站在线看 | 91精品在线免费观看视频 | 欧美精品在线观看一区 | 四虎在线观看精品视频 | 国产青青青 | 国产第一页在线观看 | 国产精品视频你懂的 | 亚洲欧洲国产日韩精品 | 黄色一级在线视频 | 全黄网站 | 日韩在线视频网站 | 九九九热 | 日本女人b | 国产不卡在线视频 | 成人av在线播放网站 | 国产99久久久国产精品免费看 | 808电影免费观看三年 | 91大神电影 | 日本电影久久 | 在线看片日韩 | 久久免费视频5 | 日女人免费视频 | 国产精品完整版 | 国产精品粉嫩 | 色网站免费在线观看 | 国产视频观看 | 精品亚洲va在线va天堂资源站 | 亚洲综合色av | 中文字幕国内精品 | 91免费日韩 | 久草剧场| 一级黄色在线免费观看 | 国产在线理论片 | 精品欧美小视频在线观看 | av黄在线播放 | 国产91欧美| 美女国内精品自产拍在线播放 | 99精品国产在热久久下载 | 国产1区2区3区精品美女 | 伊人色综合久久天天 | 精品国模一区二区 | 中文字幕在线观看免费高清完整版 | 欧美日韩久| 欧美精品久久久久a | freejavvideo日本免费 | 成人免费 在线播放 | 日本黄色免费电影网站 | 天天操婷婷 | 麻豆视频国产在线观看 | 欧美国产91 | 99久久99久久精品免费 | 中文字幕人成乱码在线观看 | 一区二区三区视频网站 | 成人免费观看在线视频 | av片一区二区| 免费日韩视频 | 精品一区二区精品 | 午夜久久久久久久久 | 中文字幕网站 | 欧美福利久久 | 久久96国产精品久久99软件 | 91激情小视频 | 免费观看一区二区 | 少妇视频一区 | 天天操夜夜操天天射 | 97视频入口免费观看 | 99精品欧美一区二区 | 韩国一区二区三区在线观看 | 日韩精品一区二区在线观看 | 国产精品美女久久 | 国产综合视频在线观看 | 天天操天天操天天操 | 国产日韩在线一区 | 亚洲视屏 | 99久久精品国产亚洲 | 黄网站免费大全入口 | 色综合网在线 | 久久三级毛片 | 97精品国产手机 | 激情五月婷婷综合 | 91热视频在线观看 | 亚洲视屏在线播放 | 国产精品久久久免费看 | 午夜精品久久久99热福利 | 六月婷操 | 久久综合久久综合这里只有精品 | 亚洲精品中文在线 | 久久精品亚洲精品国产欧美 | 婷婷色社区| 在线观看免费视频 | 欧美国产日韩一区二区三区 | 少妇bbbb搡bbbb搡bbbb | 日韩在线 一区二区 | 日韩视频a| 在线观看亚洲精品视频 | 视频成人永久免费视频 | 97福利在线观看 | 国产成人av免费在线观看 | 一区二区丝袜 | 99久久综合国产精品二区 | 在线看一区二区 | 91色吧| 91精品夜夜 | 国产91精品一区二区麻豆亚洲 | 一区在线电影 | 激情五月亚洲 | 黄色app网站在线观看 | 日韩免费三级 | 国产福利一区二区三区视频 | 国模视频一区二区 | www久久久 | 激情综合五月天 | 中文在线| 99久久99久久精品国产片果冰 | 91麻豆操| 国产成人精品三级 | 国产精品久久久久一区二区国产 | 91精品在线观看视频 | 超碰在线人 | 久草在线免费看视频 | 成人91在线观看 | 六月婷色 | 91亚色在线观看 | 久久久久www| 精品国产伦一区二区三区 | 亚洲不卡123 | 五月天婷婷在线观看视频 | 久久久精品视频网站 | 日本少妇高清做爰视频 | 一本色道久久综合亚洲二区三区 | 在线观看黄色的网站 | 久久中文网 | 国内精品免费久久影院 | 在线观看你懂的网址 | 国产九九九九九 | 亚州中文av | 久久亚洲热 | 在线观看免费黄色 | 国产婷婷vvvv激情久 | 国产精品美乳一区二区免费 | 日韩亚洲精品电影 | 在线播放日韩 | 国产欧美精品xxxx另类 | 乱子伦av | 五月婷婷狠狠 | 国产精品99久久久久人中文网介绍 | 久久久精品综合 | aaa黄色毛片 | 成人一级片视频 | 亚洲伊人成综合网 | 91免费版在线观看 | 色www精品视频在线观看 | 丁香网五月天 | 欧美一级日韩三级 | 久久首页 | 欧美视频一区二 | 欧美一级黄色视屏 | 色999精品 | 精品国产aⅴ麻豆 | 在线观看黄网站 | 久久视频99| 国产精品激情在线观看 | 色九九影院 | 久久国产精品免费 | 国产精品久久久久久久久久久久午 | 久久久午夜影院 | 国产精品ⅴa有声小说 | 色多多在线观看 | 手机av电影在线 | 亚洲一级电影 | 欧美极品在线播放 | 欧美精品在线一区二区 | 久99视频 | 天天爽综合网 | 97超碰免费 | 国产精品久久久久久久久久久久久 | 久久99国产精品久久99 | 国产精品福利无圣光在线一区 | 青青河边草手机免费 | 久草在线在线精品观看 | 亚洲一区视频免费观看 | 日韩精品一区二区在线视频 | 在线观看国产一区 | 日韩激情第一页 | 91免费网址 | 日韩av网页 | 91一区啪爱嗯打偷拍欧美 | 一区二区精品在线 | 日韩精品一区二区三区视频播放 | 日韩毛片一区 | 久久精品99国产国产 | 99久久网站 | 久久久久亚洲精品 | 久久国产a | 国产999精品 | 顶级欧美色妇4khd | 久久久精品小视频 | 国产黄色在线网站 | 欧美地下肉体性派对 | 天天狠狠干 | 97国产精品亚洲精品 | 香蕉精品视频在线观看 | 97在线观看视频 | 在线观看黄色大片 | 久久久久久国产精品久久 | 久久国产剧场电影 | 欧美国产日韩一区二区三区 | 天天色天天操天天爽 | 黄色片软件网站 | 不卡的一区二区三区 | 欧美精品xxx| 亚洲天堂网视频在线观看 | 婷婷中文字幕 | 91豆花在线观看 | 综合国产在线观看 | 日韩色一区二区三区 | 久久99精品久久久久久久久久久久 | 主播av在线 | 香蕉视频在线视频 | 国产专区欧美专区 | 国产日韩欧美中文 | 欧美日韩在线观看不卡 | 日韩高清在线看 | 亚洲国产精品va在线看黑人 | 国产精品久久久久久模特 | 91免费日韩 | 欧美伦理一区 | 久久成人综合视频 | 国内精品毛片 | 日韩av成人在线观看 | 日本精品久久久久 | 欧美日韩在线免费观看视频 | 日韩精品一区二区三区不卡 | 天天干天天摸天天操 | 亚洲国产精品激情在线观看 | 69精品久久 | 91亚洲在线 | 久久综合影院 | 国内精品中文字幕 | 国产黄色片在线 | 在线看黄色av | 免费91麻豆精品国产自产在线观看 | 日韩aⅴ视频 | 久久99精品久久只有精品 | 91久久丝袜国产露脸动漫 | 91久久国产露脸精品国产闺蜜 | 中文字幕免费久久 | 中文字幕日本特黄aa毛片 | 高清一区二区三区av | 欧美看片 | 国产在线永久 | 成人a视频 | 三级在线国产 | 亚洲综合一区二区精品导航 | 久久九九免费视频 | aⅴ视频在线| 亚洲理论在线观看电影 | 国内精品一区二区 | 成人免费视频网址 | 久久理论影院 | 久视频在线播放 | 日韩美女一级片 | 色六月婷婷| 狠狠狠狠狠干 | 日韩中文字幕电影 | 成人免费网站视频 | 亚洲激情精品 | 欧美精品网站 | 久久精品欧美日韩精品 | 人人爽人人搞 | 天天综合在线观看 | 国产成人在线免费观看 | av免费网站在线观看 | 99国产免费网址 | 999久久a精品合区久久久 | 五月天亚洲激情 | 成人av电影在线 | 亚洲五月综合 | www99久久| 国产高清视频免费观看 | 在线观看完整版 | 中文字幕视频一区二区 | 国产手机视频在线播放 | 国产在线不卡视频 | 久久69av | 少妇bbw搡bbbb搡bbb | 欧美日韩精品二区第二页 | 亚洲国产色一区 | 在线免费黄色 | 精品国产乱码一区二区三区在线 | 欧美成人91| 在线中文视频 | 国产成人精品一区二区在线观看 | 一级成人免费 | 中文字幕在线一区二区三区 | 中文字幕久久网 | 成年人免费电影 | 中文字幕文字幕一区二区 | 国产麻豆精品95视频 | 三级免费黄 | www.干| 精品黄色在线观看 | 又黄又爽免费视频 | 亚洲精品美女久久17c | 中文字幕高清免费日韩视频在线 | 97小视频| 久久一线| 国产无套精品久久久久久 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 日韩网站在线播放 | 高清不卡毛片 | 999在线视频| 草久在线播放 | 欧美久久久久久久久中文字幕 | 精品久久毛片 | 人人干在线 | 国产精品免费麻豆入口 | 久久精品牌麻豆国产大山 | 婷婷激情站 | 香蕉在线观看视频 | 国产精品久久综合 | 国内精品久久久久久中文字幕 | 婷婷色视频 | 国产电影黄色av | 日本性高潮视频 | 国产精品久久一 | 九九亚洲视频 | 亚洲精品视 | 亚洲精品www | av久久久久久 | 国产一级不卡视频 | 久久国产精品99久久人人澡 | 综合亚洲视频 | 欧美亚洲久久 | 国产日韩视频在线播放 | 免费福利影院 | 最近日韩中文字幕中文 | 中日韩三级视频 | 在线观看视频在线观看 | 免费看日韩片 | 91成人黄色 | 久久人人爽人人爽 | av网在线观看 | 97国产在线播放 | 久久久久久久久久久久av | 国产一区成人 | 日韩剧情 | 中国美女一级看片 | 国产日产精品一区二区三区四区 | 女人高潮特级毛片 | 亚洲第一久久久 | 成人性生交大片免费观看网站 | 免费av在| 国产高清在线一区 | 黄色三级免费网址 | 欧美在线一级片 | 色资源二区在线视频 | 国产区网址 | 成人免费在线观看电影 | 色婷婷狠狠五月综合天色拍 | 亚洲色图美腿丝袜 | 免费开视频 | 亚洲精品资源在线 | 国产精品成人久久久久久久 | 久久久69 | 久久av免费 | 色丁香色婷婷 | 五月激情天 | 黄色小视频在线观看免费 | 99视频精品免费观看, | 九九九热精品免费视频观看 | 欧美日韩在线精品一区二区 | 蜜臀av在线一区二区三区 | 91精品啪啪 | 韩国一区在线 | 91免费试看 | 又黄又刺激| 免费在线观看午夜视频 | 亚洲aⅴ乱码精品成人区 | 久久久久女教师免费一区 | 91成人看片 | 国产亚洲欧洲 | 欧美日韩视频在线 | 97av视频在线 | 丝袜美腿亚洲 | 国产黄色精品在线 | 日韩免费网站 | 一区二区三区中文字幕在线观看 | 久久久久久久久久福利 | 在线一级片 | www.五月天 | 日本中文字幕在线一区 | 天天操天天操天天干 | 日本不卡123 | 国产午夜一级毛片 | 久草www| 久操中文字幕在线观看 | 色成人亚洲 | 性色av免费看| 女人高潮特级毛片 | 久久久久久久久久电影 | 一级成人免费 | 婷婷精品国产一区二区三区日韩 | 亚洲综合在线五月天 | 欧美日韩精品在线 | 久久久久国产精品免费免费搜索 | 亚洲视频分类 | 成人av电影在线观看 | 天天舔天天射天天操 | 中文字幕成人一区 | av免费网站观看 | 精品免费在线视频 | 人人澡澡人人 | 成人免费看片98欧美 | 久久另类小说 | 黄网站大全 | av资源在线观看 | 色吊丝av中文字幕 | av丁香花 | 日韩3区 | 日韩精品亚洲专区在线观看 | 国产日韩在线播放 | 国产一级视频在线免费观看 | 国产成人综 | 五月天久久狠狠 | 亚洲日韩中文字幕 | 欧美日韩高清国产 | 国产视频导航 | 国产一区二区精品久久 | 欧美a在线免费观看 | 免费国产在线视频 | 国产免费xvideos视频入口 | 人人澡超碰碰97碰碰碰软件 | 欧美日韩免费一区二区 | 我要看黄色一级片 | 午夜久久久影院 | 日韩a在线 | 免费激情网 | 国产精品短视频 | 国产裸体bbb视频 | 精品黄色在线观看 | 91黄视频在线观看 | 国产在线p | 97视频免费在线 | 亚洲国产精品99久久久久久久久 | av黄在线播放 | 香蕉视频国产在线观看 | 久久激情影院 | 日日爽夜夜操 | 91丨九色丨国产丨porny精品 | 午夜精品一区二区三区在线播放 | 久久久精品欧美一区二区免费 | 久久欧美视频 | 中文国产在线观看 | 91丨九色丨丝袜 | 视频在线观看入口黄最新永久免费国产 | 亚洲热视频 | 久久免费视频在线观看6 | 国产精品嫩草69影院 | 国产美女在线免费观看 | 久久视频99| 中文字幕在线观看不卡 | 欧美日本不卡 | 又色又爽又黄 | 亚洲在线日韩 | av免费片 | 最新超碰在线 | 啪嗒啪嗒免费观看完整版 | 国产一区二区三区视频在线 | 中文字幕999 | 一级片观看 | 久久久五月天 | 国产精品国产自产拍高清av | 亚洲国产中文在线 | 欧美日韩国产在线观看 | 99国产精品 | 美女网站视频色 | 亚洲天堂va | 视频91在线| 国产在线播放观看 | 久久人人爽人人片 | 黄色精品网站 | 久草线| 啪啪免费视频网站 | 免费在线观看av不卡 | 美女精品国产 | 国产精品一区二区av日韩在线 | 337p日本欧洲亚洲大胆裸体艺术 | 激情黄色av | 久久久.com | 久久久黄色免费网站 | 九九九九九九精品 | 欧美午夜精品久久久久 | 国产精品美女久久久久久2018 | 精品99999| 国产热re99久久6国产精品 | 草久久久| 92中文资源在线 | 天天色.com | 黄网在线免费观看 | 97在线看片| 久久a免费视频 | 国产精品国内免费一区二区三区 | 精品国产资源 | 美女在线观看网站 | 婷香五月| 人九九精品 | 久久国产a | 九九免费在线观看视频 | 国产一区二区免费在线观看 | 色香蕉在线视频 | 337p日本欧洲亚洲大胆裸体艺术 | 主播av在线| 偷拍久久久 | 日韩精品免费在线 | 国产成人久久久77777 | 久草视频观看 | 99精品免费在线观看 | 日韩中文字幕免费视频 | av电影一区 | 99色国产| 免费亚洲黄色 | 天天综合91| 国产黄在线免费观看 | 国产亚洲精品久久久久秋 | 欧洲色综合 | 2019中文最近的2019中文在线 | 黄色大片视频网站 | 精品久久久免费 | 亚洲综合小说 | 亚洲欧洲日韩 | 93久久精品日日躁夜夜躁欧美 | 久久久九九 | 国产视频一区精品 | 一区二区三区日韩视频在线观看 | 久久免费片 | 欧美 激情 国产 91 在线 | 日韩欧美一区二区三区视频 | 最近免费中文字幕大全高清10 | 免费毛片aaaaaa| 亚洲特级毛片 | 国产亚洲日 | 色综合夜色一区 | 久久精品国产免费看久久精品 | 午夜丁香视频在线观看 | 伊人国产在线观看 | 一本一道波多野毛片中文在线 | 在线免费观看视频一区 | 成人在线电影观看 | 欧美日韩高清免费 | 日本激情中文字幕 | 国产精品久久久久久久久久久久午夜片 | 香蕉国产91 | 日韩在线色视频 | 在线观看一区 | 国产成人一级电影 | 最新国产在线视频 | 97精品欧美91久久久久久 | 国产亚洲精品久久久久久久久久久久 | 91精品夜夜 | 亚洲一级影院 | 欧美日韩另类视频 | 免费91在线 | 国产一级片网站 | 亚洲精品一区二区精华 | mm1313亚洲精品国产 | 欧美一级高清片 | 日本中文字幕在线免费观看 | 日韩视频1区 | 免费亚洲精品 | 九九热在线观看 | 4438全国亚洲精品在线观看视频 | 狠狠黄 | 国产成人高清 | 日韩视频免费观看高清 | 在线成人欧美 | 五月婷婷在线视频观看 | 视频国产 | 韩国av免费看 | 97超碰在 | 天天狠狠操 | 亚洲国产精品小视频 | 国产亚洲精品久久19p | 91系列在线 | 黄色特级一级片 | 色av男人的天堂免费在线 | 亚洲综合色丁香婷婷六月图片 | 美女网站视频色 | 亚洲欧美视频在线观看 | 国产精品日韩久久久久 | 欧美人体xx | 在线免费观看视频一区二区三区 | 国产日韩精品一区二区在线观看播放 | av在线电影播放 | 国产高清一区二区 | 最新av网址在线观看 | 国内久久精品视频 | 中文一区二区三区在线观看 | 波多野结衣电影一区二区三区 | 亚洲精品国产精品国自产 | www免费在线观看 | 中文在线字幕免 | 久久99国产综合精品 | 黄影院| 91视频这里只有精品 | 亚洲欧洲成人 | 日韩在线短视频 | 黄色免费网站 | 在线免费中文字幕 | 91资源在线播放 | 热久久这里只有精品 | 日韩高清无线码2023 | 四虎影视精品永久在线观看 | 国产在线精品一区二区三区 | 国产中文字幕三区 | 最近中文字幕国语免费av | 欧美日韩aaaa | 日本在线中文在线 | 午夜电影一区 | 亚洲成人黄色 | 免费看黄在线看 | 久草爱视频 | 99在线精品视频观看 | 国内精品亚洲 | 中文字幕在线观看完整版 | 久草在线视频免费资源观看 | 久久视频在线免费观看 | 欧美日韩精品在线免费观看 | 国产 日韩 在线 亚洲 字幕 中文 | 懂色av一区二区在线播放 | av国产网站 | 182午夜在线观看 | 日韩二区在线播放 | 深夜激情影院 | 欧美精品免费视频 | 操操操影院 | 国产中文字幕视频在线观看 | 久久久成人精品 | 97av影院| 天天久久综合 | 日韩一三区 | 九九久久免费视频 | 国产91精品看黄网站在线观看动漫 | 四虎最新域名 | 黄污在线观看 | 色94色欧美 | 成人一区二区在线 | 国产精品99久久久久久武松影视 | 国产一级电影 | 国产无套精品久久久久久 | 99久久国产免费,99久久国产免费大片 | 激情综合网天天干 | 精品国产一区二区三区在线观看 | 天天操天天插 | 精品久久久久久久久久久久 | 国产一区二区成人 | 国产精品一区二区三区久久 | 国产手机在线播放 | 激情婷婷在线观看 | 婷婷久久综合网 | 99在线免费观看 | 久久99精品久久久久久秒播蜜臀 | 欧美日韩有码 | 久久99精品久久久久久三级 | 超级碰碰碰免费视频 | 午夜精品久久久久久久99热影院 | 欧美贵妇性狂欢 | 久久综合桃花 | 91热爆视频 | 精品一区二区免费在线观看 | 日日日爽爽爽 | 国产剧情亚洲 | 久久欧美综合 | 国产成免费视频 | 国产在线视频一区二区 | 中文字幕黄色av | 在线观看色网 | 国产亚洲欧美一区 | 婷婷综合在线 | 久久综合狠狠综合久久综合88 | 天天操天天射天天添 | 色婷婷99| 日日干网址| 国产精品自产拍在线观看桃花 | 婷婷丁香五 | 在线看成人av | 色停停五月天 | 四虎影视久久久 | 伊人色播 | 三级黄色大片在线观看 | 美女黄频视频大全 | 久久精品久久99精品久久 | 久久国产剧场电影 | 国产精品久久免费看 | 亚洲三级在线播放 | av高清在线| 国产麻豆果冻传媒在线观看 | 91精品伦理 | 91在线免费播放 | 蜜臀aⅴ国产精品久久久国产 | 国产伦精品一区二区三区照片91 | 欧美日韩精品影院 | 中文字幕一区二区三 | 成人三级网站在线观看 | 最新91在线视频 | 欧美国产一区在线 | 人人爽爽人人 | 国产精品精品久久久 | 久久女同性恋中文字幕 | 精品视频久久久久久 | 色综合五月 | 六月丁香婷婷网 | www.久久99| 黄色高清视频在线观看 | 久久国产精品久久w女人spa | 蜜桃视频色 | 五月婷婷伊人网 | 欧美国产不卡 | 成人福利在线观看 | 欧美一区二区三区在线视频观看 | 日韩欧美在线一区二区 | 女女av在线 | 999久久国产精品免费观看网站 | 久久理论片| 超碰在线网 | 久久成人国产精品免费软件 | 一本一道久久a久久精品 | 久久久久久久久久久影院 | 97超视频 | 国产精品久久久久一区 | 国产成人精品综合久久久久99 | 亚洲综合小说 | 中文字幕在线观看免费高清电影 | 毛片区| free. 性欧美.com| 日韩三级免费观看 | 欧美精品久久久久久久久久 | av在线影片 | 福利av影院| 欧美国产精品久久久久久免费 | 亚洲激情 欧美激情 | 丁香综合激情 | 日日干,天天干 | 中文字幕亚洲不卡 | 国产精品99精品 | 久久精品在线 | 免费在线观看国产黄 | av网址在线播放 | 91免费视频黄 | 国产午夜在线观看 | 色香com.| 亚洲天堂网视频在线观看 | 在线蜜桃视频 | 一级一片免费观看 | 日本丶国产丶欧美色综合 | av最新资源 | 免费一级片在线观看 | 一级片免费观看视频 | 日本公乱妇视频 | 国产专区精品 | 在线观看国产亚洲 | 免费av网站观看 | 亚洲精区二区三区四区麻豆 | 欧美日韩1区 | 综合五月婷婷 | 成人午夜影院 | 91精品电影 | 丰满少妇对白在线偷拍 | a级片韩国 | 亚洲一级二级 | 免费黄色a网站 | 亚洲成a人片77777kkkk1在线观看 | 永久av免费在线观看 | 99精品在线| 81国产精品久久久久久久久久 | 九九精品视频在线看 | 亚洲成av人片在线观看无 | 久久久久伊人 | www.狠狠色| 天天操网址 | 中文字幕一区二区三区视频 | 欧美精品久久久久久久久久久 | 又黄又爽又无遮挡免费的网站 | 国产精品毛片一区二区 | 超碰久热| 国产高清日韩欧美 | 亚洲成av人片在线观看 | 成人av教育 | 免费大片黄在线 | 国产视频欧美视频 | 波多野结衣在线视频一区 | 免费精品久久久 | 网站在线观看你们懂的 | 视频国产在线 | 91麻豆精品国产91久久久无限制版 | 成 人 黄 色 免费播放 | 美女视频永久黄网站免费观看国产 | 国产亚洲成人网 | 亚洲二区精品 | 午夜视频在线观看欧美 | 亚洲乱码中文字幕综合 | 国产精品入口麻豆www | 国产免费一区二区三区最新 | 久久精品一区二区三区四区 | 五月婷婷另类国产 | 欧美一区二区三区特黄 | 日韩视频免费 | 狠狠色丁香婷婷综合最新地址 | 黄色一级在线视频 | 九色精品免费永久在线 | 亚洲天堂首页 | 亚洲欧洲美洲av | 99精品在线观看 | 久久久国际精品 | 国产亲近乱来精品 | 国产成人精品久久久久蜜臀 | 欧美韩国日本在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 国产精品久久99综合免费观看尤物 | 久久久www成人免费精品 | 中文字幕一区二区三区在线观看 | 中文字幕在线观看免费 | 国内精品毛片 | 五月天六月色 | 日韩性xxxx | 日韩特黄av | 特级毛片爽www免费版 | www麻豆视频| 人人爽久久涩噜噜噜网站 | 激情综合色综合久久 | 又大又硬又黄又爽视频在线观看 | 色网站在线看 | 久久精品国产久精国产 | 国产视频1区2区3区 久久夜视频 | 日韩欧美精品免费 | 国产你懂的在线 | 91视频 - 88av| 中文字幕国产一区二区 | 欧美日韩高清一区二区三区 | 亚洲国产综合在线 | 国产精品久久久久久久久久久久午夜片 | av久久在线 | www操操操 | 丁香久久激情 | 久久蜜桃av | 97精品一区二区三区 | 午夜在线国产 | 激情亚洲综合在线 | 99精品偷拍视频一区二区三区 | 午夜美女视频 | 欧美性做爰猛烈叫床潮 | 插综合网 | 91免费日韩 | 二区三区毛片 | 欧美精品天堂 | 最新av网址大全 | 精品国产一区在线观看 | 国产精品日韩久久久久 | 久久五月天综合 | 一区二区视频在线观看免费 | 日韩一区二区三免费高清在线观看 | 久久综合导航 | 操操操干干干 | 久久久久久久电影 | 久久国产精品99久久人人澡 | 亚洲人久久 | 五月激情亚洲 | 色婷婷综合五月 | 中文字幕在线影院 | 狠狠狠色丁香婷婷综合久久88 | 欧美在线91 | 精品色999 | 久久久久久久久亚洲精品 | 久久久久综合 | 91中文在线 | 麻豆传媒一区二区 | 久久天天操 | 欧美另类调教 | 国产精品无av码在线观看 | 久久国产精品一区二区三区四区 | 精品视频成人 | 日韩高清一区二区 | 91精品一区国产高清在线gif | 日黄网站 | 国产手机视频精品 | 色在线高清 |