工大后院 工大后院,广东工业大学,广工,广工大,工大,后院,bbs,论坛 工大后院儿

广工二本广东省投档线589

Click here to open new window

CTRL+Mouse wheel to zoom in/out

  

» 游客: 注册 | 登录 | 后院博客 | 搜索 | 足彩 | 钱庄 | 新生指南 | 帮助

工大后院 » 【编程】编程圣殿 » [原创]Struts+Hibernate入门实例(Eclipse版)--已完成

广州各类课程优惠报名 雅思、外语、IT,好课一网打尽 快乐大学城RSSRss2 三评广工:支持不看好1 不看好2 我们都是工大牌

To新生:工大后院是什么? 毕业在即,越来越伤感~~· 广州如何坐车到大学城? HOT:GDUT,I MISS U! 再见了,对面楼的师妹

上一主题 下一主题

21 1/2 1 2 >



标题: [原创]Struts+Hibernate入门实例(Eclipse版)--已完成

wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 [广告]: “某校东区收电费的工作人员殴打学生”的事件的冷思考!〔推荐〕 [原创]Struts+Hibernate入门实例(Eclipse版)--已完成

呵呵,拖了那么久,今晚终于下定决心决定要把这篇文章写完。废话不多说,按照我以往的习惯,本篇文章分下列几part来下:

一、前言

二、相关概念与工具介绍

三、实例需求与总体设计

四、持久化层与业务层实践(Hibernate实践)

五、控制层与表示层实践(Struts实践)

六、发布与运行

七、写在最后

[ Last edited by wool王 on 2005-10-25 at 09:49 ]

相关关键字: eclipse hibernate struts 实例 入门



啊贾克斯在春天冬眠.

  

2005-10-6 21:32 #1



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 [广告]: 如何提高就业率??? 一、前言

J2EE和.NET是目前企业级运用的两大阵营,谁优谁劣各有说法。笔者是做J2EE方向的,觉得J2EE比起.NET最大的优势就是其经过长实践发展总结出来的大量模式和大量先进的框架。这些框架许多都是开源的——开源也是J2EE阵营的另一优势。本篇文章的主角就是目前J2EE web应用中最流行的两大开源框架——Hibernate和Struts。

[ Last edited by wool王 on 2005-10-22 at 12:34 ]

2005-10-6 21:33 #2



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 [广告]: 后院隔壁风景独特! 二、相关概念与工具介绍

下面我将分别对本文“三大主角”所涉及到相关概念进行说明。

Hibernate及相关知识介绍

Hibernate:

中文意思是"冬眠“,呵呵,不知道设计者为何用这个名字。它是一个开源的ORM框架(关于ORM下文还会讲解),它是通过对JDBC API进行封装从而实现对java对象持久化的。有人可能要问:JDBC其实不难操作,为什么还要封装它哪?其实答案很简单,因为现在通用的数据库都是关系数据库,我们通过JDBC操作无法做到OOP,所以Hibernate将JDBC封装起来,并且提供了一套OO化的Hibernate API供顶层操作。Hibernate现在几乎已经成为ORM的公认标准了(刚推出的EJB 3.0标准中使用的ORM事实上就是Hibernate)

ORM:

这里解释下ORM。ORM是一种模式(关于模式,笔者之前在这里发表过一篇介绍工厂模式的文章,读者可以看看),它的英文是Object-Relation Mapping,中译为对象-关系映射,它指的是“在单个组建中负责所有实体域对象的持久化,封装数据访问细节”(注:此定义来自《精通Hibernate:java对象持久化技术详解》,孙卫琴,电子工业出版社)。笔者的觉得很容易理解:把关系数据库对象化。

Struts及相关知识介绍

Struts:

Struts是由著名的Apache基金会开发的开源项目。中译为“框架”,顾名思义,它就是一种MVC框架。众所周知,MVC是一种业务逻辑与表示分离的模式,在java web上的应用十分广泛。以前MVC的主要表现形式是JSP Model2,也就是JSP+Servlet+Javabean的应用,而近年来Struts的应用越来越广泛,目前已经是最流行的MVC框架了。

MVC:

Model-View-Controller,中译为模型-视图-控制器。MVC不是真正意义上的软件设计模式,而更是一种解决方案,它把软件系统的所有业务逻辑方面的编程交给了Model,把所有UI视图的设计和编程交给了View,再用Controller控制器控制Model并生成相应的View,从而真正实现了业务逻辑与用户界面的分离。

Eclipse介绍

Eclipse是由IBM公司开发出来,后来又免费捐献出来的开源工具,是一套主要用于Java开发的IDE(Eclipse通过添加某些插件可以实现对UML、C++等的开发)。Eclipse具有强大的扩展功能,加上其开源的特性,导致许多爱好者和公司为其开发了非常优秀的插件,Myeclipse就是其中之一。Myeclipse是面向J2EE开发者的Eclipse插件,功能强大,好用。本文的实例就是基于Eclipse+Myeclipse环境下开发出来的。

创建/运行本文实例除了安装以上工具和插件外还需要安装一个Web容器,本文使用的是Jboss,笔者可以自行选择使用Tomcat或Weblogic等,这些对运行本文实例影响不大。

本文选择的数据库是SQLServer2000,关于Mysql、Oracle等其他数据库的操作方法类似。

关于Eclipse下载和安装方法本文不做介绍,请读者自行在网上查找相关方法。

[ Last edited by wool王 on 2005-10-22 at 17:22 ]

2005-10-6 21:33 #3



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 [广告]: 西五发生窃案,大家注意保护好财产 三、实例需求与总体设计

1、需求定义

由于本文的目的是介绍在Eclipse IDE下开发Struts+Hibernate的具体方法,而不是介绍项目开发/软件设计的技巧,所以本文实例需求非常简单。

本文实例是一个web留言簿,可以让匿名用户发表一些留言信息,并保存至数据库。做过web开发的朋友肯定做过这类实例,非常经典。由于实例简单并且容易理解,所以笔者也省去画用例图说明的步骤。

2、总体设计

本实例按传统J2EE web项目的设计方法,分为5层架构,自底向上分别是:数据库层 -> ORM层(Hibernate层) -> 业务逻辑层 -> 控制层(Struts Action) -> 视图表示层。

数据库的DDL语句如下:

CODE:

[Copy to clipboard]

create database memotest

create table Memo

(

ID int not null identity(1,1),

topic varchar(255),

content text,

guest varchar(50),

primary key(ID)

)

[ Last edited by wool王 on 2005-10-22 at 19:19 ]

2005-10-6 21:34 #4



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 [广告]: 大学城男生不吐不快:致东十三4楼某宿舍4位女生的公开信 〔推荐〕 四、持久化层与业务层实践(Hibernate实践)

好,戏肉开始。

1、先打开Eclipse。点击“新建项目”->“Web Project”,出现如下窗口,在窗口中Project Name填入“Memo”作为项目名:



2、点击“窗口”->“打开透视图”->“其他”,出现如下窗口,双击“Myeclipse Database Explorer”,切换到如下视图:



3、在“DB Browser”控制面板点击“new”,新建一个数据库连接。在弹出的窗口中点击“new driver”新建一个数据库连接驱动。如下图:



4、上一步后回到以下视图,在列表中选择上一步创建的驱动,填入相关数据库资料,点击确定即可。(此步骤前必须已经打开数据库,最后已经按照本实例的DDL创建了库和表)



5、完成上一步后出现以下视图。点击“memo”的右键,点击“open connetion”->“确定”。如果上述步骤成功的话这里会连接到数据库,并显示相关的数据库结构。



成功后如下图:



6、点击“窗口”->“打开透视图”->“其他”->“Myeclipse”切换到项目控制视图。在项目名上点击右键->“myeclipse”->“Add Hibernate capabilites”,出现以下视图,并按下图填入相关信息:



点下一步后出现如下框图,按图片上内容填写:



提交后出现以下视图,按图片内容填写:



7、在项目名上点击右键->“myeclipse”->“Add Struts capabilites”,出现下面视图,按图中内容天下:



8、点击“窗口”->“打开透视图”->“其他”,出现如下窗口,双击“Myeclipse Database Explorer”,切换到数据库管理视图,找到我们为本次实例创建的表格,点右键->“create hibernate mapping”后出现下图,按图上内容填写:



9、至此Hibernate的创建工作已经完成,如下图,接下来我们写个DAO工厂类来操作Hibernate API。



点击com.woden包,新建个类,如下图:



输入以下代码:

CODE:

[Copy to clipboard]

package com.woden;

import net.sf.hibernate.HibernateException;

import net.sf.hibernate.Session;

import net.sf.hibernate.Transaction;

public class MemoDAOFactory {

Session session;

Transaction tx;

public void add(Memo memo) throws HibernateException{

try{

session = SessionFactory.currentSession();

tx = session.beginTransaction();

session.save(memo);

tx.commit();

}catch(HibernateException e){

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

}finally{

if(tx!=null){

tx.rollback();

}

SessionFactory.closeSession();

}

}

}

以上只有一个插入方法,如果读者需要更多方法可以在DAO中自行添加。

至此,数据库层、ORM层和业务层的代码已经完成。

[ 本帖最后由 wool王 于 2006-2-27 03:32 编辑 ]

2005-10-6 21:34 #5



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 [广告]: 后院隔壁风景独特! 五、控制层与表示层实践(Struts实践)

1、新建一个welcome.jsp文件,作为实例的首页。具体方法是在“webroot”文件夹图标点右键->new->“jsp”,接下来填写的东西很简单就不用介绍了吧。

2、在上一步骤的第7步中已经在myeclipse中导入了struts,我们下面就可以开始编辑设置我们的struts实例。打开webboot目录下WEB-INF中的struts配置文件“struts-config.xml”,如下图:



3、在屏幕空白处点右键->“new”->“new form,action and jsp”,会出现如下视图,按下图提示填写内容:



这里记得点击“jsp”标签条,出现以下界面,按下图设置:



4、上一步骤设置了form,点击下一步看到如下视图,按下图设置,具体步骤是:点击“foward”标签->“add”->name填“success”,path选择“welcome.jsp”,其他不用填->确定。



5、上一步骤点击了“完成”后出现下图:



6、这一步骤是设置资源文件,为了struts的国际化和错误提示做准备。找到项目文件夹中src(源文件夹),找到ApplicationResourse.properties,双击打开,如下图所示配置:(注:这里笔者安装了一个免费的ascii转unicode的插件)



如果读者没有安装ascii自动转unicode组建,可以直接copy我转换后的资源文件内容:

CODE:

[Copy to clipboard]

form.addmemo.err.content=\u7559\u8a00\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a\u3002

form.addmemo.err.guest=\u7559\u8a00\u8005\u59d3\u540d\u4e0d\u80fd\u4e3a\u7a7a\u3002

form.addmemo.err.topic=\u7559\u8a00\u6807\u9898\u4e0d\u80fd\u4e3a\u7a7a\u3002

jsp.addmemo.content=\u8bf7\u8f93\u5165\u5185\u5bb9\uff1a

jsp.addmemo.guest=\u60a8\u7684\u59d3\u540d\uff1a

jsp.addmemo.pagetitle=\u7559\u8a00\u6dfb\u52a0

jsp.addmemo.reset=\u91cd\u8bbe

jsp.addmemo.submit=\u63d0\u4ea4

jsp.addmemo.topic=\u6807\u9898\uff1a

jsp.welcome.content=\u6b22\u8fce\u4f7f\u7528Hibernate+Struts\u5b9e\u4f8b\u3002

jsp.welcome.title=\u4f60\u597d\u3002\u3002\u3002

7、下面打开com.woden.form.MemoForm.java文件,输入以下代码:

CODE:

[Copy to clipboard]

package com.woden.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionMessage;

public class MemoForm extends ActionForm {

private String topic;

private String content;

private String guest;

public ActionErrors validate(

ActionMapping mapping,

HttpServletRequest request) {

ActionErrors errors = new ActionErrors();

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

{

errors.add("memoform.err.guest",new ActionMessage("form.addmemo.err.guest"));

}

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

{

errors.add("memoform.err.topic",new ActionMessage("form.addmemo.err.topic"));

}

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

{

errors.add("memoform.err.content",new ActionMessage("form.addmemo.err.content"));

}

return errors;

}

public void reset(ActionMapping mapping, HttpServletRequest request) {

this.topic=null;

this.content=null;
工大后院 工大后院,广东工业大学,广工,广工大,工大,后院,bbs,论坛 工大后院儿

this.guest=null;

}

public String getTopic() {

return topic;

}

public void setTopic(String topic) {

this.topic = topic;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public String getGuest() {

return guest;

}

public void setGuest(String guest) {

this.guest = guest;

}

}

8、上面已经写出了ActionForm的代码,具体代码笔者在这里不解释,我想看过struts基础的朋友都应该很清楚了,下面贴处Action的代码:

CODE:

[Copy to clipboard]

package com.woden.action;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.woden.Memo;

import com.woden.MemoDAOFactory;

import com.woden.form.MemoForm;

public class MemoAction extends Action {

public ActionForward execute(

ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response) {

MemoForm memoForm = (MemoForm) form;

MemoDAOFactory memoDAO = new MemoDAOFactory();

Memo memo = new Memo();

memo.setTopic(memoForm.getTopic());

memo.setContent(memoForm.getContent());

memo.setGuest(memoForm.getGuest());

try{

memoDAO.add(memo);

}catch(Exception e)

{

System.out.print(e.toString());

}

return mapping.findForward("success");

}

}

9、最后编辑下几个相关jsp文件的内容,分别如下:

CODE:

[Copy to clipboard]

welcome.jsp

<%@ page contentType="text/html; charset=utf-8" %>

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

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

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

<html:html>

<head>

<html:base />

<title><bean:message key="jsp.welcome.title"/></title>

</head>

<body>

<bean:message key="jsp.welcome.content"/>

</body>

</html:html>

addmemo.jsp

<%@ page contentType="text/html; charset=utf-8"%>

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

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

<html>

<head>

<title><bean:message key="jsp.addmemo.pagetitle"/></title>

</head>

<body>

<html:form action="/memo">

<bean:message key="jsp.addmemo.guest"/><html:text property="guest"/><html:errors property="memoform.err.guest"/><br/>

<bean:message key="jsp.addmemo.topic"/><html:text property="topic"/><html:errors property="memoform.err.topic"/><br/>

<bean:message key="jsp.addmemo.content"/><html:textarea property="content"/><html:errors property="memoform.err.content"/><br/>

<html:submit><bean:message key="jsp.addmemo.submit"/></html:submit>

<html:reset><bean:message key="jsp.addmemo.reset"/></html:reset>

</html:form>

</body>

</html>

至此,本实例完成。

[ 本帖最后由 wool王 于 2006-2-27 03:33 编辑 ]

2005-10-6 21:34 #6



寂寞高手

普通房客

  

UID 1326

精华 0

积分 3448

帖子 191

活跃分 3448

饭票 140

阅读权限 30

注册 2003-9-18

状态 离线 枪位

2005-10-9 08:44 #7



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 六、发布与运行

1、在项目文件点右键->“myeclipse”->“Add and remove project deployment”,如下图:



2、点击  图标,选择“Jboss”->“start”(注:这里如果用的是tomcat也类似操作,关于服务器配置的方法这里不祥谈,请读者自行在网上查找相关资料),会发现控制台会输出类似如下信息:



打开浏览器,输入:http://localhost:8080/ 后如果出现下图证明启动成功:



3、输入网址:http://localhost:8080/Memo/addmemo.jsp ,会看到效果图如下图:



4、按照正常流程和非正常流程分别留言一次,呵呵,效果出来没有?如果没有出现预期效果请检查前面步骤。

[ 本帖最后由 wool王 于 2006-2-27 03:34 编辑 ]

2005-10-22 20:27 #8



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 七、写在最后

在本文最后,笔者再次强调,本文的目的是介绍Eclipse IDE关于创建Struts+Hibernate应用的方法,而不是介绍j2ee框架的概念和运用,更不是介绍java设计与模式。本文对IDE的配置、服务器配置的方法也没做详细介绍,因为这都不是本文重点。对以上知识想了解多点的读者可以google一下。

本文的实例只是一个入门,强调的是一种方法,而不是强调功能,所以本文的实例只有一个简单的录入功能。在看完本文后读者可以添加更多的功能(我想,当这一架构搭建起来后,添加功能已经是相当容易的事情了)。

有任何意见和建议欢迎大家跟贴发表。转贴请注明“工大后院版权所有”,最后欢迎大家访问我的Blog:http://blog.csdn.net/woolceo 。

[ Last edited by wool王 on 2005-10-25 at 09:33 ]

2005-10-22 20:28 #9



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线

QUOTE:

Originally posted by 寂寞高手 at 2005/10/9 00:44:

枪位

靓仔,为了文章美观,介意让个位吗?呵呵

2005-10-25 17:34 #10



hjack

版主

    

H i J a c k E R



UID 443

精华 4

积分 4759

帖子 1387

活跃分 4759

饭票 9822

阅读权限 150

注册 2003-11-6

来自 0758

状态 离线 用户名: hjack [退出登录]

作者: wool王

评分: 积分 15 点

标题: [原创]Struts+Hibernate入门实例(Eclipse版)--已完成

这段时间较忙,先加你分,迟D再看。。。

2005-10-26 13:50 #11



hjack

版主

    

H i J a c k E R



UID 443

精华 4

积分 4759

帖子 1387

活跃分 4759

饭票 9822

阅读权限 150

注册 2003-11-6

来自 0758

状态 离线 把开源进行到底,建议不用myeclipse,毕竟不是免费的.

我是用easystruts的,但对eclipse 3.0以上没有支持,所以我用eclipse 2.1开发struts 的.

2005-10-27 20:43 #12



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 楼上我也想过。。。easystruts我没用过,,,我倒是用了开发hibernate那个开源的插件。。。发现没有myeclipse好用。。。比较郁闷。。。

斑竹有空写个“开源进行到底”的帖子啊。。。

2005-10-27 23:25 #13



Ericmaniac

普通房客

  



UID 8506

精华 0

积分 1929

帖子 33

活跃分 1929

饭票 100

阅读权限 30

注册 2005-7-3

状态 离线 感谢wool,hjack

2005-10-31 01:27 #14



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 重新处理了下图片

2006-2-27 11:39 #15



Ericmaniac

普通房客

  



UID 8506

精华 0

积分 1929

帖子 33

活跃分 1929

饭票 100

阅读权限 30

注册 2005-7-3

状态 离线 支持wool大作。

2006-3-10 22:28 #16



crab

普通房客

  

我是某人!



UID 2383

精华 0

积分 2322

帖子 20

活跃分 2322

饭票 600

阅读权限 30

注册 2004-3-10

来自 澄海----->西三

状态 离线 好好学习!

2006-3-16 16:57 #17



gzxthebest

新生报到



UID 18670

精华 0

积分 102

帖子 2

活跃分 102

饭票 100

阅读权限 5

注册 2006-6-1

状态 离线 完全按照上面的操作步骤操作,但是最后数据库里没有写进东西,有什么原因么,斑斑帮我分析分析啊

2006-6-2 12:52 #18



powerwind

版主

    



UID 5311

精华 0

积分 2473

帖子 561

活跃分 2473

饭票 100

阅读权限 150

注册 2004-11-23

来自 guangdong

状态 离线 Wool应该很快出现,但是楼上最好把你的问题说得详细点.

是不是一切正常,就只是数据厍没写入,还是还有其它?错误信息呢?

2006-6-2 16:26 #19



wool王 (Woden)

版主

    

珠宝世家



UID 1083

精华 8

积分 4235

帖子 2015

活跃分 4235

饭票 87634

阅读权限 150

注册 2003-10-16

状态 离线 不好意思,刚才仔细查看了我的文章,发现了一个错误:



里面的连接字符串中的database应该改成DatabaseName,也就是用以下这种形式:

jdbc:microsoft:sqlserver://localhost;DatabaseName=数据库名

因为我在不同的地方发表过这篇文章,后来发现了这个问题的时候在其他地方修改了,但在后院忘了改。

18楼的问题可能是因为这里导致的。



啊贾克斯在春天冬眠.

  

2006-6-4 15:20 #20





21 1/2 1 2 >



相关主题 更多相关主题

标题 论坛 作者 回复 查看 最后发表

[经验]j2ee学习之路 【编程】编程圣殿 wool王

2006-03-19 16 554 2006-07-08 11:06:12

JSF入门系列:Hello World!(已完成) 【编程】编程圣殿 wool王

2006-07-13 25 150 2006-07-16 17:25:27

[请教]怎么开始学习J2EE? 【编程】编程圣殿 powerwind

2006-03-17 15 253 2006-06-07 21:08:13

请问关于struts里面 html:error 标签显示乱吗问题 【编程】编程圣殿 hyxin

2006-05-11 9 56 2006-05-25 18:39:47

原创贴合集(不断更新) 【编程】编程圣殿 hjack

2005-06-05 4 726 2006-07-15 15:23:57

可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间



Powered by Discuz! 4.1.0 © 2001-2006 广东工业大学工大后院

所有时间为 GMT+8, 现在时间是 2006-7-26 08:03 清除 Cookies - 联系我们 - 广告联系 - 后院公共FTP - 后院网站地图 - 工大后院 - Archiver - WAP 界面风格 ---------- 默认风格

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/165721.html

更多阅读

天津工业大学2012上海校友会 天津大学上海校友会

一 天津工大上海校友会&#10084;前奏篇每件欢乐的事情,总会有高潮的出现,高潮前,总会有个前奏,有的前奏时间长,有的前奏时间短,比如每年在钱塘江观潮的人们,有的等了一天一夜,潮水不来,有的人刚刚一到钱塘江边,潮水如猛虎下山,千层浪花涌上岸,高

声明:《工大后院 工大后院,广东工业大学,广工,广工大,工大,后院,bbs,论坛 工大后院儿》为网友简遇而安分享!如侵犯到您的合法权益请联系我们删除