• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Spring+Struts+Hibernate的迎評(píng)促建網(wǎng)

    2008-07-14 10:05:50楊公義
    電腦知識(shí)與技術(shù) 2008年18期

    摘要:開(kāi)發(fā)迎評(píng)促建網(wǎng)是高校為迎接教育部本科教學(xué)評(píng)估需要面對(duì)的現(xiàn)實(shí)問(wèn)題。首先,本文給出了迎評(píng)促建網(wǎng)的系統(tǒng)分析和模塊設(shè)計(jì);其次,從總體上介紹基于Spring+Struts+hibernate的開(kāi)發(fā)架構(gòu)的原理和層次結(jié)構(gòu);其次,以用戶(hù)管理模塊為例介紹使用該開(kāi)發(fā)架構(gòu)的全部開(kāi)發(fā)過(guò)程;其次,給出該開(kāi)發(fā)架構(gòu)的開(kāi)發(fā)規(guī)范;最后,對(duì)該開(kāi)發(fā)架構(gòu)的核心配置文件的關(guān)鍵技術(shù)給予說(shuō)明。

    關(guān)鍵詞:Spring;Struts;Hibernate;Web開(kāi)發(fā)架構(gòu)

    中圖分類(lèi)號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2008)18-20000-00

    A Website for Welcoming Evaluation & Promoting Development Basing on Spring+Struts+Hibernate

    YANG Gong-yi

    (New Technology Research & Development Office, Modern Education Technology Center, Peking University, Peking, 100871, China)

    Abstract:Developing a website for welcoming evaluation & promoting development is currently a practical problem for universities. Firstly, the paper introduces the system analyze & pattern design for the website. Secondly, the paper introduces the frameworks principle and structure. Thirdly, the paper introduces the total developing process basing on the user management module. Fourthly, the paper introduces the developing criterion using the framework. Finally, the paper explains the key config files key technology.

    Key words:Spring; Struts; Hibernate; Web Developing Framework

    1 引言

    迎評(píng)促建網(wǎng)在高校迎新教育部本科教學(xué)評(píng)估的過(guò)程中,起了重要的作用。一個(gè)優(yōu)秀的技術(shù)架構(gòu)能夠規(guī)范開(kāi)發(fā)者的行為,保證web系統(tǒng)開(kāi)發(fā)的安全性、穩(wěn)定性和成功率。目前Open Source社區(qū)的Spring項(xiàng)目、Struts項(xiàng)目、Hibernate項(xiàng)目以及其他開(kāi)源項(xiàng)目提供了優(yōu)秀的第三方開(kāi)發(fā)工具包,筆者將這些開(kāi)發(fā)工具包整合在一起形成一個(gè)優(yōu)秀的web開(kāi)發(fā)架構(gòu)。筆者開(kāi)發(fā)的迎評(píng)促建網(wǎng)就是基于Spring+Struts+Hibernate(以下簡(jiǎn)稱(chēng)SSH)的web開(kāi)發(fā)架構(gòu)。

    2 迎評(píng)促建網(wǎng)系統(tǒng)分析與模塊設(shè)計(jì)

    2.1 迎評(píng)促建網(wǎng)系統(tǒng)分析

    迎評(píng)促建網(wǎng)是為了迎接教育部本科教學(xué)評(píng)估工作而建設(shè)的集信息發(fā)布、成果展示、審核、管理、用戶(hù)瀏覽、文件下載、特定資源授權(quán)訪問(wèn)等功能于一體的專(zhuān)業(yè)網(wǎng)站。要求信息的編輯支持html在線編輯器功能,能夠網(wǎng)上實(shí)現(xiàn)類(lèi)似word的排版、編輯功能、支持圖文匯排、支持多媒體資源的上傳和編輯。要求信息的上傳要經(jīng)過(guò)審核后才能正式發(fā)布。

    2.2 迎評(píng)促建網(wǎng)模塊設(shè)計(jì)

    對(duì)迎評(píng)促建網(wǎng)的系統(tǒng)分析,可以得出該系統(tǒng)由兩大模塊組成:用戶(hù)管理模塊和信息管理模塊。用戶(hù)管理模塊的作用主要是用戶(hù)信息的增、刪、改、查、用戶(hù)類(lèi)別的管理。通過(guò)用戶(hù)類(lèi)別管理實(shí)現(xiàn)給不同類(lèi)別的用戶(hù)賦予不同權(quán)限。信息管理模塊的作用是信息的增、刪、改、查、信息類(lèi)別的管理。通過(guò)信息類(lèi)別管理實(shí)現(xiàn)讓不同類(lèi)別的信息屬于不同的欄目。北大的迎評(píng)促建網(wǎng)的欄目信息類(lèi)別分為:評(píng)建機(jī)構(gòu)、評(píng)建文件、評(píng)建動(dòng)態(tài)、評(píng)建簡(jiǎn)報(bào)、評(píng)建知識(shí)、教學(xué)成果、院系特色、教學(xué)改革、教師楷模、燕園學(xué)子、北大課堂、社會(huì)實(shí)踐、友情鏈接。

    完成迎評(píng)促建網(wǎng)系統(tǒng)分析與模塊設(shè)計(jì)之后,接下來(lái)將以用戶(hù)管理模塊為例介紹基于SSH的輕量級(jí)J2EE技術(shù)架構(gòu),模塊名稱(chēng)為Demo。因篇幅所限本文不再給出信息管理模塊的詳細(xì)細(xì)節(jié)。

    3 SSH架構(gòu)介紹

    3.1 概述

    在SSH架構(gòu)中,系統(tǒng)結(jié)構(gòu)大致分為三層,即數(shù)據(jù)持久層、事務(wù)邏輯層和WEB表現(xiàn)層。(1)數(shù)據(jù)持久層主要負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)的持久化存儲(chǔ)服務(wù),目前我們采用Hibernate O/R Mapping技術(shù)實(shí)現(xiàn);(2)事務(wù)邏輯層主要負(fù)責(zé)業(yè)務(wù)對(duì)象的轉(zhuǎn)換傳遞、業(yè)務(wù)邏輯的組織及事務(wù)的控制等服務(wù),同時(shí)事務(wù)邏輯層也是WEB表現(xiàn)層和數(shù)據(jù)持久層銜接的橋梁,WEB表現(xiàn)層通過(guò)事務(wù)邏輯層向持久層請(qǐng)求數(shù)據(jù)持久服務(wù),目前這一層我們采用Spring Framework實(shí)現(xiàn)業(yè)務(wù)beans的依賴(lài)關(guān)系管理和運(yùn)行時(shí)注入以及事務(wù)的控制等功能;(3)WEB表現(xiàn)層是所有業(yè)務(wù)邏輯的最終展現(xiàn)層,充當(dāng)事務(wù)邏輯層的客戶(hù)端,實(shí)現(xiàn)人機(jī)交互,目前這一層我們采用Struts技術(shù)來(lái)實(shí)現(xiàn)。

    整個(gè)架構(gòu)的系統(tǒng)結(jié)構(gòu),如圖1所示。系統(tǒng)各層的調(diào)用關(guān)系,如圖2所示。

    圖1 系統(tǒng)結(jié)構(gòu)

    圖2系統(tǒng)各層的調(diào)用關(guān)系

    在本系統(tǒng)中,用到的工具類(lèi)開(kāi)源項(xiàng)目有:Apache commons-BeanUtil; Apache commons-Lang; Apache commons-Logging; Apache commons-FileUpload;Dom4j;Log4j。用到的框架類(lèi)開(kāi)源項(xiàng)目有:Hibernate;Spring Framework;Struts;Junit。關(guān)于這些項(xiàng)目的技術(shù)細(xì)節(jié),不在本文的介紹范圍之內(nèi)。

    3.2包層次結(jié)構(gòu)

    包層次結(jié)構(gòu),如圖3所示。

    圖3 包層次結(jié)構(gòu)

    edu.pku.framework.common包:該包是架構(gòu)提供的一些全局通用程序,例如字符集設(shè)定Filter、一些預(yù)加載的Listener以及一些全局異常等。edu.pku.framework.util包:該包是架構(gòu)提供的一些和業(yè)務(wù)無(wú)關(guān)的工具類(lèi),例如xml的處理、文件加密、類(lèi)型轉(zhuǎn)換等。edu.pku.framework包:該包是架構(gòu)的基礎(chǔ)組件,存放的是數(shù)據(jù)持久管理器(PersistenceManager)和Action的基礎(chǔ)抽象類(lèi)(BaseAction),數(shù)據(jù)持久管理器是一個(gè)數(shù)據(jù)訪問(wèn)接口,目前提供了一個(gè)針對(duì)Hibernate的實(shí)現(xiàn),可以實(shí)現(xiàn)基本的單表CRUD操作,同時(shí)對(duì)服務(wù)器端的數(shù)據(jù)分頁(yè)訪問(wèn)提供了支持;BaseAction對(duì)Struts 的DispatchAction進(jìn)行了擴(kuò)展,對(duì)Web層的數(shù)據(jù)分頁(yè)顯示提供了支持。edu.pku.demo包:該包下存放的是用戶(hù)管理模塊的工程。

    4開(kāi)發(fā)過(guò)程

    基于SSH的總體開(kāi)發(fā)流程,如圖4所示。 下面我們就逐步來(lái)實(shí)現(xiàn)用戶(hù)管理模塊(Demo)。數(shù)據(jù)表結(jié)構(gòu),如表1所示。以下我介紹的開(kāi)發(fā)過(guò)程是按照從后臺(tái)服務(wù)開(kāi)發(fā)到頁(yè)面展現(xiàn)的順序來(lái)進(jìn)行的,在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,某些開(kāi)發(fā)環(huán)節(jié)的順序可以按照需要進(jìn)行調(diào)整。

    圖4 基于SSH的總體開(kāi)發(fā)流程

    表1 Demo的數(shù)據(jù)表結(jié)構(gòu)

    4.1 準(zhǔn)備工作環(huán)境

    首先,先確認(rèn)自己本地的JDK是否安裝完畢,本架構(gòu)要求的JDK版本為1.4以上。我們把我們的工程命名為Demo,如果我們本地的工作目錄是E:workspace,首先在工作目錄下,新建一個(gè)名為demo的文件夾作為我們工程的工作目錄。

    接著,在demo下準(zhǔn)備我們的如下目錄結(jié)構(gòu)src/edu/pku/demo/entity;src/edu/pku/demo/

    service/;src/edu/pku/demo/service/impl;src/edu/pku/demo/web/action;src/edu/pku/demo/web/model;src/edu/pku/demo/test/service;src/edu/pku/demo/test/web。

    再次,準(zhǔn)備web工程的目錄結(jié)構(gòu):demo/jsp;demo/images;demo/css;demo/logs;demo/js;demo/WEB-INF。接著我們把架構(gòu)中提供的公共css文件、圖片、js文件、架構(gòu)依賴(lài)的第三方j(luò)ar復(fù)制到剛剛建立的相應(yīng)工作目錄中,到此為止,我們的工作環(huán)境已經(jīng)準(zhǔn)備就緒,下面就可以進(jìn)行具體的開(kāi)發(fā)了。我這里的介紹不依賴(lài)于任何IDE環(huán)境,所以調(diào)試、編譯、打包的過(guò)程我就不具體進(jìn)行介紹了,在開(kāi)發(fā)過(guò)程中,可以選擇任何自己熟悉的IDE工具進(jìn)行開(kāi)發(fā),通常采用ant作為build工具。

    4.2 生成Hibernate的PO和.hbm.xml

    這一步我們可以用工具生成,這里我給出一些工具供參考:tanghan plugin for eclipse;middlegen+hbm2java;MyEclipse;Xdoclet這些工具具體的用法不在本文介紹范圍之內(nèi),在這一步我們生成的文件是:User.java和User.hbm.xml 這兩個(gè)文件位于src/edu/pku/demo/

    entity下。某些工具可能處理不了BLOB類(lèi)型的字段,如果實(shí)體中存在這樣的屬性,在文件生成后,需要手工稍作修改。有些開(kāi)發(fā)人員可能喜歡先寫(xiě).hbm.xml,然后通過(guò)Schema Export來(lái)生成數(shù)據(jù)庫(kù)DDL,這可根據(jù)開(kāi)發(fā)人員的習(xí)慣恰當(dāng)調(diào)整。

    4.3 分析業(yè)務(wù)邏輯,編寫(xiě)UserService接口

    在這一步的工作中,我們的工作成果是生成UserService.java接口文件,放在edu.pku.demo.service下,在接口中,聲明了以下幾個(gè)業(yè)務(wù)方法:

    public interface UserService {

    public void save(User user) throws ServiceException; //保存用戶(hù)信息

    因篇幅所限,這里省略其他的接口方法,包括:remove(long userid) //刪除單個(gè)用戶(hù), remove(Long[] userid) //刪除多個(gè)用戶(hù), load(long userid) //獲取單個(gè)用戶(hù)數(shù)據(jù), uploadPhoto(long userid,InputStream is) //上傳用戶(hù)照片, byte[] getPhoto(long userid) //獲取用戶(hù)照片數(shù)據(jù), getUserList()//獲取全部用戶(hù)列表, getUserList(String sKeyWord) //按照關(guān)鍵字查找用戶(hù), getUserList(String sKeyWord,int iPageNo,int iPageSize) //按照關(guān)鍵字返回用戶(hù)列表,并分頁(yè)。}

    4.4 編寫(xiě)UserService接口的實(shí)現(xiàn)類(lèi)

    到此我們就該編寫(xiě)UserService接口的實(shí)現(xiàn)類(lèi)了,在這個(gè)實(shí)現(xiàn)類(lèi)中,主要完成以下功能:(1)組織業(yè)務(wù)邏輯;(2)調(diào)用FrameWork中的PersistenceManager接口進(jìn)行數(shù)據(jù)存儲(chǔ)訪問(wèn)。在實(shí)際開(kāi)發(fā)過(guò)程中,大部分的業(yè)務(wù)邏輯將在此實(shí)現(xiàn),也是本架構(gòu)中代碼量比較集中的地方。這一步的工作成果是生成了UserServiceImpl.java文件,該文件位于edu.pku.demo.service.impl下。到此為止,后端服務(wù)部分的開(kāi)發(fā)工作已經(jīng)全部完成。

    4.5 在Spring的applicationContext-*.xml中進(jìn)行相關(guān)注冊(cè)

    完成了后臺(tái)服務(wù)的編寫(xiě)后,我們就可以在Spring中對(duì)這些組件進(jìn)行注冊(cè)了。在這一步中,我們要完成以下工作:(1)注冊(cè)Hibernate的.hbm.xml Mapping文件(2)注冊(cè)PersistenceManager接口和實(shí)現(xiàn)類(lèi)(3)注冊(cè)UserService接口和實(shí)現(xiàn)類(lèi)(4)組件的依賴(lài)關(guān)系注入(5)配置聲明式事務(wù)。目前架構(gòu)中有3個(gè)spring的配置文件,分別是:(1)/WEB-INF/config/applicationContext-resource.xml,(2)/WEB-INF/config/applicationConte

    xt-service-demo.xml,(3)/WEB-INF/config/applicationContext-dao.xml。其中,一些基礎(chǔ)公共資源配置在/WEB-INF/config/applicationContext-resource.xml中,例如,dataSource,sessionFactory等;service層的組件配置在/WEB-INF/config/applicationContext-service-demo.xml中,這里放demo模塊的service和action;數(shù)據(jù)持久層的組件配置在/WEB-INF/config/applicationContext-dao.xml中,這里放PersistenceManager。

    4.6 界面原型設(shè)計(jì)

    這一步可以作為需求分析階段的一個(gè)工作成果,在這一步里我們生成了以下的系統(tǒng)界面原型,如圖5、圖6、圖7所示。

    圖5 用戶(hù)列表、查詢(xún)和刪除

    圖6 編輯用戶(hù)

    圖7新增用戶(hù)

    4.7 分析對(duì)象展現(xiàn)模型,編寫(xiě)VO

    根據(jù)前面的分析,我們確定了用戶(hù)VO對(duì)象有以下幾個(gè)屬性:

    protected String userid; //用戶(hù)ID;

    protected String username;//用戶(hù)名稱(chēng);因篇幅所限,這里省略了其他的屬性:包括password(密碼), email(用戶(hù)email),hasphoto(是否上傳照片)。有了這些屬性,就可以直接在IDE工具中生成getter和setter方法,我們這里的VO是一個(gè)純粹的POJO,不需要從任何類(lèi)繼承,只需實(shí)現(xiàn)Serializable接口即可,這個(gè)VO對(duì)象的用途主要是作為web端的頁(yè)面展現(xiàn)模型。在這一步我們的工作成果是生成了UserModel.java文件,該文件位于edu.pku.demo.web.mode下。

    4.8Struts的Action類(lèi)編寫(xiě)

    在我們這個(gè)模塊中,只有一個(gè)Action類(lèi),即UserAction.java文件,struts可以幫助我們優(yōu)雅的實(shí)現(xiàn)command模式,透明的完成和頁(yè)面表單的交互,此Action需要擴(kuò)展framework中的BaseAction基礎(chǔ)類(lèi),這個(gè)基礎(chǔ)類(lèi)擴(kuò)展了struts的DispatchAction基類(lèi),實(shí)現(xiàn)了默認(rèn)的execute方法,對(duì)客戶(hù)端的數(shù)據(jù)分頁(yè)顯示也提供了必要的支持。在這一步我們的工作成果是生成了UserAction.java,該文件位于edu.pku.demo.web.action下。

    4.9配置struts-config.xml

    struts的請(qǐng)求轉(zhuǎn)發(fā)機(jī)制是通過(guò)ServletDispatcher進(jìn)行的,需要在struts的核心配置文件struts-config.xml進(jìn)行相應(yīng)的配置。為滿(mǎn)足團(tuán)隊(duì)開(kāi)發(fā)的需要,我們把配置文件分割成多個(gè)。在WEB-INF/CONFIG下能看到struts-config-common.xml和struts-config-demo.xml。在struts-config-demo.xml中可以看到:

    <!--用戶(hù)form的配置如下:-->

    <form-bean name="userForm"

    type="org.apache.struts.validator.DynaValidatorForm">

    <form-property name="id" type="java.lang.String" />因篇幅所限,這里省略了一些form-bean的屬性,包括userid, username, password, email

    </form-bean>

    <!--用戶(hù)action的配置如下:-->

    <action name="userForm" parameter="dispatch"

    path="/userAction" scope="request" type="org.springframework.web.struts.DelegatingActionProxy"

    validate="false">

    <forward name="redirectList"

    path="userAction.do?dispatch=getList" redirect="true"/>

    這里省略了一些forward,包括editObjectSuccess, getListSuccess

    </action>

    這樣,在瀏覽器中就可以通過(guò)userAction.do?dispatch=getList進(jìn)行訪問(wèn)了,ServletDispatcher 接收到請(qǐng)求后,會(huì)根據(jù)配置文件轉(zhuǎn)發(fā)到edu.pku.demo.web.action.UserAction的getList方法進(jìn)行處理,處理結(jié)束后,返回到/jsp/userlist.jsp進(jìn)行數(shù)據(jù)顯示。Struts的view支持多種顯示方式,例如jsp、xslt、velocity、freemarker等,在該架構(gòu)中,我們采用jsp進(jìn)行數(shù)據(jù)顯示,其中在jsp中也包括兩種轉(zhuǎn)發(fā)機(jī)制,即dispatch和redirect,默認(rèn)采用的是dispatch,這兩種方式的區(qū)別同servlet的forward和sendRedirect。

    4.10 單元測(cè)試代碼的編寫(xiě)

    單元測(cè)試代碼的編寫(xiě)是穿插在整個(gè)代碼編寫(xiě)過(guò)程中的,例如在這個(gè)demo中,我們可以針對(duì)UserServiceImpl.java, UserAction.java分別編寫(xiě)單元測(cè)試代碼,單元測(cè)試代碼的編寫(xiě)時(shí)機(jī)也是在實(shí)現(xiàn)代碼編寫(xiě)完畢后緊接著進(jìn)行的,并不是所有的代碼編寫(xiě)完畢后才去寫(xiě)測(cè)試代碼。單元測(cè)試我們可以基于junit進(jìn)行編寫(xiě),基于junit編寫(xiě)單元測(cè)試,需要注意以下幾點(diǎn):(1)測(cè)試類(lèi)需要擴(kuò)展junit的TestCase基類(lèi);(2)所有的測(cè)試方法以test開(kāi)頭;(3)資源的初試化寫(xiě)在setUp方法中;(4)資源的銷(xiāo)毀寫(xiě)在tearDown方法中。

    5 架構(gòu)要求的開(kāi)發(fā)規(guī)范

    本架構(gòu)要求:(1)代碼中不允許出現(xiàn)System.out.println等字樣,需要打印調(diào)試信息一定要通過(guò)common-logging接口進(jìn)行;(2)Web層的代碼不允許直接訪問(wèn)PersistenceManager接口進(jìn)行數(shù)據(jù)持久化操作,所有需要對(duì)數(shù)據(jù)進(jìn)行持久化操作的行為必須通過(guò)Service來(lái)代理;(3)原則上,不允許在jsp中直接對(duì)文字信息進(jìn)行硬編碼,所有的文字資源信息要放在properties資源文件中,如果項(xiàng)目對(duì)國(guó)際化要求程度不高,這一點(diǎn)可以不做硬性限制;(4)不允許直接將Hibernate的PO對(duì)象直接返回給JSP頁(yè)面,PO和VO的轉(zhuǎn)換通過(guò)FrameWork中的BeanUtil.copy方法在Action中進(jìn)行。

    6 架構(gòu)中的配置文件說(shuō)明

    6.1 /WEB-INF/config/applicationContext-*.xml

    在本架構(gòu)中存在以下3個(gè)和spring相關(guān)的applicationContext配置文件,分別是:(1)/WEB-INF/config/applicationContext-resource.xml;(2)/WEB-INF/config/applicationContext-service-demo.xml;(3)/WEB-INF/config/applicationContext-dao.xml這三個(gè)配置文件的分工有所不同,其中applicationContext-resource.xml主要負(fù)責(zé)一些基礎(chǔ)公共資源的配置,例如dataSource,transactionManager, sessionFactory等;applicationContext-service-demo.xml主要負(fù)責(zé)demo模塊的service層組件和action層組件的配置;applicationContext-dao.xml主要負(fù)責(zé)持久層組件的配置和裝配,目前只有一個(gè)PersistenceManager接口。

    其中applicationContext-resource.xml中關(guān)于事務(wù)控制的配置文件片段如下:

    <bean id="transactionManager" <!--事務(wù)管理器-->

    class="org.springframework.orm.hibernate.HibernateTransactionManager">

    <property name="sessionFactory">

    <ref local="sessionFactory"/>

    </property>

    </bean>

    <bean id="baseTxProxy" lazy-init="true" abstract="true" <!--事務(wù)管理器傳播屬性-->

    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

    <property name="transactionManager"><ref bean="transactionManager"/></property>

    <property name="transactionAttributes">

    <props>

    <prop key="save*">PROPAGATION_REQUIRED</prop>

    <prop key="remove*">PROPAGATION_REQUIRED</prop>

    <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>

    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

    </props>

    </property>

    </bean>

    6.2 /WEB-INF/config/ jdbc.properties

    數(shù)據(jù)庫(kù)連接配置文件,Oracle 10g的配置文件示例:

    hibernate.dialect=net.sf.hibernate.dialect.Oracle9Dialect

    因篇幅所限,這里省略了一些屬性,包括driverClassName, url,username,password,

    maxActive,maxIdle,maxWait,fetch_size,batch_size,show_sql,hibernate.cglib.use_reflection_optimizer

    6.3 /WEB-INF/web.xml

    J2EE Servlet Spec的標(biāo)準(zhǔn)配置文件,其中本架構(gòu)中要求的配置片段如下:

    因篇幅所限,這里省略<!DOCTYPE 屬性

    <web-app>

    <filter><!—配置中文編輯過(guò)濾器-->

    <filter-name>EncodingFilter</filter-name><filter-class>edu.pku.framework.common.EncodingFilter</filter-class>

    因篇幅所限,這里省略ignore, encoding的參數(shù)配置

    </filter>

    <filter-mapping>

    <filter-name>EncodingFilter</filter-name>

    <servlet-name>action</servlet-name>

    </filter-mapping>

    <servlet><!—配置struts的servlet-->

    <servlet-name>action</servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet

    </servlet-class>

    <init-param><!—-配置struts的幾個(gè)配置文件-->

    <param-name>config</param-name> <param-value>/WEB-INF/config/struts-config-edumon.xml,/WEB-INF/config/struts-config-demo.xml</param-value>

    </init-param>

    篇幅所限,這里省略debug<init-param>參數(shù)配置, 省略<load-on-startup>的屬性設(shè)置

    </servlet>

    <servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

    </servlet-mapping>

    <error-page><!—配置出錯(cuò)跳轉(zhuǎn)頁(yè)面-->

    <error-code>500</error-code>

    <location>/jsp/edumon/error.jsp</location>

    </error-page>篇幅所限,這里省略403,404錯(cuò)誤頁(yè)面</error-page>

    <error-page>

    <taglib>

    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

    </taglib>

    <taglib>篇幅所限,這里省略struts-html.tld, struts-logic.tld, struts-template.tld, struts-tiles.tld, struts-nested.tld

    </taglib>

    </web-app>

    6.4 /WEB-INF/classes/ApplicationResources_zh.properties

    該文件的配置片斷如下:

    ui.lable.username=用戶(hù)名稱(chēng)

    ui.lable.password=用戶(hù)密碼。因篇幅所限,這里省略其他的資源項(xiàng)目。struts的i18n資源配置文件,如果其中包含有中文字符,則需要用以下命令進(jìn)行轉(zhuǎn)碼:native2ascii -encoding GBK ApplicationResources_zh.properties ApplicationResources_zh_CN.properties。

    6.5 /WEB-INF/classes/log4j.properties

    Log4j的配置文件,配置片段如下:

    log4j.rootCategory=INFO, stdout, logfile

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender因篇幅所限,這里省略其他的屬性設(shè)置:包括log4j.appender.stdout.layout; log4j.appender.stdout.layout.ConversionPattern; log4j.appender.logfile; log4j.appender.logfile.MaxFileSize; log4j.appender.logfile.MaxBackupIndex; log4j.appender.logfile.layout; log4j.appender.logfile.layout.ConversionPattern。

    6.6 /WEB-INF/classes/struts-config-common.xml

    struts的核心配置文件,該文件是struts請(qǐng)求轉(zhuǎn)發(fā)的基礎(chǔ),同時(shí),在本架構(gòu)中struts和Spring的集成也需要在該文件中做些必要的設(shè)置,文件片段如下:

    因篇幅所限,這里省略<?xml屬性和<!DOCTYPE屬性

    <struts-config>

    <form-beans>

    </form-beans>

    <global-exceptions>

    <exception type="java.lang.Exception" key="action.errors.exception" path="/jsp/edumon/error.jsp"/>

    因篇幅所限,這里省略其他類(lèi)型的exception配置

    </global-exceptions>

    <global-forwards>

    <forward name="error" path="/jsp/edumon/error.jsp" />

    </global-forwards>

    <message-resources null="false" parameter="ApplicationResources" />

    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

    <set-property property="contextConfigLocation"

    value="/WEB-INF/config/applicationContext-*.xml" />

    </plug-in>

    </struts-config>

    7 結(jié)論

    基于SSH的開(kāi)發(fā)的迎評(píng)建網(wǎng),充分體現(xiàn)了Structs的MVC設(shè)計(jì)模式,Spring的依賴(lài)注入和面向方面編程的思想,Hibernate數(shù)據(jù)持久化的中間件技術(shù)。

    參考文獻(xiàn):

    [1] Spring - Java/J2EE Application Framework.http://static.springframework.org/spring/

    docs/1.1.5/reference/index.html. 2008-03-03.

    [2] The Apache Struts Web Application Framework. http://struts.apache.org/1.2.4/index.html .2008-03-03.

    [3] hibernate_org - Documentation Overview. http://www.hibernate.org/5.html. 2008-03-03.

    [4] 楊公義.大學(xué)生創(chuàng)新能力培養(yǎng)的網(wǎng)絡(luò)平臺(tái)設(shè)計(jì)與開(kāi)發(fā)[J].遠(yuǎn)程教育雜志,2008,(01):59-62.

    收稿日期:2008-04-17

    作者簡(jiǎn)介:楊公義,男,工程師,北京大學(xué)現(xiàn)代教育技術(shù)中心新技術(shù)研究開(kāi)發(fā)室。

    亚洲欧美激情在线| 啦啦啦 在线观看视频| 国产欧美日韩精品亚洲av| 日本a在线网址| 亚洲人成电影免费在线| av国产精品久久久久影院| 欧美不卡视频在线免费观看 | 久久久久久免费高清国产稀缺| 丝瓜视频免费看黄片| 在线永久观看黄色视频| 国产成人影院久久av| 99热网站在线观看| 免费在线观看视频国产中文字幕亚洲| 亚洲全国av大片| 一二三四社区在线视频社区8| 视频在线观看一区二区三区| 成人18禁在线播放| 曰老女人黄片| 黄网站色视频无遮挡免费观看| 亚洲午夜精品一区,二区,三区| 中文字幕人妻丝袜一区二区| 久久精品国产亚洲av香蕉五月 | 国产极品粉嫩免费观看在线| 成熟少妇高潮喷水视频| 精品国产一区二区久久| 黄频高清免费视频| 国产欧美日韩一区二区三区在线| 99国产精品一区二区三区| 欧美一级毛片孕妇| 精品高清国产在线一区| 免费日韩欧美在线观看| 久久精品亚洲熟妇少妇任你| 一二三四在线观看免费中文在| 欧美精品啪啪一区二区三区| 国产精品乱码一区二三区的特点 | 少妇被粗大的猛进出69影院| avwww免费| 99国产极品粉嫩在线观看| 中文字幕最新亚洲高清| 精品一区二区三区四区五区乱码| 18禁黄网站禁片午夜丰满| 国产区一区二久久| 制服诱惑二区| 嫁个100分男人电影在线观看| 99久久国产精品久久久| 久久草成人影院| 久久精品国产99精品国产亚洲性色 | a级毛片黄视频| 亚洲专区字幕在线| 黄网站色视频无遮挡免费观看| 欧美精品高潮呻吟av久久| 久久精品国产清高在天天线| 人人妻人人澡人人爽人人夜夜| 男女下面插进去视频免费观看| 亚洲色图 男人天堂 中文字幕| 亚洲第一欧美日韩一区二区三区| 夜夜躁狠狠躁天天躁| 男男h啪啪无遮挡| 亚洲va日本ⅴa欧美va伊人久久| 午夜激情av网站| 亚洲av成人不卡在线观看播放网| 亚洲第一青青草原| 欧美黑人欧美精品刺激| 18禁黄网站禁片午夜丰满| 99国产精品99久久久久| 久久国产乱子伦精品免费另类| 午夜福利欧美成人| 黄频高清免费视频| 成人影院久久| 老汉色∧v一级毛片| 人妻一区二区av| 午夜福利在线观看吧| √禁漫天堂资源中文www| 欧美日韩av久久| 日韩欧美一区视频在线观看| 天堂动漫精品| 国产不卡av网站在线观看| 国产精品一区二区免费欧美| 色尼玛亚洲综合影院| 国产精品免费大片| 亚洲成人手机| 黑人巨大精品欧美一区二区mp4| 女人高潮潮喷娇喘18禁视频| 精品亚洲成国产av| 国产深夜福利视频在线观看| 极品少妇高潮喷水抽搐| 国产一卡二卡三卡精品| 日本黄色日本黄色录像| 亚洲aⅴ乱码一区二区在线播放 | 亚洲成人免费av在线播放| 亚洲精品久久成人aⅴ小说| 国产欧美日韩精品亚洲av| 母亲3免费完整高清在线观看| 免费在线观看亚洲国产| 欧美久久黑人一区二区| 亚洲国产欧美网| 麻豆乱淫一区二区| 国产日韩欧美亚洲二区| 精品乱码久久久久久99久播| 少妇裸体淫交视频免费看高清 | 亚洲精品在线观看二区| 人妻一区二区av| 1024视频免费在线观看| 99久久综合精品五月天人人| 精品久久久精品久久久| 日本五十路高清| 欧美日本中文国产一区发布| 久9热在线精品视频| 淫妇啪啪啪对白视频| 一级a爱视频在线免费观看| 亚洲 国产 在线| 不卡av一区二区三区| 欧美日韩福利视频一区二区| 99久久精品国产亚洲精品| 黄色丝袜av网址大全| 国产高清国产精品国产三级| 成年人午夜在线观看视频| 韩国精品一区二区三区| 欧美老熟妇乱子伦牲交| 亚洲av第一区精品v没综合| 免费在线观看黄色视频的| 国产片内射在线| 老熟妇乱子伦视频在线观看| 久久久国产欧美日韩av| 亚洲久久久国产精品| 欧美精品人与动牲交sv欧美| 后天国语完整版免费观看| 亚洲性夜色夜夜综合| 久久香蕉激情| 99久久精品国产亚洲精品| 高清欧美精品videossex| 天天影视国产精品| 少妇裸体淫交视频免费看高清 | 国产日韩欧美亚洲二区| 久久久久久久午夜电影 | 久久久国产成人免费| 国内久久婷婷六月综合欲色啪| 一级毛片精品| 精品电影一区二区在线| 午夜福利在线免费观看网站| tocl精华| 日本vs欧美在线观看视频| 两个人看的免费小视频| 在线观看免费高清a一片| 一本综合久久免费| 在线观看免费视频日本深夜| 国产在线观看jvid| 国产精品.久久久| 亚洲一码二码三码区别大吗| 操出白浆在线播放| 国产日韩一区二区三区精品不卡| 老司机亚洲免费影院| 国产野战对白在线观看| 亚洲精品粉嫩美女一区| 成年人黄色毛片网站| 久久ye,这里只有精品| 欧美性长视频在线观看| 丝瓜视频免费看黄片| 亚洲av成人av| 一区二区三区精品91| 多毛熟女@视频| 不卡av一区二区三区| 免费黄频网站在线观看国产| 国产精品av久久久久免费| 国产97色在线日韩免费| 国产免费男女视频| 人妻一区二区av| av片东京热男人的天堂| 久久久久久免费高清国产稀缺| 一个人免费在线观看的高清视频| 国内久久婷婷六月综合欲色啪| 午夜视频精品福利| 老鸭窝网址在线观看| 亚洲欧美日韩高清在线视频| 国产不卡一卡二| 91国产中文字幕| 色播在线永久视频| 午夜福利,免费看| 精品国产一区二区久久| 日本黄色视频三级网站网址 | 一级毛片女人18水好多| 超碰97精品在线观看| 午夜福利欧美成人| 黑丝袜美女国产一区| 一区二区三区精品91| 热99re8久久精品国产| av天堂久久9| 亚洲成人免费电影在线观看| 成年人免费黄色播放视频| 国产麻豆69| 看黄色毛片网站| 亚洲欧美精品综合一区二区三区| 日韩欧美一区二区三区在线观看 | 国产高清国产精品国产三级| 亚洲精品中文字幕在线视频| 精品国产一区二区久久| 操出白浆在线播放| 亚洲色图综合在线观看| 国产高清视频在线播放一区| 老司机影院毛片| 久久久国产成人精品二区 | 亚洲欧美激情在线| 天堂√8在线中文| 亚洲精品粉嫩美女一区| 日本一区二区免费在线视频| xxx96com| 美女视频免费永久观看网站| 国产精品免费一区二区三区在线 | 校园春色视频在线观看| 激情在线观看视频在线高清 | 91大片在线观看| 日韩中文字幕欧美一区二区| 国产一区二区三区综合在线观看| 精品熟女少妇八av免费久了| 搡老乐熟女国产| 亚洲精品av麻豆狂野| 精品一区二区三区视频在线观看免费 | 99国产精品99久久久久| 午夜精品国产一区二区电影| 精品国产一区二区三区久久久樱花| 国产成人一区二区三区免费视频网站| 人妻丰满熟妇av一区二区三区 | 欧美黑人欧美精品刺激| 91精品三级在线观看| 狠狠狠狠99中文字幕| 人人妻人人澡人人看| 一区二区三区国产精品乱码| 18禁观看日本| 美女高潮到喷水免费观看| 视频区图区小说| 啦啦啦视频在线资源免费观看| 伊人久久大香线蕉亚洲五| 大香蕉久久网| 国产国语露脸激情在线看| 色综合婷婷激情| 精品久久久久久,| 最近最新中文字幕大全免费视频| 狂野欧美激情性xxxx| 精品久久久精品久久久| 精品亚洲成a人片在线观看| 亚洲精品中文字幕一二三四区| 国产精品久久电影中文字幕 | a级片在线免费高清观看视频| 两人在一起打扑克的视频| 欧美日韩黄片免| 亚洲一码二码三码区别大吗| 女人爽到高潮嗷嗷叫在线视频| 欧美激情 高清一区二区三区| 国产精品亚洲av一区麻豆| 999久久久精品免费观看国产| 亚洲一码二码三码区别大吗| av电影中文网址| 捣出白浆h1v1| 久久影院123| 搡老岳熟女国产| 麻豆国产av国片精品| 不卡av一区二区三区| 久久香蕉国产精品| 人人澡人人妻人| 国产淫语在线视频| 最新在线观看一区二区三区| 国产精品综合久久久久久久免费 | 丰满的人妻完整版| 亚洲精品国产一区二区精华液| 好男人电影高清在线观看| 午夜福利在线观看吧| 欧美 亚洲 国产 日韩一| 天堂√8在线中文| 高清在线国产一区| 一区二区日韩欧美中文字幕| 精品欧美一区二区三区在线| 免费黄频网站在线观看国产| 国产欧美日韩综合在线一区二区| 久久香蕉精品热| 亚洲七黄色美女视频| 黄色毛片三级朝国网站| 99国产精品免费福利视频| 亚洲avbb在线观看| 99re在线观看精品视频| 操美女的视频在线观看| 国产深夜福利视频在线观看| 女警被强在线播放| 亚洲精品在线美女| 啪啪无遮挡十八禁网站| 欧美 亚洲 国产 日韩一| 女性生殖器流出的白浆| 免费在线观看日本一区| 午夜福利,免费看| 午夜久久久在线观看| 亚洲少妇的诱惑av| 国产国语露脸激情在线看| 在线观看www视频免费| 亚洲黑人精品在线| 下体分泌物呈黄色| 人成视频在线观看免费观看| 老司机深夜福利视频在线观看| 国产一区二区激情短视频| 午夜久久久在线观看| 大型黄色视频在线免费观看| 国产欧美日韩综合在线一区二区| 老熟妇仑乱视频hdxx| 国产精品偷伦视频观看了| 国产精品99久久99久久久不卡| 国产精品av久久久久免费| 国产成人免费无遮挡视频| 高清视频免费观看一区二区| 两个人看的免费小视频| 99热只有精品国产| 成人18禁高潮啪啪吃奶动态图| 精品国产一区二区三区四区第35| 亚洲成国产人片在线观看| 欧美亚洲日本最大视频资源| 波多野结衣一区麻豆| 中文亚洲av片在线观看爽 | 国产高清视频在线播放一区| 欧美人与性动交α欧美精品济南到| 变态另类成人亚洲欧美熟女 | 丝袜美腿诱惑在线| 午夜福利影视在线免费观看| 日韩视频一区二区在线观看| 精品卡一卡二卡四卡免费| 亚洲精品国产精品久久久不卡| 丰满迷人的少妇在线观看| 国产免费av片在线观看野外av| 一级片'在线观看视频| 国产日韩欧美亚洲二区| 国产区一区二久久| 新久久久久国产一级毛片| 国产成人av教育| 黄色 视频免费看| 久久午夜亚洲精品久久| 飞空精品影院首页| 欧美日韩视频精品一区| 国产高清视频在线播放一区| 99热国产这里只有精品6| 精品国产超薄肉色丝袜足j| 丝袜人妻中文字幕| 亚洲欧美日韩另类电影网站| 亚洲精品自拍成人| 久久香蕉精品热| 视频在线观看一区二区三区| 亚洲熟女毛片儿| 亚洲一区二区三区欧美精品| 少妇 在线观看| 精品福利永久在线观看| 热re99久久精品国产66热6| 男女之事视频高清在线观看| 国产精品乱码一区二三区的特点 | 岛国毛片在线播放| 一区二区三区国产精品乱码| 国产男女超爽视频在线观看| netflix在线观看网站| 欧美激情极品国产一区二区三区| 欧美最黄视频在线播放免费 | 日韩欧美免费精品| 久久精品亚洲熟妇少妇任你| 亚洲国产精品一区二区三区在线| 又黄又粗又硬又大视频| 亚洲av日韩在线播放| 一本综合久久免费| 在线看a的网站| 色婷婷久久久亚洲欧美| 母亲3免费完整高清在线观看| 成年版毛片免费区| 18在线观看网站| 久热爱精品视频在线9| 久久精品91无色码中文字幕| 在线观看免费视频日本深夜| 欧美成狂野欧美在线观看| 国产亚洲一区二区精品| 欧美成狂野欧美在线观看| 亚洲精品国产区一区二| 久久香蕉激情| 亚洲av成人不卡在线观看播放网| 久久久久久亚洲精品国产蜜桃av| 国产精品久久久av美女十八| 国产激情久久老熟女| 一区福利在线观看| 高清在线国产一区| 亚洲成av片中文字幕在线观看| 欧美久久黑人一区二区| 亚洲熟妇熟女久久| 亚洲国产欧美网| 大陆偷拍与自拍| 9191精品国产免费久久| 欧美激情高清一区二区三区| 久久久久国产精品人妻aⅴ院 | 妹子高潮喷水视频| 久久久国产成人免费| 一级a爱视频在线免费观看| 俄罗斯特黄特色一大片| 久久草成人影院| 男人操女人黄网站| 一本综合久久免费| 99re6热这里在线精品视频| 精品国产一区二区久久| 国产精品亚洲一级av第二区| 狠狠婷婷综合久久久久久88av| 国产精品永久免费网站| 欧美亚洲日本最大视频资源| 免费人成视频x8x8入口观看| 精品少妇久久久久久888优播| 国产高清激情床上av| 免费不卡黄色视频| 免费在线观看影片大全网站| 最近最新免费中文字幕在线| 日韩免费高清中文字幕av| 天堂动漫精品| 男女高潮啪啪啪动态图| 日韩成人在线观看一区二区三区| 国产极品粉嫩免费观看在线| 午夜两性在线视频| 亚洲一码二码三码区别大吗| 9191精品国产免费久久| 久久久久精品人妻al黑| 伦理电影免费视频| 国产一区有黄有色的免费视频| 99久久国产精品久久久| 亚洲精品在线美女| 视频在线观看一区二区三区| 激情在线观看视频在线高清 | 国产精品国产av在线观看| 夜夜夜夜夜久久久久| 在线观看免费视频日本深夜| 男女免费视频国产| 国产精品乱码一区二三区的特点 | 亚洲精品成人av观看孕妇| 大陆偷拍与自拍| 国产成人免费无遮挡视频| 国产欧美日韩精品亚洲av| 我的亚洲天堂| 少妇被粗大的猛进出69影院| 久久久久国产一级毛片高清牌| 精品人妻1区二区| 亚洲色图 男人天堂 中文字幕| 又紧又爽又黄一区二区| 高清欧美精品videossex| 欧美黑人欧美精品刺激| 日韩欧美在线二视频 | 国产精品亚洲av一区麻豆| www.自偷自拍.com| 午夜精品在线福利| 麻豆乱淫一区二区| 久久久久国内视频| 飞空精品影院首页| x7x7x7水蜜桃| 亚洲精品久久成人aⅴ小说| 久久热在线av| 免费高清在线观看日韩| 成年版毛片免费区| 波多野结衣一区麻豆| 国产在线一区二区三区精| 精品欧美一区二区三区在线| a级片在线免费高清观看视频| 国精品久久久久久国模美| 俄罗斯特黄特色一大片| 亚洲欧美精品综合一区二区三区| 99香蕉大伊视频| 精品亚洲成国产av| 亚洲精品国产色婷婷电影| 深夜精品福利| 精品卡一卡二卡四卡免费| 亚洲国产精品一区二区三区在线| 国产亚洲一区二区精品| 精品久久久久久电影网| 亚洲国产看品久久| 两个人看的免费小视频| 国产精品自产拍在线观看55亚洲 | 如日韩欧美国产精品一区二区三区| 老熟妇仑乱视频hdxx| 在线av久久热| 国产精品国产av在线观看| 欧美最黄视频在线播放免费 | 欧美亚洲 丝袜 人妻 在线| 久久久久久久国产电影| 精品午夜福利视频在线观看一区| 一本一本久久a久久精品综合妖精| 中文字幕高清在线视频| 国产精品久久久久久人妻精品电影| 欧美成人午夜精品| 亚洲人成电影免费在线| 美女午夜性视频免费| 久久人人爽av亚洲精品天堂| 国产av精品麻豆| 国产精品一区二区精品视频观看| 欧美日韩福利视频一区二区| 亚洲国产精品sss在线观看 | 亚洲一区二区三区不卡视频| 天天操日日干夜夜撸| 国产无遮挡羞羞视频在线观看| 国产成人一区二区三区免费视频网站| 亚洲 国产 在线| 成人国语在线视频| 精品乱码久久久久久99久播| 色播在线永久视频| 国产精品久久视频播放| 亚洲中文字幕日韩| 亚洲五月婷婷丁香| 亚洲自偷自拍图片 自拍| 不卡一级毛片| a在线观看视频网站| 一边摸一边做爽爽视频免费| 这个男人来自地球电影免费观看| 精品国产国语对白av| 欧美激情 高清一区二区三区| 免费久久久久久久精品成人欧美视频| 91字幕亚洲| 国产欧美日韩一区二区精品| 12—13女人毛片做爰片一| 久久香蕉激情| 国产精品综合久久久久久久免费 | 成人18禁高潮啪啪吃奶动态图| 欧美日韩av久久| 电影成人av| 又紧又爽又黄一区二区| 18禁裸乳无遮挡免费网站照片 | 精品一区二区三区视频在线观看免费 | 欧美亚洲日本最大视频资源| 久久香蕉激情| 自线自在国产av| 日本vs欧美在线观看视频| 涩涩av久久男人的天堂| 亚洲精品乱久久久久久| 日韩成人在线观看一区二区三区| 男人操女人黄网站| 一边摸一边抽搐一进一出视频| 高清黄色对白视频在线免费看| 水蜜桃什么品种好| 一级片免费观看大全| 变态另类成人亚洲欧美熟女 | 亚洲国产毛片av蜜桃av| 黄色丝袜av网址大全| 90打野战视频偷拍视频| 久热爱精品视频在线9| 久久久精品国产亚洲av高清涩受| 国产精品久久久人人做人人爽| 久久国产亚洲av麻豆专区| 国产伦人伦偷精品视频| 韩国av一区二区三区四区| 大型av网站在线播放| 麻豆成人av在线观看| 午夜精品在线福利| 少妇粗大呻吟视频| 精品国产一区二区久久| 亚洲少妇的诱惑av| 女人被狂操c到高潮| 久久国产精品男人的天堂亚洲| bbb黄色大片| 嫩草影视91久久| 精品久久久久久电影网| av中文乱码字幕在线| 欧美一级毛片孕妇| 亚洲精品久久成人aⅴ小说| 在线播放国产精品三级| 国产精品免费一区二区三区在线 | 欧美 日韩 精品 国产| 国产成人av教育| 午夜影院日韩av| 久久久国产一区二区| 少妇被粗大的猛进出69影院| 久久久久久久久免费视频了| 欧美日本中文国产一区发布| 少妇猛男粗大的猛烈进出视频| 成在线人永久免费视频| 欧美日韩瑟瑟在线播放| 亚洲精华国产精华精| 激情视频va一区二区三区| 免费在线观看黄色视频的| 乱人伦中国视频| 久久久久视频综合| 成年动漫av网址| 亚洲精品国产色婷婷电影| 99在线人妻在线中文字幕 | 露出奶头的视频| 91老司机精品| 久久国产精品影院| 亚洲一区二区三区欧美精品| 亚洲中文字幕日韩| 久久久国产成人免费| ponron亚洲| 老司机午夜十八禁免费视频| 巨乳人妻的诱惑在线观看| 性少妇av在线| 日韩精品免费视频一区二区三区| av天堂久久9| 亚洲中文av在线| 在线国产一区二区在线| 国产精品二区激情视频| 王馨瑶露胸无遮挡在线观看| 欧美日韩亚洲综合一区二区三区_| 美女国产高潮福利片在线看| 男人的好看免费观看在线视频 | 女人精品久久久久毛片| 精品国产一区二区三区四区第35| 欧美精品av麻豆av| 18禁国产床啪视频网站| 黄色怎么调成土黄色| 久久国产精品大桥未久av| 欧美日韩瑟瑟在线播放| 在线观看免费日韩欧美大片| 国产精品影院久久| 高清av免费在线| 午夜福利免费观看在线| 丰满饥渴人妻一区二区三| 成熟少妇高潮喷水视频| 国产男女超爽视频在线观看| 婷婷成人精品国产| 色尼玛亚洲综合影院| 午夜亚洲福利在线播放| 女人被躁到高潮嗷嗷叫费观| 久久ye,这里只有精品| 在线看a的网站| 午夜免费成人在线视频| 亚洲在线自拍视频| 亚洲国产欧美一区二区综合|