搜档网
当前位置:搜档网 › RESTEasy入门经典

RESTEasy入门经典

RESTEasy入门经典
RESTEasy入门经典

RESTEasy是JBoss的开源项目之一,是一个RESTful Web Services框架。RESTEasy的开发者Bill Burke同时也是JAX-RS的J2EE标准制定者之一。JAX-RS 是一个JCP制订的新标准,用于规范基于HTTP的RESTful Web Services的API。

我们已经有SOAP了,为什么需要Restful WebServices?用Bill自己的话来说:"如果是为了构建SOA应用,从技术选型的角度来讲,我相信REST比SOAP更具优势。开发人员会意识到使用传统方式有进行SOA架构有多复杂,更不用提使用这些做出来的接口了。这时他们就会发现Restful Web Services的光明之处。"

说了这么多,我们使用RESTEasy做一个项目玩玩看。首先创造一个maven1的web 项目

Java代码

1.mvn archetype:create -DgroupId=org.bluedash \

2.

3.-DartifactId=try-resteasy -DarchetypeArtifactId=maven-archetype

-webapp

准备工作完成后,我们就可以开始写代码了,假设我们要撰写一个处理客户信息的Web Service,它包含两个功能:一是添加用户信息;二是通过用户Id,获取某个用户的信息,而交互的方式是标准的WebService形式,数据交换格式为XML。假设一条用户包含两个属性:Id和用户名。那么我们设计交换的XML数据如下:

Java代码

1.

2. 1

3. liweinan

4.

首先要做的就是把上述格式转换成XSD2,网上有在线工具可以帮助我们完成这一工作3,在此不详细展开。使用工具转换后,生成如下xsd文件:

Java代码

1.

2.

lt="qualified"

3.version="1.0" xmlns:xsd="https://www.sodocs.net/doc/1d350286.html,/2001/XMLSchema">

4.

5.

6.

7.

8.

9.

10.

11.

有了xsd文件,我们便可以使用JDK自带工具的xjc将xsd转换成为Java的Class。将上述xsd文件存为 user.xsd,并使用如下命令进行转换:

Java代码

1.xjc user.xsd

执行结束后我们会得到一系列的类文件:

Java代码

1.Li-Weinans-MacBook-Pro:Desktop liweinan$ xjc user.xsd

2.parsing a schema...

https://www.sodocs.net/doc/1d350286.html,piling a schema...

4.generated/ObjectFactory.java

5.generated/UserType.java

这样,我们的XML格式的交换数据便转化为面向对像的Java类了,是不是感觉有点像Hibernate的ORM理念?没错,将XML映射成成面向对象的数据类,这个过程叫做XML Binding,即XML绑定。这个过程也有J2EE标准,叫做JAXB4。而RESTEasy是全面支持JAXB的。可以说RESTEasy所支持的JAX-RS标准,当与JAXB 标准结合在一起使用时,就可以发挥出最大优势,让程序员少写一堆一堆的代码。有关JAXB标准,会在独立的篇章中详细讨论,在此先不展开。总之我们将生成的Java类放进项目中等候使用。我们可以看一下UserType类的内容:

Java代码

1.package org.bluedash.resteasy;

2.

3.import javax.xml.bind.annotation.XmlAccessType;

4.import javax.xml.bind.annotation.XmlAccessorType;

5.import javax.xml.bind.annotation.XmlElement;

6.import javax.xml.bind.annotation.XmlType;

7.

8.@XmlAccessorType(XmlAccessType.FIELD)

9.@XmlType(name = "userType", propOrder = {

10. "id",

11. "name"

12.})

13.public class UserType {

14.

15. protected int id;

16. @XmlElement(required = true)

17. protected String name;

18.

19. /**

20. * Gets the value of the id property.

21. *

22. */

23. public int getId() {

24. return id;

25. }

26.

27. /**

28. * Sets the value of the id property.

29. *

30. */

31. public void setId(int value) {

32. this.id = value;

33. }

34.

35. /**

36. * Gets the value of the name property.

37. *

38. * @return

39. * possible object is

40. * {@link String }

41. *

42. */

43. public String getName() {

44. return name;

45. }

46.

47. /**

48. * Sets the value of the name property.

49. *

50. * @param value

51. * allowed object is

52. * {@link String }

53. *

54. */

55. public void setName(String value) {

56. https://www.sodocs.net/doc/1d350286.html, = value;

57. }

58.

59.}

可以看到,XML格式就是通过一些JAXB的标记被映射成了Java类。我们没写什么代码,已经把数据模型定义清楚了。接下来我们撰写最核心的WebService API。我们的WebService包含两个接口:一个是添加用户接口createUser,另一个是获取用户接口getUser:

Java代码

1.package org.bluedash.resteasy;

2.

3.import https://www.sodocs.net/doc/1d350286.html,.URI;

4.import java.util.Map;

5.import java.util.concurrent.ConcurrentHashMap;

6.import java.util.concurrent.atomic.AtomicInteger;

7.

8.import javax.ws.rs.Consumes;

9.import javax.ws.rs.GET;

10.import javax.ws.rs.POST;

11.import javax.ws.rs.Path;

12.import javax.ws.rs.PathParam;

13.import javax.ws.rs.Produces;

14.import javax.ws.rs.WebApplicationException;

15.import javax.ws.rs.core.Response;

16.

17.@Path("/users")

18.public class UserServlet {

19.

20. private Map userStore =

21. new ConcurrentHashMap();

22. private AtomicInteger idGenerator = new AtomicInteger();

23.

24. @POST

25. @Consumes("application/xml")

26. public Response createUser(UserType user) {

27. user.setId(idGenerator.incrementAndGet());

28. userStore.put(user.getId(), user);

29. System.out.println(user.getName() + " created: "

30. + user.getId());

31. return Response.created(URI.create("/users/"

32. + user.getId())).build();

33. }

34.

35. @GET

36. @Path("{id}")

37. @Produces("application/xml")

38. public UserType getUser(@PathParam("id") int id) {

39. UserType u = userStore.get(id);

40. if (u == null) {

41. throw new WebApplicationException(

42. Response.Status.NOT_FOUND);

43. }

44. return u;

45. }

46.

47.}

用几个简单的JAX-RS标记,便把普通的函数变成了WebService接口。而这些标记将由RESTEasy支持生效。接下来我们将要进行RESTEasy的配置工作。RESTEasy 的配置方法有多种多样,可以和Spring等容器集成,也可以独立运行,因为我们用的Servlet的形式使RESTEasy进行工作,这也是最主流的方式,因此在这里使用web容器来加载它,首先定义一个配置类:

Java代码

1.package org.bluedash.resteasy;

2.

3.import java.util.HashSet;

4.import java.util.Set;

5.

6.import javax.ws.rs.core.Application;

7.

8.public class BluedashResteasyApplication extends Application {

9. private Set singletons = new HashSet();

10. private Set> classes = new HashSet>();

11.

12. public BluedashResteasyApplication() {

13.// classes.add(UserServlet.class);

14. singletons.add(new UserServlet());

15. }

16.

17. @Override

18. public Set> getClasses() {

19. return classes;

20. }

21.

22. @Override

23. public Set getSingletons() {

24. return singletons;

25. }

26.}

这个类扩展JAX-RS的Application接口,用于封装我们的WebService API方法。我们可以看到JAX-RS支持两种封装方法,一种是classes封装,由容器管理WebServices类的实例化和销毁等动作,一个线程一个实例,开发者不需要关心线程安全问题。但这种方法可能比较浪费资源。如果开发者想自己管理线程安全,共线程共用一个WebServices实例,那么就用singletons封装。我们在这里用的singletons封装,这也就解释了为什么我们在 UserServlet中使用了ConcurrentHashMap和AtomicInteger这些保障线程安全的类。接下来就是在web.xml中启动RESTEasy:

Java代码

1.

2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

3. "https://www.sodocs.net/doc/1d350286.html,/dtd/web-app_2_3.dtd" >

4.

5.

6. Archetype Created Web Application

me>

7.

8.

9. javax.ws.rs.core.Application

10. org.bluedash.resteasy.

11. BluedashResteasyApplication

12.

13.

14.

15. org.jboss.resteasy.plugins.server.

16. servlet.ResteasyBootstrap

17.

19.

20. Resteasy

21. org.jboss.resteasy.plugins.server.servle

t.

22. HttpServletDispatcher

23.

24.

25.

26. Resteasy

27. /*

28.

29.

没错,就是这么简单,这样,我们的WebService就完成了!还差点什么呢?嗯,还差一个Test Case来使用我们的WebService接口,并验证它的正确性,让我们来写一个TestUserAPI

Java代码

1.package org.bluedash.resteasy.test.integration.test;

2.

3.import java.io.IOException;

4.import java.io.OutputStream;

5.import https://www.sodocs.net/doc/1d350286.html,.HttpURLConnection;

6.import https://www.sodocs.net/doc/1d350286.html,.URL;

7.

8.import junit.framework.TestCase;

9.

10.public class TestUserAPI extends TestCase {

11. public static final String USER_API =

12. "http://127.0.0.1:8080/try-resteasy/users";

13.

14. public void testCreateUserAndGetUser() throws IOException {

15. URL url =

16. new URL(USER_API);

17. HttpURLConnection connection =

18. (HttpURLConnection) url.openConnection();

19. connection.setRequestMethod("POST");

20. connection.setRequestProperty("Content-Type", "applicat

ion/xml");

21. connection.setDoOutput(true);

22. connection.setInstanceFollowRedirects(false);

23. connection.setConnectTimeout(1000);

25. String userXML = "liweinan";

26. OutputStream os = connection.getOutputStream();

27. os.write(userXML.getBytes());

28. os.flush();

29.

30. assertEquals(HttpURLConnection.HTTP_CREATED, connection

31. .getResponseCode());

32. connection.disconnect();

33.

34. }

35.}

一切都已经准备就绪,最后我们要配置一下Maven,让它下载所需的RESTEasy 等库,然后配置Maven使用Jetty Web服务器,来把我们的服务和测试跑起来:

Java代码

1.

2. xmlns:xsi="http://www.w

https://www.sodocs.net/doc/1d350286.html,/2001/XMLSchema-instance"

3. xsi:schemaLocation="https://www.sodocs.net/doc/1d350286.html,/POM/

4.0.0

4.https://www.sodocs.net/doc/1d350286.html,/maven-v4_0_0.xsd">

5. 4.0.0

6. org.bluedash

7. try-resteasy

8. war

9. 1.0-SNAPSHOT

10. try-resteasy Maven Webapp

11. https://www.sodocs.net/doc/1d350286.html,

12.

13.

14. JBossMavenRepo

15. JBoss Maven2 repo

16. https://www.sodocs.net/doc/1d350286.html,/maven2

17.

18. true

19.

20.

21. false

22.

23.

24.

25.

26.

27. junit

28. junit

29. 4.4

30. test

31.

32.

33. org.jboss.resteasy

34. resteasy-jaxrs

35. 1.2.RC1

36.

37.

38. org.jboss.resteasy

39. resteasy-jaxb-provider

40. 1.2.RC1

41.

42.

43. javax.servlet

44. servlet-api

45. 2.4

46.

47.

48.

49. try-resteasy

50.

51.

52. org.apache.maven.plugins

53. maven-compiler-plugin

54.

55. 1.6

56. 1.6

57. UTF-8

58.

59.

60.

61. org.apache.maven.plugins

62. maven-surefire-plugin

63.

64.

65. **/integration/**

66.

67.

68.

69.

70. integration-tests

71. integration-test

72.

73. test

74.

75.

76. false

77.

78. none

79.

80.

81. **/integration/**

lude>

82.

83.

84.

85.

86.

87.

88. org.mortbay.jetty

89. maven-jetty-plugin

90. 6.1.15

91.

92. 5

>

93. foo

94. 9999

95.

96.

97.

98. start-jetty

99. pre-integration-test 100.

101. run

102.

103.

104. 5

105. true 106.

107.

108.

109. stop-jetty

110. post-integration-test

e>

111.

112. stop

113.

114.

115.

116.

117.

118.

119.

有关Maven的配置就不详细展开了。配置完成后我们便可以运行单元测试,看看WebServices是否正确运行。执行下述命令

Java代码

1.mvn integration-test

执行结果如下:

Java代码

1.-------------------------------------------------------

2. T E S T S

3.-------------------------------------------------------

4.Running org.bluedash.resteasy.test.integration.test.TestUserAPI

5.liweinan created: 1

6.Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed:

0.372 sec

7.

8.Results :

9.

10.Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

可以看到,我们的测试按预期执行成功了。这篇文章中,我简单向大家介绍了RESTEasy的初步使用方法,希望对大家在架构SOA应用时,有所帮助。JAX-RS 标准做为J2EE家庭中相对较新的一员,其应用前景是十分广阔的。

HTML5基础入门教程(小编搜集辛苦啊,必看)

HTML5教程 什么是HTML5? HTML5 将成为HTML、XHTML 以及HTML DOM 的新标准。 HTML 的上一个版本诞生于1999 年。自从那以后,Web 世界已经经历了巨变。HTML5 仍处于完善之中。然而,大部分现代浏览器已经具备了某些HTML5 支持。 你是不是多少有了解一点,但是你却对这个不精啊!可以进群交流,⑤①④①⑥⑦⑥⑦⑧。HTML5 是如何起步的? HTML5 是W3C 与WHATWG 合作的结果。 编者注:W3C 指World Wide Web Consortium,万维网联盟。 编者注:WHATWG 指Web Hypertext Application Technology Working Group。WHATWG 致力于web 表单和应用程序,而W3C 专注于XHTML 2.0。在2006 年,双方决定进行合作,来创建一个新版本的HTML。 为HTML5 建立的一些规则: ?新特性应该基于HTML、CSS、DOM 以及JavaScript。 ?减少对外部插件的需求(比如Flash) ?更优秀的错误处理 ?更多取代脚本的标记 ?HTML5 应该独立于设备 ?开发进程应对公众透明 新特性 HTML5 中的一些有趣的新特性: ?用于绘画的canvas 元素

?用于媒介回放的video 和audio 元素 ?对本地离线存储的更好的支持 ?新的特殊内容元素,比如article、footer、header、nav、section ?新的表单控件,比如calendar、date、time、email、url、search 浏览器支持 最新版本的Safari、Chrome、Firefox 以及Opera 支持某些HTML5 特性。Internet Explorer 9 将支持某些HTML5 特性。 HTML 5 视频 许多时髦的网站都提供视频。HTML5 提供了展示视频的标准。 Web 上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准。 今天,大多数视频是通过插件(比如Flash)来显示的。然而,并非所有浏览器都拥有同样的插件。 HTML5 规定了一种通过video 元素来包含视频的标准方法。 视频格式 当前,video 元素支持两种视频格式: Internet Explorer Firefox 3.5 Opera 10.5 Chrome 3.0 Safari 3.0 Ogg X X X MPEG 4 X X Ogg = 带有Thedora 视频编码和Vorbis 音频编码的Ogg 文件 MPEG4 = 带有H.264 视频编码和AAC 音频编码的MPEG 4 文件

艾伦经典语录

艾伦经典语录 1、一个人怎样思考,就代表他是怎样的人。 2、弱小就只能哭泣吗? 3、这个世界是残酷的。同时也很美。 4、哈?愚蠢?我觉得那些安于当家畜的人才更加愚蠢。 5、觉得赢不了就只好死心吗? 6、看到了那些的人,才是获得了这世上最大的自由的人。 7、确实,迄今为止人类一直在打败仗,面对巨人,人海战术没有任何意义。 8、无论世界有多么残酷,都无所谓。战斗啊!战斗啊!战斗啊! 9、战斗啊,哪怕是粉身碎骨也在所不惜。无论世界有多么**,都无所谓。 10、战。战斗啊,快战斗啊。赢不了,就得死。赢了,就能活下去。不战斗,就赢不了! 11、即使一生都出不了城墙,吃了睡,睡了吃,也能活下去。但是,那样的话不就简直,简直和家畜没有区别了吗? 12、我一定会将巨人一个不留的驱逐出去,走出这个狭小的墙内世界,这就是我的梦想,人类,还没有彻底败北! 13、我不想一无所知,一辈子呆在城墙里。而且如果没有人继续做这份工作,那之前牺牲的那些人不就白白牺牲了吗? 14、对了。这家伙就是只知道宣泄心中感情的,以前的那个我,但我

已不同往日了,我得用自己的技巧来收场。 15、我以为此时此刻全世界的热闹都只给你,全世界的烟火全都给你,所有的所有,不能更明亮了,就像你一直以来的那个样子。 16、我们所有人,从出生的那一刻起,就是自由的。阻碍我们自由的事物,不论有多么强大,都无所谓无论是石油,冰川还是别的任何东西。 17、就在你吊儿郎当的期间,我可是吃了不少苦头学会了这门格斗技,放纵自己,任由感情支配你的生活就是现实?你这样子,还算是士兵吗? 18、我们虽然输了,但是通过战斗所获得的那些信息,也切实的将我们同下一个希望紧密联络在一起,我们就白白放弃,那十万人的牺牲所换来的战术发展吗? 19、有时候向前看的唯一方式就是重温过去那些牵绊着你的事,你必须迎面去解决,不管他们有多可怕,因为一旦我们这么做了,就会发现你能比自己想象的走的更远 搜集整理,仅供参考学习,请按需要编辑修改

Html+css基础教程

H t m l+c s s基础教程 (适合新手) 在这里我把h t m l和c s s放在一起了,适合新手和在学习的人当成笔记用。希望对大家有所帮助。 HTML是网页主要的组成部分,基本上一个网页都是由HTML语言组成的,所以要学习网站怎样建设,必须从网页的基本语言学起。 一、HTML的组成结构 HTML分为单标识语句和双标识语句。 <标识>内容如:
<标识>内容 如:搜狐 标识中存在标识属性用来定义各标识属性的值。 中心内容 二、HTML全局结构 1、头部。(标题栏)只要你学过英语,你应该知道头怎么用英文写吧!yes,HEAD就是了;所以,头部的HTML写法就是头部的内容,简单不,大家注意一下,这两个非常相似,只是后一个比前一个多了“/”符号。类似这样的以后会经常用到。 2、眼睛。(标题内容)就好像人的眼睛一样,它是心灵的窗口,而一个网页的眼睛应该就是它的页面的标题了,标题怎么说呢?title,yes!大家知道眼睛是长在头上的,所以啦:标题这些应放在和之间。也就是 标题 3、身体。(主体)身体是网页最主要的部分了,因为前面讲的都不是页面所显现出来的,而大家所看到的页面页就是他的身体部分了(当然它的TITLE可以在浏览器的最左上角可以看到),身体----BODY,他的写法也就是:页面内容 最后,别忘了把这些部分组成一体----网页,所以咱们就用把他们给包起来。 咱们来大体看看网页的结构: 标题 页面内容 在进入主体内容标识讲解之前我想给大家介绍下标识中的常用属性,如: 1、内容 leftMargin、topMargin表示:设置页面离外框的左边距和上边距的距离为像素值,默认为1。marginwidth、 marginheight表示:设置页面文字同页面边缘的间距为像素值,默认为1。 注marginwidth、 marginheight还可以用于表格、框架等中。

HTML语言入门教程

语言入门教程(一) ?什么是HTML语言 HTML(HyperText MarkUp Language)是使用特殊标记来描述文档结构和表现形式的一种语言,由W3C(World Wide Web Consortium)所制定和更新。我们可以用任何一种文本编译起来编辑HTML文件,因为它就是一总纯文本文件。 ?HTML语言的基本结构 下面我们来看一小段HTML语言的代码,来了解HTML语言的基本结构: HTML语言的基本结构 HTML(HyperText MarkUp Language)是使用特殊标记来描述文档结构和表现形式的一种语言。 将这一小段代码粘贴至文本文件中,然后选择“另存为”,将文件的后缀名改为.htm或者.html即可,然后再所在的目录下就可看到一个IE的图标,名字就是你所存的文件名称。 …… …… 这是声明HTML文件的语法格式。每一个HTML文件,都必须以开头,以结束…… …… 这是文件头声明的语法格式。在这之内的所有文字都属于文件的文件头,并不属于文件本体。

…… …… 这是声明文件标题的语法格式。在这之中写下的所有内容,都将写在网页最上面的标题栏中。 …… …… 这是声明文件主体的语法格式。在者之间写下的内容都是文件的主体,也就是说将会被显示在客户区之中。 注意:几乎每一种HTML语言的语法都是以<>开头,以结束。在编辑HTML语言过程中,也可以使用注释。语法格式为:。就好像C语言中的/* …… …… */ 一样,中间的内容只是解释说明,并不被编译器所编译。 HTML语言的基本单位 1. 长度单位 长度单位可以用来定义水平线、表格边匡、图像等对象的长、宽、高等一系列属性,同时也可以用来定义这些对象在页面上的位置等属性,用来描述页面上可能遇到的各种长度。 长度的表示方法有两种:绝对长度和相对长度。他们的单位都是像素(pixel)和百分比(%),像素代表的是屏幕上的每个点,而百分比代表的是相对于客户区的多少。下面我们就以水平线的宽度为例,说明这两种表示方法。 HTML语言的长度表示 HTML(HyperText MarkUp Language)是使用特殊标记来描述文档结构和表现形式的一种语言。



在文本编译器中编译,改变网页的大小,就会看到这两者表示长度方法的不同。

html5入门教程网盘下载

html5入门教程网盘下载 Html5的发展让不少开发商发现了机遇,html5开发人才也遭受疯抢,但传统前端人才很难驾驭移动端。因此,html5开发人才出现严重紧缺状态,很多企业陷入两难境地。那么想学习这门技术,当然要有好的学习资料,千锋教育免费分享html5自学教程! 设计模式是在软件开发中,经过验证的,用于解决在特定环境下,重复出现的特定的问题的解决方案。在编写JS代码的过程中,运用一定的设计模式可以让我们的代码更加优雅、灵活。 每个设计模式的构成如下: 1、模式名称:模式的一个好记的名字 2、环境和问题:描述在什么环境下,出现什么特定的问题 3、解决方案:描述如何解决问题 4、效果:描述应用模式后的效果,以及可能带来的问题 简单地说,模式就是一些经验,一套场景/问题+解决方案。 千锋HTML5百人教学天团,每个讲师都是具有多年开发经验的行业佼佼者。设计模式课程的讲解将从实际应用场景出发,以实践和尝试的方式,分析可能出现的问题以及如何解决,以期达到“避免犯前人犯过的错误+ 避免引入不成熟的设计“这一目标。让大家快速领略编程之美,模式之美。 为什么要学习设计模式?

设计模式的种类较多,各个模式都有它对应的场景,不能武断地认为某个模式就是最优解决方案。通过学习这些设计模式,让你找到“封装变化”、“松耦合”、“针对接口编程”的感觉,从而设计出易维护、易复用、扩展性好、灵活性足的程序。通过学习设计模式让你领悟面向对象编程的思想(SOLID),到最后就可以抛弃设计模式,把这些思想应用在你的代码中,写出高内聚、低耦合、可扩展、易维护的代码了。此时已然是心中无设计模式,而处处是设计模式了。这就是学习设计模式的目的。 常见的几种设计模式 单例模式 之所以叫做单例模式是因为它限定对于一个类,它他只允许有一个实例化对象,经典的实现方式是,创建一个类,这个类包含一个方法,这个方法在没

人生必看的25部励志电影

人生必看的25部励志电影 励志名言京ICP备13016261号-1)他们的马海洋饼干也和主人相仿佛,是赛马中的失败者,不仅个子比寻常赛马小,看上去腿也有问题。但是当三个人开始训练这匹看起来没什么希望的马,人和马的执著劲头都显露出来,他们的坚韧和胜利在那个灰暗的年代给整个国家带了了希望。 11、《末路狂花》Thelma&Louise 该片被认为是向男权社会发出抗争的女性主义电影代表作。 生活在沉闷与琐碎家务中的家庭主妇赛尔玛(SusanSarandon)与在某间咖啡厅做女侍应生的闺中密友路易丝(GeenaDavis)对平凡的生活与工作产生厌倦后,结伴一起外出旅游散心。路上,在某家酒吧外的停车厂,赛尔玛险遭无名男子强暴,幸好路易丝及时赶到,拔枪将该男子射杀。惊慌失措的两人掉头逃亡,自此踏上不归路,过程中两人

性格均有了很重大的改变。 12、《天使艾米丽》 艾美丽看来不是一个天使,她只是个平凡的咖啡馆招待,从小孤独自闭的长大,母亲意外死亡父亲碌碌无为,生活的多少有点不幸。但她愿意帮助周围每一个需要帮助的人,事实上周围的每一个人也都需要帮助,她精心准备每一个帮助的计划,始终不让别人发现是谁在帮助他们,艾美丽成了他们身边真正的“天使”。终于她也鼓起勇气,找到了属于她的幸福,她的心灵花园中也开满了鲜花。 作为新人,来到新环境,也许会受到排斥与冷落。想处好人际关系,也许你可以像艾米丽一样,去主动关心别人,做一些小小的努力,哪怕换来的是一个微笑或一声谢谢,但是你逐步建立起来的良好的人际关系会让你事半功倍。 13、《放牛班的春天》 克莱门特是一个才华横溢的音乐家,不过在1949年的法国乡村,他没有

Html5程序设计基础教程(练习题参考答案)

第1章HTML 5概述 一、选择题 1.A 2.D 3.C 4.C 二、填空题 1.HyperText Markup Language 2. 3.HTML 4.UTF-8 5.

6.contextmenu 7.async 8.
9.Geolocation API 10.Web Workers 三、简答题 1.答: ●
标签用于定义文档中的区段。 ●
标签用于定义文档的页眉(介绍信息)。 ●