基于MVC模式的Rails框架研究.pdf

上传人:qwe****56 文档编号:69624768 上传时间:2023-01-07 格式:PDF 页数:5 大小:340.29KB
返回 下载 相关 举报
基于MVC模式的Rails框架研究.pdf_第1页
第1页 / 共5页
基于MVC模式的Rails框架研究.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《基于MVC模式的Rails框架研究.pdf》由会员分享,可在线阅读,更多相关《基于MVC模式的Rails框架研究.pdf(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第2 3 卷 第 2 期 计 算 机 仿 真 2 0 0 6 年2 月 文章编号:1 0 0 6 9 3 4 8(2 0 0 6)0 2 0 2 7 00 5 基于 MVC模式 的 Ra i l s 框架研究 周迅飞,王毙声 (中国航天工程咨询中心,北京,1 0 0 0 3 7)摘要:随着 We b应用的普遍以及需求的多样化,其结构和内容越来越复杂,设计开发也越来越困难,开发者迫切需要能简化 开发过程,降低开发难度的框架,现有的 We b 应用框架却都不尽如人意,最近兴起的R a i l s 则是极大地响应了这种需求的一 个 We b 应用框架。首先简要介绍 M V C 设计模式,分析当前J

2、a v a 平台上各种We b 应用开发框架的不足,然后详细论述R a i l s 框 架的各种特性、核心体系结构以及关键技术,结合实例讲述运用 R a i l s 进行 W e b 应用开发的过程。以该框架为基础构建 We b 应用系统,缩短开发周期,降低开发代价,在迅速开发和部署 We b 应用方面体现了强大的优势。关键词:网络应用;模型;视图;控制器;模式;框架 中图分类号:T P 3 9 3 文献标识码:A An a l y s i s o f W e b Ap p l i c a t i o n Fr a me wo r k Ra i l s Ba s e d o n M VC Pa

3、 t t e r n ZHOU Xu n f e i WANG Ka n s h e n g (C A E C C,B e i j i n g 1 0 0 0 3 7,C h i n a)ABS TRACT:Al o n g w i t h t h e p o p u l a r i z a t i o n o f we b a p p l i c a t i o n,t h e r e q u i r e me n t s o f we b a p p l i c a t i o n a r e v a r y i n g,i t s s t r u c t u r e a n d c o

4、n t e n t a r e c o mp l i c a t e d,a n d i t S mo r e d i f f i c u l t t o d e s i g n a n d d e v e l o p i t De v e l o p e r s a r e i n n e e d o f a we b a p p l i c a t i o n f r a me w o r k wi t h c o n v e n i e n c e t o s i mp l i f y t h e p r o c e s s a n d r e d u c e t h e d i f f

5、 i c u l t y o f d e v e l o p me n t,w h i c h w e b a p p l i c a t i o n f r a me wo r k s i n e x i s t e n c e c a n t p r o v i e d Ho we v e r,t h e n e w f r a me wo r k Ra fts me e t s t h e n e e d T h e p a p e r i n t r o d u c e s t h e MVC d e s i g n p a t t e r n a n d a n a l y s e

6、s t h e d i s a d v a n t a g e s o f w e b a p p l i c a t i o n f r a me wo r k s o n J a v a p l a t f o r m,a n d t h e n i n t r o d u c e s a n d a n a l y s e s w e b a p p l i c a t i o n F r a me wo r k Ra i l s,e x p l o r e s i t s f e a t u r e s,k e r n e l a r c h i t e c t u r e,k e y

7、 t e c h n o l o g i e s,i l l u s t r a t e s t h e p r o c e s s o f d e v e l o p i n g we b a p p l i c a t i o n u s i n g Ra i l s wi t h e x a mp l e s B a s e d o n t h i s f r a me wo r k,t h e We b a p p l i c a t i o n c a n b e c o n s t r u c t e d a n d d e p l o y e d q u i c k l y a

8、n d e x p e d i e n t l y a t l o w c o s t,wh i c h i s t h e g r e a t e s t a d v a n t a g e o f Fr a me wo r k Ra i l s KEYW ORDS:We b a p p l i c a t i o n;Mo d e l;Vi e w;Co n t r o l l e r;De s i g n p a t t e r n;F r a me w o r k l 引言 J 2 E E由于所具有的开放性、跨平 台性而在 We h应用开 发平台中的地位如1 3 中天,在该平台上各种各

9、样的开发框架 层出不穷,但这些框架普遍有开发效率不高,应用程序配置 文件庞大复杂且难于管理的缺点。在这样的背景下,用 R u b y 语言编写基于 MV C模式的R a i l s 框架以其开发快捷、简单易 用的特点极大地简化了开发过程,降低开发成本,并 同时较 好地兼顾开发、运行效率,近来逐渐成为 We b应用开发者关 注的焦点。收稿日 期:2 0 0 51 1 1 7 -27 0-2 背景简介 2 1 MVC模式 MV C是三个单词的缩写,分别为:模 型(M o d e 1),视 图(V i e w)和控制(C o n t r o l l e r)。MVC模式的目的就是实现 We b 系统

10、的职能分工。视图(M o d e 1)层实现系统 中的业务逻辑;视 图(V i e w)层用 于与用 户 的交 互;C o n t r o l l e r层 是模 型(M o d e 1)与视图(V i e w)之间沟通的桥梁,它分派用户的请求 并选择相应的视图(V i e w)用于显示,同时它也解释用户的 输入并将输入映射为模型(Mo d e 1)层可执行的操作。在 MV C 模式 中,三层各司其职,如果哪一层需求发生变化。也只需更 改相应的层的代码而不会影响到其它层的代码,有利于组件 的重用。维普资讯 http:/ 2 2 Ru b y 语言 R u b y是松本行弘“Ma t z”(Ma

11、 t s u m o t o Y u k i h i r o)发明的 一种功能强大的面向对象的脚本语言,该语言语法简单,文 本处理能力强,并具有 自动垃圾回收、可移植性强、动态载入 等优点,还有异常处理以及迭代器等构造,与另一使用极广 的脚本语言P e r l 不相伯仲,可以用来方便快捷地进行面向对 象编程。2 3 当前主要 We b框架 在J 2 E E平台基于 MV C模式目前比较优秀的 MV C框架 中,出现早的有 S t r u t s、We b w o r k,新兴 的则有 S p r i n g MV C、T a p e s t r y、J S F(J a v a S e r v

12、e r F a c e s)等。这些框架都提供 了非常 好的层次分隔能力,并在实现良好的 MV C分隔的基础上,提 供许多现成的辅助类库,促进开发效率的提高。S t r u t s 可以说是 目前 J a v a We b MV C框架中最稳定、成熟 的,而且可扩展性和可配置性强。We b w o r k结构简单易于扩 展,标签库易于定制。S p r i n g MV C更加开放、清晰、全面、高 效,它使 简单组 件经 配置 能组合 成 复杂 的应用。J S F和 T a p e s t ry都是基于组件的事件驱动模型类的成熟框架。以上 框架各具优点,却都存在没有提供简单的使用方式的缺点,需要

13、使用大量的X M L文件进行配置管理,而正是在框架的 易用性上,R a i l s 提供了“一站式”面向用户简单易用的框架,这正是众多J a v a We b框架所缺乏的。3 Ra i l s 框架 3 1 介绍 R a i l s 是一个较新的 We b应用程序框架,它是用 R u b y 语 言编写的全栈(f u l l s t a c k)、开源的 We b 框架。全栈包括:We b 服务器(WE B r i c k)、处理 H T T P请求和响应,以及将数 据持久存储到关系数据库的框架。与通常只能完成 We b 应用 程序某一特定方面需求的J a v a 框架相比(如 S t r u

14、 t s 本身没有 自己的数据持久层),R a i l s 包含了非常完整的一套工具。易用性是 R a i l s 最显著的特征,也正是这点将 R a i l s与 众多 J a v a框架区分开来,并达到了 We b框架设计上的一次 突破。R a i l s 极高的开发效率得益于其简洁易用的设计语 言 R u b y 以及贯穿 R a i l s 框架设计始终的“习惯约定优于配置(C o n v e t i o n o v e r C o n f i g u r a t i o n)”和“编写更少的代码(L e s s c o d e)”思想。用 R a i l s 来开发We b 应用,所

15、需编写的全部代码 可能比大多数框架中的X ML配置文件还要少。简而言之,R a i l s通过消除复杂的 X ML配置文件,使用 R u b y 语言动态性质,帮助把静态类型语言中常见重复代码 减少到最少,使开发工作变得更容易,为 We b 应用程序开发 提供了一条易行道。3 2 体系结构 R a i l s 框架主要包括以下两部分:I)A c t i o n P a c k:包 含 M V C模 式 中视 图(V i e w)层 A c t i o n V i e w和控制(C o n t r o l l e r)层 A c t i o n C o n t r o l 两部分的实 现,其中控

16、制(C o n t r o l l e r)层部分处理从客户浏览器到达的 请求并将请求转至控制类相应的方法;视图(V i e w)层使用 模板系统返回结果页面,类似 A S P和 J S P。R a i l s采用和 S t r u t s 等框架不同的映射方式。它不依赖配 置文件把请求映射到某一个动作,砥是 球 U R L查拽适当的 _ !l l i l l_ A c t i o n 弧U R L 地 址h t t p:&|。“-1 o c a l h o s t b o o k l i s t。R a i l s 将 I b k映 扩展电 如 !一 畸 h C o n t r o l l

17、e r t B a s e Bo o k C o n t r o l l e r|_ l 一 类 见匿、丽,h 吼 呔|_|B o o k C o n t r o l l e r 类的 l i s t 方法,即调 用 B o o k C o n t r 0 1 1 e r 的l i s t 方法。同样 图l 控 制 器 类 的如果在 B o o k C。n t r。1 1 e r 类中定义 B。k c o n 。扩 展 了 fi n d方法,那么只要用 fi n d替 A 。“c。:B 代 U R L地址中的 l i s t,就能调用 fi n d方法。R a i l s 的 D i s p

18、a t c h S e r v l e t 是前端控制器模式的例子,它接 受 H T T P请求,解析 U R L,把请求转发给适当的 A c t i o n。对于 R a i l s 框架,A c t i o n 即是扩展 自A c t i o n C o n t r o l l e r 的类的一个方 法。在R a i l s 中A c t i o n 用来充当前端控制器和模型(Mo d e 1)之 间的桥梁。前端控制器负责接受请求,并把请求传递到特定 A c t i o n,而在 A c t i o n中调用模型(Mo d e 1)类进行各类数据操 作。图2 演示了 R a i l s 框

19、架 A c t i o n的基本运作原理:厂 r _ _ _ r 厂 I L 盔 一 i 越 一】L t 篮:L:0 _ _ J匕-一 一 一-_ I 图2 H T T P请求处理过程 2)A c t i v e R e c o r d:R a i l s框架 OR M(O b j e c tr e l a t i o n a l M a p p i n g 对象关系映射)层的实现部分,M 舶 州:s B 处理从关系数据库表到运行时(R u n t i m e)I。_ 模 型 对 象的自 动映 射,即 为M V C 中 的 一:o M(M。d e 1)。A c t i v e R e c o

20、r d包装数据库表或视图 一 0 中数据行的对象,封装数据库访 问过程。一 一 _ 在 R a i l s中,每个模型类都要扩展提供基 本 C R U D(C r e a t e R e a d U p d a t e D e l e t e,增 图 3 模 型 类 查 改 删)操 作 的基 类 A c t i v e R e c o r d:B o o k扩展 A c t i o n B a s e(见图 3)。与 H i b e r n a t e不同,A c t i v e R 。d:B R e c o r d不需要 映射文件,也 不需要对模 型类的 g e t t e r或 一2 71

21、 维普资讯 http:/ s e t t e r、甚至类属性进行编码。通过词汇分析,A c ti v e R e c o r d 能自动将扩展自A c t i o n R e c o r d:B a s e的 B o o k类映射到数据 库中的 b o o k s 表,通过使用 R u b y 语言中的反射和元编程的组 合,数据库表 b o o k s 的列也相应变成 B o o k类实例对象的属 性。3 3 关键技术 3 3 1 Ac t i o n P a c k 1)U R L地址路由(R o u t i n g)传人的 U R L 会由 C o n t r o l l e r 映射至某

22、 A c t i o n。缺省 映射 机制是:c o n t r o l l e r :a c t i o n :i d。例如 R a i l s收到 U R L地址 h t t p:l o c a l h o s t b o o s s h o w 2 1,R a i l s会 转 发 该 请 求 至 B o o k C o mr o l l e r 类名为s h o w的方法。并且R a i l s 将2 1 作为参数 哈希表中成员变量“i d”,该参数哈希表包含网页表单中的各 属性以及 U R L 地址字符串后的各参数。如以下代码中:c l a s s B o o k C o n t r

23、 o l 1 e r d e f s h o w b o o k=B o o k fi n d(p a r a m s :i d )e n d e n d 代码 1一B o o k C o mr o l l e r 以 p a r a ms :i d 即可取出UR L字符串中的参数“2 1”,将 i d为2 1的 B o o k 类实例对象赋给变量 b o o k 供视图模板使用。2)视图模板 视图模板指定了作为回应浏览器请求的 H T M L 代码,视 图模板是 r h t ml 文件(即嵌入 R u b y 代码的H T ML 文件)。在文 本中嵌在 中的是要执行的R u b y代码,而在

24、 中的是要直接返回值至 H T ML中 R u b y表达式。例 如:T h e i d o f t h e b o o k i s 代码 2一s h o w r h t m l 缺省情况下 R a i l s 会查找到并返回与当前执行的 A c ti o n 的名称相同的模板文件,如 R a i l s 在执行 B o o k C o n t r o l l e r 中的 s h o w 方法后,会在存放模板文件的目录中查找s h o w r h t m l 文 件 来 生 成 结 果 页 面,在 U R L 请 求h t t p:l o c a l h o s t b o o s s h

25、o w 2 1 被处理之后生成的结果页面文字内容为“T h e i d o f t h e b o o k i s 2 1”。3 3 2 Ac t i v e Re c o r d 1)自动映射 A c ti v e R e c o r d可 以 自动地将 数 据库 表 映射 成 模 型(M o d e 1)类,数据行映射成类的实例对象,以及数据列映射 成对象的属性。如果数据库中已存在下表:C R E A T E T A B L E b o o k s(i d i n t(1 0)N O T N U L L a u t o _ i n c r e m e n t,t i t l e v a r

26、 c h a r(2 5 5),2 7 2 P R I MA R Y K E Y(i d);代码 3一p r o d u c t s 表 而且有以下模型(Mo d a1)类 P r o d u c t 的声明:c l a s s B o o k Ac t i v e Re c o r d:Ba s e e n d 代码 4一模型类 B o o k 则会自动地将 B o o k 类映射至数据库表 b o o k s,并可以用 以下语句访问B o o k类:#从 b o o k s 表中查到B o o k类的第一个实例对象 my 一 b o o k;B o o k fi n d(:fi r s t

27、)S TDOU T,p r i n t my一b o o k t i t l e my 一 b o o k ti tl e=“T h e n e w t i t l e o f my fi r s t b o o k”代码 5一访问 B o o k 类 2)关联 大多数的数据库应用程序要使用相当多的表,并且表之 间可能会相互关联,此时只需设置各模型(M o d a1)类之间的 联系,Ac ti v e R e c o r d就会生成一系列方法使得可以方便地访 问模型(M o d e 1)类相关的数据。如:c l a s s F i r m Ac t i v e Re c o r d:Ba s

28、e h a sma n y:c l i e n t s#一个 F i r m关联多个 C l i e n t h a s_o n e:a c c o u n t#一个 F i r m关联一个 A c c o u n t e n d 代码 6一F i r m类 则可编写如下代码直接访问与 Fir m关联的 C l i e nt 以及 A c c o u n t 类的数据,当数据库中包含 c l i e nts 表以及a c c o u n t s 表(二者均有 n a m e 列),这段代码就可正常运行。my f i r m=Fir m fi n d(:fi r s t)S TDOUT p r

29、i n t myfi r m a c c o u n t n a m e#输 出 m y fi r m a c c o un t n ame f o r c l i ent i n myfi r m c l i e n t s#遍历 m y f i 1 T I I c l i e nts 每一 成员 据 S T DOUT p r i nt“c l i e n t:e n d 代码 7一访问与 F i r m 关联的C l i e n t 以及 A c c o u n t 类的数 4 应用 Ra i l s 框架 下文以作者 著作(A u t h o r Wo r k)为例演示 R a i l

30、s 框架 在开发We b 应用的方便快捷。P e r s o n(人员)记录个人的基本 信息,A uth o r(作者)对应一个 P e r s o n,A u t h o r 和Wo r k(著作)是多对多的关系,即一位 A uth o r 可以有零到多个 Wo r k,一个 Wo r k 可以有一到多位 A u t h o r,S o n g(歌曲)和B o o k(书籍)由 Wo r k 派生而来。编写一个简易的 We b 数据库交互程序,可以 增查改删P e r s o n,A uth o r 和Wo r k,S o n g,B o o k,并且给Wo r k 增 删作者或给 A u

31、t h o r 增删 Wo r k。4 1 建模分析 根据要求,可以得如图4 所示的类图。维普资讯 http:/ 圈4 作者著作(A u t h o r Wo r k)例类圈 4 2数据库设计 根据类图可得如图5所示的数据库设计图(My S q l 数据 库)。图5 作者著作(A u t h o r Wo r k)例数据库设计图 4 3示例编码 1)模型(M o d e 1)类编码 在M y S q l 数据库中建好以上数据库表后,要在 R u b y 类与 数据库 表 中建 立好映 射关 系,只需要编 写相应 的模 型 (Mo d e 1)类定义文件即可,如下:c l a s s Wo r

32、k “a u t h o r_w o r k”,:f o r e i g nk e y “wo r ki d e n d c l a s s S o n g W o r k#S o n g 类派生 自wo r k 类 e nd c l a s s Bo o k W o r k#B o o k类派生 自Wo r k 类 e nd c l a s s P e r s o n “a u t ho r_wo r k”,:f o r e i g nk e y “a u t h o r_i d”e n d 代码8一模型类 Wo r k,S o n g,B o o k,P e r s o n以及A u t

33、h o r 定 义 2)视图(V i e w)编码 以查看歌曲(S o n g)信息的页面模板(s o n g _ s h o w r h t m 1)为例,在页面列出歌曲的基本信息以及歌曲所有作者,以下 选取部分代码:标题(T i t l e):节拍(T e mp o):流派(G e n r e):(t a b l e 该歌曲所有作者(A u t h o r s):姓名(N a me):艺名(A l i a s):代码 9一s o n g _ s h o w r h t ml 3)控制器(C o n t r o l l e r)编码 以增删 人员(P e r s o n)以及 为著作(Wo

34、r k)增删 作者(A u t h o r)的操作为例,以下选取部分代码:2 7 3-维普资讯 http:/ c l a s s Au t h o r Wo r k C o n t r o l l e r p e r s o n l i s t )e n d d e f p e r s o n_d e s t r o y#由页面传回 p e r s o n的 i d查到 p e r s o n对象 p e r s o n=P e r s o n fi n d(p a r a ms “i d”)#将 p e r s o n从数据库删除 l e r s o n d e s t r o y r e

35、d i r e c t_t o(:a c t i o n=p e r s o n _ l i s t )e n d d e f wo r k_a u t h o r n e w#查到 w o r k 对象和 a u t h o r 对象 w o r k=Wo r k fi n d(p a r a ms “w o r k i d”)a u t h o r=A u t h o r fi n d(p a r a ms a u t h o r i d”)#将 a u t h o r 加入 w o r k的 a u t h o r s 集合 w o r k a u t h o r s (a u t h

36、o r)e n d d e f wo r ka u t h o r_d e s t r o y w o r k=Wo r k fi n d(p a r a ms w o r k i d”)a u t h o r=A u t h o r fi n d(p a r a ms a u t h o r _ i d”)#将 a u t h o r 从 w o r k的a u t h o r s 集合中删除 w o r k a u t h o r s d e l e t e(a u t h o r)e nd e n d 代码 1 O一增删人员(P e r s o n)以及为著作(Wo r k)增删 作者(

37、A u t h o r)的操作的代码 5 与 J a v a We b框架比较 R a i l s 框架与 J a v a平台上的大多数 We b框架比较,有如 下优点:1)简洁。框架优 良的设计再加上 R u b y 本身的动态语言 优势,使得 R a i l s 的代码量大约只有 S t r u t s We b w o r k+S p r i n g +Hi b e r n a t e的十分之一,为模型类加入默认的C R U D操作甚-2 7 4-至只需要一行代码,成倍缩减编码量,降低 We b应用开发工 作量。2)性能。构架在 A p a c h e 服务器上使用 F a s t C

38、G I 的 R a i l s 应用与构架在T o mc a t 服务器上 S t r u t s+S p r i n g+H i b e r n a t e 之 上的同类 J a v a 应用的运行速度快 1 5 一3 0。6 结语 R a i l s 框架使用简单,开发效率高的优点显而易见,不但 缩短开发时间,还减少资源投入,这也正是它引人注 目的主 要原因。再加上它清晰的 MV C体系结构,高效的 O R M层设 计,证明它的确是一个优秀的We b 应用开发框架。尽管 R a i l s 出现时间不长,还未出现基于它的企业级应用,能否适应复 杂的商业逻辑,能否保证令人满意的运行性能还有待

39、长期检 验,但凭着以上众多优点毫无疑问 R a i l s 在 We b应用开发领 域有着广阔应用前景并有希望大有作为。参考文献:1 j D a v e T h o m a s,D a v i d H e i n e m e i e r H a n s s o n A g i l e We b D e v e l o p m e n t w i t h R a i l s M T h e P r a g m a t i c P r o g r a m m e r,2 0 0 5 2j Y u k i h i r o Ma t s u m o t o R u b y I n A N u t s

40、h e l l M O R e i l l y,2 0 0 4 3 D a v e T h o m a s,C h a d F o w l e r,A n d y H u n t P r o g r a m m i n g R u b y:T h e P r a g m a t i c P r o gr a m m e r s G u i d e(S e c o n d E d i t i o n)M T h e Pr a g ma t i c P r o g r a mme r,2 0 0 4 4 D e e p a k A l u r,J o h n C r u p i,D a n M a

41、 l k s C o r e J 2 E E P a t t e r n s(S e c o n d E d i t i o n)M P e a r s o n E d u c a t i o n,2 0 0 3 5 S t e p h a n i e B o d o ff,E r i c A r m s t r o n g T h e J 2 E E T u t o r i a l(S e c o n d E d i t i o n)M A d d i s o nWe s l e y P r o f e s s i o n a l,2 0 o 4 6 C h r i s t i a n B

42、a u e r,G a v i n K i n g H i b e r n a t e i n A c t i o n M M a n n i n g P u bl i c a t i o n s 2 0 o 4 7 C h u c k C a v a n e s s P r o g r a mmi n g J a k a r t a S t r u t s(S e c o n d E d i t i o n)M O R e i l l y Me d i a,加o 4 8 C r a i g Wa l l s,R y a n B r e i d e n b a c h S p r i n g

43、i n A c t i o n M M a n n i n g Pu b l i c a t i o n s。2 0 05 作者简介】周迅飞(1 9 8 1 6一),男(汉族),湖南省津市人,硕 士生,主要研究方 向:We b应用。王 岜声(1 9 6 0 8一),男(汉族),黑龙江省哈尔滨 市人,硕士,中国航 天 工程许询 中心主 任,宇 航协 会计算机专业委员会主任,研究员,主要研究方 向:计算机应用,主要研究成果:“困民经济信息化初级阶段总体设 计”(1 9 9 8,获航天工业总公司科技进步二等奖),“综合集成的宏观 经济决策支持系统 MS M E D S S”(1 9 9 41 9 9 7,获国家科技进步二等 奖,同时获航天工业总公司科技进步一等奖)。维普资讯 http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 财经金融

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com