<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feng.Li's Java See

    抓緊時(shí)間,大步向前。
    隨筆 - 95, 文章 - 4, 評(píng)論 - 58, 引用 - 0
    數(shù)據(jù)加載中……

    漂亮的struts實(shí)例

    (mystruts應(yīng)用)目錄結(jié)構(gòu)
    ?? mystruts
    ??????? |-WEB-INF
    ??????? |????? |- lib
    ??????? |????? |?? |- struts.jar
    ??????? |????? |- classes
    ??????? |????? |????? |- ConnectionPool
    ??????? |????? |????? |??????????? |- getDbConnection.class
    ??????? |????? |????? |-mystruts
    ??????? |????? |???????????? |- user1Action.class
    ??????? |????? |???????????? |- userAction.class
    ??????? |????? |???????????? |- userActionForm.class
    ??????? |????? |???????????? |- userdao.class
    ??????? |????? |-struts-bean.tld
    ??????? |????? |-struts-config.xml
    ??????? |????? |-struts-html.tld
    ??????? |????? |-struts-logic.tld
    ??????? |????? |-struts-template.tld
    ??????? |-adduser.jsp
    ??????? |-index.jsp
    ??????? |-viewuser.jsp

    第一步: 開(kāi)發(fā)環(huán)境配置

    (如果你還沒(méi)有相關(guān)軟件. 請(qǐng)到http://www.apache.org 下載)

    tomcat5.0 配置? (建立一個(gè) mystruts 應(yīng)用, 并拷貝相關(guān)文件)

    請(qǐng)?jiān)谀愕膖omcat安裝目錄中找到\conf\Catalina\localhost 子目錄. 新建 mystruts.xml 文件
    文件內(nèi)容如下. 在這個(gè)文件中. 我們將配置一個(gè)聯(lián)接池.請(qǐng)把相關(guān)的驅(qū)動(dòng).數(shù)據(jù)庫(kù)用戶,密碼改成你自己的本機(jī)配置.
    并把JDBC驅(qū)動(dòng)拷貝一份到 Tomcat 5.0\common\lib 目錄下. 請(qǐng)把 struts.jar \mystruts\WEB-INF\lib 目錄下.

    <Context path="/mystruts" docBase="D:\www\mystruts\mystruts\mystruts" debug="0" privileged="true">

    ? <Resource name="jdbc/TestDB"
    ?????????????? auth="Container"
    ?????????????? type="javax.sql.DataSource"/>

    ? <ResourceParams name="jdbc/TestDB">
    ??? <parameter>
    ????? <name>factory</name>
    ????? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    ??? </parameter>

    ??? <parameter>
    ????? <name>maxActive</name>
    ????? <value>10</value>
    ??? </parameter>

    ??? <parameter>
    ????? <name>maxIdle</name>
    ????? <value>5</value>
    ??? </parameter>

    ??? <parameter>
    ????? <name>maxWait</name>
    ????? <value>10000</value>
    ??? </parameter>

    ??? <parameter>
    ???? <name>username</name>
    ???? <value>sa</value>
    ??? </parameter>
    ??? <parameter>
    ???? <name>password</name>
    ???? <value>test</value>
    ??? </parameter>

    ??? <parameter>
    ?????? <name>driverClassName</name>
    ?????? <value>net.sourceforge.jtds.jdbc.Driver</value>
    ??? </parameter>

    ??? <parameter>
    ????? <name>url</name>
    ????? <value>jdbc:jtds:sqlserver://192.168.10.223:1433/mystruts</value>
    ??? </parameter>
    ? </ResourceParams>
    </Context>

    WEB-INF/web.xml? (加入struts標(biāo)記庫(kù)的支持)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<web-app>
    ? <servlet>
    ??? <servlet-name>action</servlet-name>
    ??? <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    ??? <init-param>
    ????? <param-name>debug</param-name>
    ????? <param-value>2</param-value>
    ??? </init-param>
    ??? <init-param>
    ????? <param-name>config</param-name>
    ????? <param-value>/WEB-INF/struts-config.xml</param-value>
    ??? </init-param>
    ??? <load-on-startup>2</load-on-startup>
    ? </servlet>
    ? <servlet-mapping>
    ??? <servlet-name>action</servlet-name>
    ??? <url-pattern>*.do</url-pattern>
    ? </servlet-mapping>
    ? <taglib>
    ??? <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    ??? <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    ? </taglib>
    ? <taglib>
    ??? <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    ??? <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    ? </taglib>
    ? <taglib>
    ??? <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    ??? <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    ? </taglib>
    ? <taglib>
    ??? <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
    ??? <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
    ? </taglib>
    </web-app>

    第二步: 配置數(shù)據(jù)庫(kù)

    1.首先創(chuàng)建數(shù)據(jù)聯(lián)接bean, 并打包到 ConnectionPool, 它將從我們配置的聯(lián)接池中取得可用聯(lián)接.

    // Java Document
    package ConnectionPool;
    import javax.naming.*;
    import javax.sql.*;
    import java.sql.*;
    import java.io.*;
    import java.util.*;

    public class getDbConnection {

    ?Connection conn;
    ?Statement stmt;
    ?ResultSet rs=null;

    String foo = "Not Connected";
    ? int bar = -1;

    ? public getDbConnection() {
    ??? try{
    ????? Context ctx = new InitialContext();
    ????? if(ctx == null )
    ????????? throw new Exception("Boom - No Context");

    ????? DataSource ds =
    ??????????? (DataSource)ctx.lookup(
    ?????????????? "java:comp/env/jdbc/TestDB");

    ????? if (ds != null) {
    ??????? conn = ds.getConnection();

    ??????? }
    ????? }
    ??? catch(Exception e) {
    ????? e.printStackTrace();
    ??? }
    ?}

    public Connection? getCon()
    ?{
    ?? return? conn;
    ?}


    public void d_close() throws SQLException
    ? {
    ??? if (rs != null) {
    ????? try { rs.close(); } catch (SQLException e) { ; }
    ????? rs = null;
    ??? }
    ??? if (stmt != null) {
    ????? try { stmt.close(); } catch (SQLException e) { ; }
    ????? stmt = null;
    ??? }
    ??? if (conn != null) {
    ????? try { conn.close(); } catch (SQLException e) { ; }
    ????? conn = null;
    ??? }

    ? }

    protected void finalize() throws Throwable
    ? {
    ?? try { d_close(); } catch (SQLException e) { ; }
    ? }

    }

    2.創(chuàng)建數(shù)據(jù)庫(kù).?

    數(shù)據(jù)庫(kù)名: mystruts

    部門(mén)表: mydep

    _______________________________________
    dep_id?????????? dep_name
    _______________________________________
    ?1?????????????? dep1
    ?2?????????????? dep2
    ?3?????????????? dep3
    ?4?????????????? dep4
    _______________________________________

    用戶表: myuser
    ______________________________________________
    user_id???? user_name??? dep???? tel
    ______________________________________________
    ?1????????? jack????????? 1????? 0769-2454042
    ?2????????? max?????????? 2????? 0769-2454043
    ______________________________________________

    (注: 以上字段為了測(cè)試方便. 全部使用字符型)


    第三步:? 創(chuàng)建ActionForm? (userActionForm.java)

    ?

    package mystruts;? //請(qǐng)打包到mystruts下.

    import org.apache.struts.action.*;
    import javax.servlet.http.*;

    public class userActionForm extends ActionForm {
    ? private String action="add";
    ? private String dep;
    ? private String tel;
    ? private String user_id;
    ? private String user_name;
    ? public String getAction() {
    ??? return action;
    ? }
    ? public void setAction(String action) {
    ??? this.action = action;
    ? }
    ? public String getDep() {
    ??? return dep;
    ? }
    ? public void setDep(String dep) {
    ??? this.dep = dep;
    ? }
    ? public String getTel() {
    ??? return tel;
    ? }
    ? public void setTel(String tel) {
    ??? this.tel = tel;
    ? }
    ? public String getUser_id() {
    ??? return user_id;
    ? }
    ? public void setUser_id(String user_id) {
    ??? this.user_id = user_id;
    ? }
    ? public String getUser_name() {
    ??? return user_name;
    ? }
    ? public void setUser_name(String user_name) {
    ??? this.user_name = user_name;
    ? }
    ? public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {

    ??? return null;
    ? }
    ? public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
    ? }
    }


    第四步:建立數(shù)據(jù)庫(kù)操作對(duì)象 (完成對(duì)表的增刪修改與查詢)

    package mystruts;

    import java.sql.*;
    import ConnectionPool.*;
    import java.util.*;

    public class userdao {
    ? getDbConnection db=null;
    ? Connection con=null;

    ? public userdao() {
    ? }
    ? //-------------------------------------------------------------------
    ? public void userInsert(userActionForm uaf1)
    ? {
    ?? db=new getDbConnection();
    ?? con=db.getCon();
    ?? userActionForm uaf=uaf1;
    ?? PreparedStatement ps = null;
    ?? String sql="insert into myuser (user_id,user_name,dep,tel) values(?,?,?,?)";
    ?? try {

    ?????? ps = con.prepareStatement(sql);
    ?????? ps.setString(1,uaf.getUser_id());
    ?????? ps.setString(2,uaf.getUser_name());
    ?????? ps.setString(3,uaf.getDep());
    ?????? ps.setString(4,uaf.getTel());
    ?????? ps.executeUpdate();
    ??????? }
    ??????? catch (SQLException e)
    ??????? {
    ???????? System.out.println("sql error");
    ??????? }
    ?????? finally
    ?????? {
    ??????? try{
    ?????????????? con.close();
    ?????????????? db.d_close();
    ???????????? }
    ??????? catch(Exception e) {}
    ??????? }
    ??? }
    ?? //---------------------------------------------
    ?? public void userUpdate(userActionForm uaf1)
    ?? {
    ?? db=new getDbConnection();
    ?? con=db.getCon();
    ?? userActionForm uaf=uaf1;
    ?? PreparedStatement ps = null;
    ?? String sql="update myuser set user_name=?,dep=?,tel=? where user_id=?";
    ?? try {

    ????? ps = con.prepareStatement(sql);
    ????? ps.setString(1,uaf.getUser_name());
    ????? ps.setString(2,uaf.getDep());
    ????? ps.setString(3,uaf.getTel());
    ????? ps.setString(4,uaf.getUser_id());
    ????? ps.executeUpdate();
    ?????? }
    ????? catch (SQLException e)
    ????? {
    ?????? System.out.println("sql error");
    ????? }
    ???? finally
    ????? {
    ????? try{
    ???????????? con.close();
    ???????????? db.d_close();
    ?????????? }
    ????? catch(Exception e) {}
    ????? }
    ? }
    ?//---------------------------------------------
    ? public userActionForm getUser(String key)
    ? {
    ?? db=new getDbConnection();
    ?? con=db.getCon();
    ?? ResultSet rs=null;
    ?? userActionForm uaf=new userActionForm();
    ?? PreparedStatement ps = null;
    ?? String sql="select * from? myuser where user_id=?";
    ?? try {
    ???????? ps = con.prepareStatement(sql);
    ???????? ps.setString(1,key.trim());
    ???????? rs=ps.executeQuery();
    ??????? if(rs.next())
    ?????????? {
    ??????????? uaf.setUser_id(rs.getString("user_id"));
    ??????????? uaf.setUser_name(rs.getString("user_name"));
    ??????????? uaf.setDep(rs.getString("dep"));
    ??????????? uaf.setTel(rs.getString("tel"));
    ??????????? uaf.setAction("edit");
    ?????????? }
    ??????? }
    ??????? catch (SQLException e)
    ??????? {
    ???????? System.out.println("sql error");
    ??????? }
    ?????? finally
    ?????? {
    ??????? try{
    ?????????????? con.close();
    ?????????????? db.d_close();
    ???????????? }
    ??????? catch(Exception e) {}
    ??????? }
    ????? System.out.println("mod"+key);
    ???? return uaf;
    ??? }
    ? //----------------------------------------
    ? public void delUser(String key)
    ?? {
    ?? db=new getDbConnection();
    ?? con=db.getCon();
    ?? PreparedStatement ps = null;
    ?? String sql="delete? from? myuser where user_id=?";
    ?? try {
    ???????? ps = con.prepareStatement(sql);
    ???????? ps.setString(1,key.trim());
    ???????? ps.executeUpdate();
    ??????? }
    ??????? catch (SQLException e)
    ??????? {
    ???????? System.out.println("sql error");
    ??????? }
    ?????? finally
    ?????? {
    ??????? try{
    ?????????????? con.close();
    ?????????????? db.d_close();
    ???????????? }
    ??????? catch(Exception e) {}
    ??????? }
    ????? System.out.println("del"+key);
    ??? }
    ?? //----------------------------------
    ? public Collection getAlluser()
    ? {
    ?? db=new getDbConnection();
    ?? con=db.getCon();
    ?? ResultSet rs=null;
    ?? userActionForm uaf=new userActionForm();
    ?? PreparedStatement ps = null;

    ?? ArrayList rslist = new ArrayList();

    ?? String sql="select * from myuser u,mydep d where u.dep=d.dep_id";
    ?? try {
    ???????? ps = con.prepareStatement(sql);
    ???????? rs=ps.executeQuery();
    ??????? while(rs.next())
    ?????????? {
    ??????????? HashMap rscol = new HashMap();
    ??????????? rscol.put("user_id",rs.getString("user_id"));
    ??????????? rscol.put("user_name",rs.getString("user_name"));
    ??????????? rscol.put("dep",rs.getString("dep"));
    ??????????? rscol.put("dep_name",rs.getString("dep_name"));
    ??????????? rscol.put("tel",rs.getString("tel"));
    ??????????? rslist.add(rscol);
    ?????????? }
    ??????? }
    ??????? catch (SQLException e)
    ??????? {
    ???????? System.out.println("sql error");
    ??????? }
    ?????? finally
    ?????? {
    ??????? try{
    ?????????????? con.close();
    ?????????????? db.d_close();
    ???????????? }
    ??????? catch(Exception e) {}
    ??????? }
    ???? return rslist;
    ??? }
    ?? //----------------------------------
    }

    第五步:建立Action? (userAction.java)

    這里我們將建產(chǎn)兩個(gè)Action .
    ?
    userAction.java 將完成以下工作.
    1.添加(前期數(shù)據(jù)準(zhǔn)備. 主是提取部門(mén)資料.并傳遞給adduser.jsp)
    2.修改(前期數(shù)據(jù)準(zhǔn)備)
    3.刪除
    4.查看所有用戶資料.

    user1Action.java 將完成以下工作
    1.添加用戶(對(duì)myuser表操作)
    2.修改用戶(對(duì)myuser表操作)

    package mystruts;

    import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import mystruts.*;
    import java.util.*;
    import java.sql.*;
    import ConnectionPool.*;

    public class userAction extends Action {
    ? public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)? throws Exception
    ? {
    ?? userdao dao=new userdao();
    ?? HttpServletRequest request=httpServletRequest;
    ?? String action;
    ?? if(request.getParameter("action").equals("") || request.getParameter("action")==null)
    ?? {
    ???? action="add";
    ?? }
    ?? else
    ?? {
    ???? action=request.getParameter("action");
    ?? }
    ? if(action.equals("add"))
    ? {
    ??? request.setAttribute("dep",this.getDep());
    ??? return (actionMapping.findForward("add"));
    ? }
    ? if(action.equals("edit"))
    ? {
    ?? String key=request.getParameter("key");
    ?? request.setAttribute("dep",this.getDep());
    ?? request.setAttribute("userActionForm",dao.getUser(key));
    ?? return (actionMapping.findForward("add"));
    ? }
    ? if(action.equals("del"))
    ??? {
    ????? String key=request.getParameter("key");
    ????? dao.delUser(key);
    ???? return (actionMapping.findForward("delview"));
    ??? }
    ? if(action.equals("view"))
    ??? {
    ???? request.setAttribute("rs",dao.getAlluser());
    ???? return (actionMapping.findForward("view"));
    ??? }

    ?? return null;
    ? }
    ? //---------------------------------------------
    ? public? Collection getDep()
    ? {
    ?? getDbConnection db=new getDbConnection();
    ?? Connection con=db.getCon();
    ?? ResultSet rs=null;

    ?? PreparedStatement ps = null;

    ?? ArrayList rslist = new ArrayList();

    ?? String sql="select * from mydep";
    ?? try {
    ???????? ps = con.prepareStatement(sql);
    ???????? rs=ps.executeQuery();
    ??????? while(rs.next())
    ?????????? {
    ??????????? HashMap rscol = new HashMap();
    ??????????? rscol.put("id",rs.getString("dep_id"));
    ??????????? rscol.put("name1",rs.getString("dep_name"));
    ??????????? rslist.add(rscol);
    ?????????? }
    ??????? }
    ??????? catch (SQLException e)
    ??????? {
    ???????? System.out.println("sql error");
    ??????? }
    ?????? finally
    ?????? {
    ??????? try{
    ?????????????? con.close();
    ?????????????? db.d_close();
    ???????????? }
    ??????? catch(Exception e) {}
    ??????? }
    ???? return rslist;
    ?? }
    }

    ?

    package mystruts;

    import org.apache.struts.action.*;
    import javax.servlet.http.*;

    public class user1Action extends Action {
    ? public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception
    ? {
    ??? userActionForm uaf = (userActionForm) actionForm;
    ??? if(uaf.getAction().equals("add"))
    ??? {
    ????? new userdao().userInsert(uaf);
    ????? return (actionMapping.findForward("view"));
    ??? }
    ??? if(uaf.getAction().equals("edit"))
    ??? {
    ????? new userdao().userUpdate(uaf);
    ????? return (actionMapping.findForward("view"));
    ??? }
    ? return null;
    ? }
    }


    第六步:建立JSP視圖頁(yè)面 (主要有兩個(gè)jsp文件. 添加頁(yè)面. adduser.jsp 查看頁(yè)面 viewuser.jsp)

    adduser.jsp

    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ page contentType="text/html; charset=gb2312" %>
    <html:html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>
    adduser
    </title>
    </head>
    <body>
    <h1>&nbsp;</h1>
    <p>
    <html:form action="/user1Action.do" method="POST">
    <html:hidden property="action"/>
    <br>
    部門(mén):
    ?<html:select property="dep">
    ???? <html:options collection="dep" property="id" labelProperty="name1"/>
    ?</html:select>
    <br>
    ID:
    <logic:equal name="userActionForm" property="action" scope="request" value="add">
    <html:text property="user_id"/>
    </logic:equal>
    <logic:equal name="userActionForm" property="action" scope="request" value="edit">
    <html:text property="user_id" readonly="true"/>
    </logic:equal>
    <br>
    名字:<html:text property="user_name"/>
    <br>
    電話:<html:text property="tel"/>
    <br>
    <html:submit property="submit" value="Submit"/><br>
    <html:reset value ="Reset"/>
    </html:form>
    </body>
    </html:html>

    viewuser.jsp

    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ page contentType="text/html; charset=GBK" %>
    <html:html>
    <head>
    <title>
    viewuser
    </title>
    </head>
    <body>
    <div align="center"><a href="userAction.do?action=add">add </a></div>
    <table width="60%" border="1" align="center">
    ? <tr bgcolor="#CCCCCC">
    ??? <td>ID</td>
    ??? <td>user_name</td>
    ??? <td>dep</td>
    ??? <td>tel</td>
    ??? <td>modify</td>
    ??? <td>del</td>
    ? </tr>
    ? <logic:iterate name="rs" id="user" scope="request" type="java.util.HashMap">
    ? <tr>
    ??? <td><bean:write name="user" property="user_id"/>&nbsp;</td>
    ??? <td><bean:write name="user" property="user_name"/>&nbsp;</td>
    ??? <td><bean:write name="user" property="dep_name"/>&nbsp;</td>
    ??? <td><bean:write name="user" property="tel"/>&nbsp;</td>
    ??? <td><a href="userAction.do?action=edit&key=<bean:write name="user" property="user_id"/>">modify</a></td>
    ??? <td><a href="userAction.do?action=del&key=<bean:write name="user" property="user_id"/>">del</a></td>
    ? </tr>
    ? </logic:iterate>
    </table>
    </body>
    </html:html>

    建產(chǎn)一個(gè)轉(zhuǎn)向頁(yè)面 (index.jsp)
    <%@ page contentType="text/html; charset=gb2312" %>
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>

    <body>
    <% response.sendRedirect("userAction.do?action=view"); %>
    </body>
    </html>

    遞七步:建立struts配置文件 (WEB-INF/config-struts.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "
    <struts-config>
    ? <form-beans>
    ??? <form-bean name="userActionForm" type="mystruts.userActionForm" />
    ? </form-beans>
    ? <action-mappings>
    ??? <action type="mystruts.userAction" scope="request" path="/userAction">
    ????? <forward name="view" path="/viewuser.jsp" />
    ????? <forward name="add" path="/adduser.jsp" />
    ????? <forward name="delview" path="/userAction.do?action=view" />
    ??? </action>
    ??? <action name="userActionForm" type="mystruts.user1Action" scope="request" path="/user1Action">
    ????? <forward name="view" path="/userAction.do?action=view" />
    ??? </action>
    ? </action-mappings>
    </struts-config>

    運(yùn)行程序:
    啟動(dòng)tomcat
    啟動(dòng)IE? 在地址欄中輸入:http://localhost:8080/mystruts

    OK.....

    posted on 2006-09-27 19:49 小鋒 閱讀(452) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 亚洲视频免费在线播放| 亚洲综合久久久久久中文字幕| 美丽的姑娘免费观看在线播放 | a在线视频免费观看| 亚洲成a人片在线不卡一二三区 | 一级毛片免费不卡| 亚洲熟女乱色一区二区三区| 色拍自拍亚洲综合图区| 亚洲中文久久精品无码| 亚洲国产婷婷香蕉久久久久久| 成年轻人网站色免费看| 无码国产精品一区二区免费式影视 | 男女一边摸一边做爽的免费视频| 亚洲AV无码专区在线电影成人| 亚洲一本之道高清乱码| 91亚洲一区二区在线观看不卡| 国产亚洲福利精品一区| 国产精品亚洲w码日韩中文| 国产免费观看网站| 大香人蕉免费视频75| 一二三四视频在线观看中文版免费| 99久久99热精品免费观看国产| 无码精品人妻一区二区三区免费看 | 一级毛片在线免费观看| 免费国产成人18在线观看| 两个人看的www免费| 中文在线免费看视频| caoporn国产精品免费| 一区二区三区免费在线观看| 免费国产黄网站在线观看动图 | 国产美女无遮挡免费视频| 国产一区视频在线免费观看| 国产青草视频在线观看免费影院| 永久免费看mv网站入口| 国产免费人人看大香伊| 国产免费一区二区三区VR| 免费v片在线观看品善网| 亚洲无码高清在线观看| 亚洲永久精品ww47| 亚洲AV永久无码精品| 亚洲人成网www|