Struts+Spring+Hibernate练习(完整)的续集录像教程

Posted on 2005-12-13 15:36 oksonic 阅读(22396) 评论(58)  编辑  收藏 所属分类: java

速动画教程第十五集

 

本集为第十二集Struts+Spring+Hibernate练习(完整) 续集

 

下载地址:http://sonic.peakle.net/download/sonic015.rar

 

将增加以下部份内容

 

注册新用户,用户浏览、删除用户

 

现在导入原工程

 

打开 UserDAO.java 文件,增加以下方法,此方法为增加用户

public interface UserDAO {

    public abstract boolean isValidUser(String username, String password);

    public abstract boolean addUser(User user);

}

 

打开 UserDAOImp.java 文件,添加接口方法的实现,并为方法编写以下内容:

    public boolean addUser(User user) {

        try {

            this.getHibernateTemplate().save(user);

        } catch (Exception e) {

            System.out.println(e.getMessage());

            return false;

        }

        return true;

    }

 

 

按下 Ctrl + N 使用向导创建 add.jsp AddForm(动态)AddAction.java文件这是注册新用户的Action

 

修改配置内容如下

<action

      attribute="addForm"

      input="/add.jsp"

      name="addForm"

      path="/add"

      scope="request"

      validate="true"

      type="org.springframework.web.struts.DelegatingActionProxy" />

 

第一句实现了必须对提交的数据进行验证

第二句实现了和spring集成

 

修改 AddAction.java 文件,内容如下:

 

    private UserDAO userDAO;

   

    public UserDAO getUserDAO() {

        return userDAO;

    }

    public void setUserDAO(UserDAO userDAO) {

        this.userDAO = userDAO;

    }

 

    public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response) {

        DynaActionForm addForm = (DynaActionForm) form;

        User user=new User();

        user.setUsername(addForm.getString("username"));

        user.setPassword(addForm.getString("password"));

        addForm.set("password", null);

        if (userDAO.addUser(user)) {

            return mapping.findForward("indexGo");

        } else {

            return mapping.getInputForward();

        }

    }

 

关于在Action中使用 User 对像我在这里没有使用 IoC 方式进行管理这不好希望大家在正式应用中使用。

 

spring配置文件applicationContext.xml中加入以下内容

       <bean name="/add" class="com.test.struts.action.AddAction" singleton="false">

       <property name="userDAO">

           <ref bean="userDAOProxy" />

       </property>

    </bean>

 

修改 index.jsp 文件

<html>

  <head>

    <title>Struts+Spring+Hibernate</title>

  </head>

 

  <body>

    <a href="login.jsp">Login</a>

    <br>

    <a href="add.jsp">Add User</a>

  </body>

</html>

 

修改 add.jsp 文件的首行替换为以下内容目的是为了使用UTF-8的编码格式显示页面

<%@ page language="java" contentType="text/html; charset=UTF-8" %>

 

修改 validation.xml 文件加入以下内容

        <form name="addForm">

           <field property="username" depends="required">

              <arg0 key="prompt.username" />

           </field>

           <field property="password" depends="required">

              <arg0 key="prompt.password" />

           </field>

       </form>

 

 

现在整个 AddUser 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!

 

创建一个Action用于查询数据,名称为 find

 

创建 display.jsp 文件,用于显示所有用户

 

创建一个 forward 指向 display.jsp 选中 redirect

 

修改 UserDAO.java 文件,增加 findAllUser() 方法,代码如下:

    public abstract List findAllUser();

 

修改 UserDAOImp.java 文件,增加 findAllUser() 方法,代码如下:

    public List findAllUser() {

        List users=this.getHibernateTemplate().find("from User u");

        if(users.size()>0)

            return users;

        return null;

    }

 

修改 struts-config.xml 文件

<action path="/find" type="org.springframework.web.struts.DelegatingActionProxy" />

 

修改 FindAction.java 文件内容如下

    private UserDAO userDAO;

   

    public UserDAO getUserDAO() {

        return userDAO;

    }

    public void setUserDAO(UserDAO userDAO) {

        this.userDAO = userDAO;

    }

 

    public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response) {

        List users=userDAO.findAllUser();

        if(users!=null){

            HttpSession session=request.getSession();

            session.setAttribute("users",users);

            return mapping.findForward("displayGo");

        }

        return mapping.getInputForward();

    }

 

spring配置文件applicationContext.xml中加入以下内容

       <bean name="/find" class="com.test.struts.action.FindAction" singleton="false">

       <property name="userDAO">

           <ref bean="userDAOProxy" />

       </property>

    </bean>

 

修改 display.jsp 文件内容如下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>

<html>

  <head>

    <title>DISPLAY</title>

  </head>

  <body>

    <logic:present name="users">

    <form action="del.do">

    <table border="1">

    <logic:iterate id="element" name="users">

    <tr><td width="100">

       <input type="radio" name="select" value="<bean:write name="element" property="id"/>">

    <bean:write name="element" property="username"/>

    </td></tr>

    </logic:iterate>

    </table>

    <INPUT type="submit" name="Submit" value="submit">

    </form>

    </logic:present>

  </body>

</html>

 

现在整个 Display 已经完成,如果你觉得不放心的话可以在这里停一停先进行这一段的测试!

 

新建一个 Action 用于删除选中的用户,name:del

 

修改 struts-config.xml 文件中的以下内容为:

<action path="/del" type="org.springframework.web.struts.DelegatingActionProxy" />

 

修改 UserDAO.java 文件增加以下方法

public interface UserDAO {

    public abstract boolean isValidUser(String username, String password);

    public abstract boolean addUser(User user);

    public abstract List findAllUser();

    public abstract boolean delUser(Integer lid);

}

 

修改 UserDAOImp.java 文件添加新增的两个方法并编写以下内容

    public boolean delUser(Integer lid) {

        try {

            User user=(User)this.getHibernateTemplate().load(User.class,lid);

            this.getHibernateTemplate().delete(user);

        } catch (Exception e) {

            System.out.println(e.getMessage());

            return false;

        }

        return true;

    }

 

修改 DelAction.java 文件内容如下

public class DelAction extends Action {

 

    private UserDAO userDAO;

 

    public UserDAO getUserDAO() {

        return userDAO;

    }

 

    public void setUserDAO(UserDAO userDAO) {

        this.userDAO = userDAO;

    }

 

    public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response) {

        Integer selid=Integer.valueOf(request.getParameter("select"));

        if(userDAO.delUser(selid))

            return mapping.findForward("indexGo");

        return mapping.getInputForward();

    }

}

 

spring配置文件applicationContext.xml中加入以下内容

       <bean name="/del" class="com.test.struts.action.DelAction" singleton="false">

       <property name="userDAO">

           <ref bean="userDAOProxy" />

       </property>

    </bean>

 

修改 index.jsp 文件

<html>

  <head>

    <title>Struts+Spring+Hibernate</title>

  </head>

 

  <body>

    <a href="login.jsp">Login</a>

    <br>

    <a href="add.jsp">Add User</a>

    <br>

    <a href="find.do">Display</a>

  </body>

</html>

 

 

代码已经全部完成,可以进行测试了!!!

 

在添加用户的过程中出现了错误,就是没有验证就直接提交了,并能够提交空的用户!

这里解决的方式有多种,修改程是肯定的了,还有就是在设计数据库的时候加上限制如将 username 和 password 为字设置为 not null

 

将修改这一段

<form-bean name="addForm" type="org.apache.struts.action.DynaActionForm">

      <form-property name="password" type="java.lang.String" />

      <form-property name="username" type="java.lang.String" />

    </form-bean>

 

修改后

<form-bean name="addForm" type="org.apache.struts.validator.DynaValidatorForm">

      <form-property name="password" type="java.lang.String" />

      <form-property name="username" type="java.lang.String" />

    </form-bean>

 

可以了,这集就讲到这里了!下集再见!

Feedback

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2005-12-13 16:44 by 灯雪

我期待的jsf什么时候能出来呢

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2005-12-13 19:09 by airblue
Very Good!~~~thx
收藏了先!~~

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2005-12-13 21:49 by lvhare
期待的jsf什么时候能出来呢

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2005-12-15 02:07 by jack chen
这里面的东西真的很好,真的感谢大哥如此热心!!!

有一小小建议:如果视频能换个格式就更好了,比如加上声音什么的.那样可能给我们初学者有更好的帮忙.

不管怎样,再次感谢!!!希望继续坚持下去.支持你!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2005-12-16 10:10 by freedream168
老大,东西太好了,希望有更新的力作!^O^

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2005-12-28 10:50 by camille
引用“关于在Action中使用 User 对像,我在这里没有使用 IoC 方式进行管理,这不好,希望大家在正式应用中使用。”

为什么不用上呢。我把楼主的作为入门教材了。希望一步一步的实现。学到很多。真心谢谢楼主,希望以后我也能够做一些教程出来。大家一起学习!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-12 09:13 by iakkwxf
忠心感谢大虾

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-12 09:55 by slan
测试成功,对spring认识了不少,感谢!希望介绍一下ioc的管理方式在具体项目中的应用!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-18 15:06 by ivan lee
现在国内热心的人越来越多了,向你们致敬。

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-18 16:22 by zzc
我觉得楼主在博客的排名比实际低了很多,支持楼主排前三名

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-19 20:55 by liu
谢谢您!
支持您!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-20 16:13 by jakybill
大哥,你要是出一本“struts+spring+hibernate实战练习”的书那该多好啊

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-01-27 06:40 by ninan
斑竹,完全有实力出书了,而且一定会比市面上的强百倍的!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-02-16 21:51 by zhip1997
不错.但是有个问题不解:为什么要写两个一样的Form(loginForm,addForm),就写一个(UserForm)是不是也可以呢?

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-02 09:42 by chii
真是太好了,始终关注楼主的博客!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-04 16:25 by greenboy
太感谢了!!! 正需要这些.

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-08 08:50 by wzwx
真是很棒,太感谢了

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-10 17:25 by Hally
@slan

关于在Action中使用 User 对像,我在这里没有使用 IoC 方式进行管理,这不好,希望大家在正式应用中使用.

作下面的修改,用IOC方式管理 User对象.

修改 AddAction.java,添加

private User user;
public User getUser(){
return user;
}
public void setUser(User user){
this.user=user;
}

修改 applicationContext.xml

加入

<bean id="user" class="com.app.Hibernate.User" />

修改下面的
<bean name="/add" class="com.app.struts.action.AddAction" singleton="false">

<property name="userDAO">

<ref bean="userDAOProxy" />

</property>

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

</bean>

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-10 17:26 by Hally
包名被改成我的了,注意一下,我也是刚学,照葫芦花瓢

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-13 19:03 by jurassic
这集调试起来顺利多了 很成功 感谢oksonic 期望新的一集:)

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-27 17:46 by lh
代码执行这里的时候出异常
User users=(User)this.getHibernateTemplate().load(User.class,lid);
this.getHibernateTemplate().delete(users);
异常:
could not initialize proxy - the owning Session was closed
怎么解决。。。我用的是ORACLE9i

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-03-31 21:12 by juxj
向您致敬!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-04-03 09:44 by lh
代码执行这里的时候出异常
User users=(User)this.getHibernateTemplate().load(User.class,lid);
this.getHibernateTemplate().delete(users);
异常:
could not initialize proxy - the owning Session was closed
怎么解决。。。我用的是ORACLE9i

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-04-07 13:09 by natolee
不说别得了,向您致敬!向您学习!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-04-11 17:52 by mr123
怎么现在下不来了?
地址找不到哦

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-05-10 09:28 by ayo
Great joy.
Thanks

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-05-14 23:20 by rombus
大哥,链接下不来啊。

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-05-16 13:38 by navysky
谢谢,大虾

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-05-19 18:39 by dfg
<html>

<head>

<title>Struts+Spring+Hibernate</title>

</head>



<body>

<a href="login.jsp">Login</a>

<br>

<a href="add.jsp">Add User</a>

<br>

<a href="find.do">Display</a>

</body>

</html>

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-05-19 18:39 by dfg
../----------------------------------------
<html>

<head>

<title>Struts+Spring+Hibernate</title>

</head>



<body>

<a href="login.jsp">Login</a>

<br>

<a href="add.jsp">Add User</a>

<br>

<a href="find.do">Display</a>

</body>

</html>

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-05-19 18:39 by dfg
<html>

<head>

<title>Struts+Spring+Hibernate</title>

</head>



<body>

<a href="login.jsp">Login</a>

<br>

<a href="add.jsp">Add User</a>

<br>

<a href="find.do">Display</a>

</body>

</html>

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-04 18:55 by praguesky
<managed-bean-name>userBean</managed-bean-name>
<managed-bean-class>com.web.vo.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>

如果设置成了 session 的话我 Logout 在 login 就会提示

User Name: "username": Error during model data update.
Password: "password": Error during model data update.

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-05 17:54 by u2liu
我好激动啊。。竟然能找到这个。。楼主我太爱你了。

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-11 10:35 by hnzwx
感谢大侠的辛勤劳动!继续努力!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-12 16:08 by Kele
好东东!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-22 10:32 by jsk
顶 支持

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-23 15:42 by flygoo
奇怪
按照指定的步骤到这里,add的时候没有addAction.java了
addForm.getString()不支持
那如何获得提交的username和password
我用的是struts1.1

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-06-23 16:10 by oolyou
楼主真是好人!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-08-17 16:42 by lingbing5719
很感谢LZ照着你的全做好了。再看看消化一下。
谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!谢谢了!!!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-08-22 11:41 by sophio
代码执行这里的时候出异常
User users=(User)this.getHibernateTemplate().load(User.class,lid);
this.getHibernateTemplate().delete(users);
异常:
could not initialize proxy - the owning Session was closed
怎么解决。。。我用的是ORACLE9i
是Action的Proxy问题吗?
希望楼主能帮我解决下,非常感谢!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-09-21 13:04 by zjy
1.请问 在display 页删除界面 单选框如果不选 怎么实现验证啊?
2.如何实现display排序
3.如何实现dispay提交删除后,就在当前页面刷新?


请摆忙之中给大家指点一下,万分感谢!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-10-17 21:11 by 野草sz
这个例子我做完了,需要代码的朋友这里下载:
http://www.15913.com/download/file/10061017/15913.com-withlib.rar

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-11-01 09:51 by 春风
LZ真的不知说什么好了 就一声谢谢吧

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-12-11 21:42 by 汤连春
你太伟大了,我用最美丽的语言也无法描述我对你的崇拜!!!!!

think you very very much!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2006-12-18 14:52 by LeVaN
http://www.anaali-seksi-video-ilmaiseksi.beibi.info ^^^ http://www.animoidut-seksi-hymia-t.beibi.info ^^^ http://www.mpeg-masasje-eskorte.biseksuell.info ^^^ http://www.filmrull-vintage-porn.biseksuell.info ^^^ http://www.mpeg-masasje-eskorte.erotiska.info ^^^ http://www.filmrull-vintage-porn.erotiska.info ^^^ http://www.luan-krasniqi-analt.fitta69.info ^^^ http://www.gallerier-striptease-bisexuell.fitta69.info ^^^ http://www.naken-anal-video.fotsex.info ^^^ http://www.brud-strumpbyxor.fotsex.info ^^^ http://www.otos-paska-taikuri.isomuna.info ^^^ http://www.kuumin-extreme.isomuna.info ^^^ http://www.portto-ematin-sokeritauti.laukeaminen.info ^^^ http://www.miellyttava-beibit-rakas.laukeaminen.info ^^^ http://www.nakne-bryst.rype.info ^^^ http://www.nefertiti-ektemann-filmrull.rype.info ^^^ http://www.galleri-pupper-harete.sadsprut.info ^^^ http://www.kukk-liten-videoer.sadsprut.info ^^^ http://www.lesbisk-hentai-torrent.tytsy.info ^^^ http://www.mieluisa-tytot-vittu.tytsy.info ^^^ http://www.butt-ass-dvd.18analsex.com ^^^ http://www.mature-anal-brunette.18analsex.com ^^^

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-02-06 13:31 by 学习中
谢谢楼主,希望能看下集

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-03-04 14:15 by danielchen19
非常感谢楼主这一力作,给我在自学SSH方面增强了不少信心,我想亲口跟你说声,谢谢!! 亦都期待日后有新的力作。

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程[未登录]  回复  更多评论   

2007-03-23 11:22 by sj
真的是太谢谢oksonic大侠了!这是我所看到的写得最好最完整的SSH实例,比书店里所谓的宝典、实战强多了!不过我还有一个问题要请教一下,我增加了一个中文的username,数据库里存入的也是中文,但是display.jsp显示的却是乱码,我已经加入了<%@ page language="java" contentType="text/html;charset=GBK" %> 不知还要怎么改。请oksonic兄指教。

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-04-30 10:15 by 86848658
dadfa

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-05-03 18:06 by pj_fla
感谢楼主,受益匪浅。敢问前几集的录像怎么下载呀

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-05-07 02:23 by oksonic
可以到www.oksonic.cn下载,不过要先注册!

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程[未登录]  回复  更多评论   

2007-05-12 10:05 by jason
在搂住的Struts+Spring+Hibernate练习(完整)这个例子中有个问题,就是
只要在applicationContext.xml中加上
<property name="mappingResources">
<list>
<value>com/yourcompany/hibernate/Users.hbm.xml</value>
</list>
</property>
这段代码 就 会找不到action
好不郁闷
MyEclipse 5.5.0 Milestone 1
Spring 2.0
Struts 1.2
hibernate 3.0
mysql 5.0
驱动 mysql-connector-java-3.2.0-alpha-bin
望各位兄弟 看看

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-07-05 16:20 by Sun
谢谢楼主

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-07-26 14:06 by tt
为什么下载不了呀

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-08-19 22:35 by guest
关于在Action中使用 User 对像,能不能提示下用 IoC 方式进行管理是怎么做的么

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2007-08-19 23:10 by guest
我看明白了,ioc方式进行管理就是通过getter和setter注入user

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程[未登录]  回复  更多评论   

2007-11-01 17:29 by 无名
为什么你的业务逻辑里面没有用到service层呢,个人觉得应该添加一些实用性地内容讲解,比如适合公司需求的稍微有点难度的事例讲解一下.

# re: Struts+Spring+Hibernate练习(完整)的续集录像教程  回复  更多评论   

2008-06-24 19:00 by paintsky
太好了。谢谢啊

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 103, comments - 1104, trackbacks - 0, articles - 0

Copyright © oksonic