MAVEN 手动创建SPRING 4.0 RESTful 项目

正式入驻简书,第一篇文章贡献给RESTful,在这个移动应用日益强大的年代,WEBSERVICES就变得越来越重要,而且也经常要用到,赶上最近接到的新项目,公司就让我们自己先分析下以前的源代码,去构建一个新的RESTful,这正好给了我机会去总结,工作六年了,一直没有整理过自己的所学和所用,希望之后的日子,会陆续把自己接触过的东西写下来,分享的同时,也希望收到反馈,同时资料也方便日后查询。

做项目,我一直坚持的原则是从最简单的着手,然后才由简转繁,像建房子一样,砖头一块一块的堆上去。所以,这篇文章就是从最简单的着手,一步步搭建一个服务。做这个项目,你可能需要额外安装git bash

手动创建 MAVEN项目

项目构建,从最原始的手动开始,不用IDE这些工具。

首先MAVEN最基本的项目结构是:src\test,src\main,main下面有包含java和resources两个目录文件。

由于现在公司的安全机制,我在用ECLIPSE创建MAVEN项目的时候,总是连接代理服务器出问题,也不能下载依赖包,不过在CMD模式和GIT BASH的模式下,我可以很好的用MAVEN的命令来下载依赖包和创建项目。

手动创建MAVEN项目有两个办法,第一是纯手动,自己创建MAVEN标准的项目结构。二就是在CMD窗口下使用MVN命令创建。

纯手动模式,在Git Bash下,或者其他你喜欢的工具下,运行两条UNIX命令,就可以创建完整的MAVEN格式的项目。

首先创建项目目录

mkdir spring4RESTful

之后CD spring4RESTful 进入该项目目录下, 运行

mkdir -vp src/{main/{java,resources},test/java}

简单的两条命令,你会看到一个完整的MAVEN结构的项目就建好了。


接下来,在工程目录下,创建MAVEN的基础文件,pom.xml,用到的schema可以在spring或者hibernate等开源文件或者你以前项目中搜索pom.xml(因为这些都是使用maven来进行管理的),将其拷贝过来即可。

POM的内容,你目前不需要填写很多内容,只需要添加你的基础项目信息到POM里面即可,如下


1.modelVersion :指的是模型的版本,目前值是固定的4.0.0

2.groupId :指定当前项目的项目名称,和包名相同

3.artifactId :指定当前项目中的哪一个模块,一般使用”项目名称_模块名称”这样的形式。

4.version :表示当前项目的版本

好了,至此,一个基本的项目就创建好了,现在你可以用ECLIPSE导入项目。导入之后,你应该会看到如下的目录结构


编辑JAVA类,并测试

现在我们可以添加两个类,和一个测试依赖包到POM中,测试下我们的MAVEN项目

需要注意的是,在maven中,我们的java文件默认都是存放在“src/main/java”这样的目录当中

这里我新创建一个Hello.java文件:

在pom.xml以及java文件都创建好了以后,我们就可以开始编译我们的maven项目了,命令行模式下进入pom.xml文件所在的目录,输入mvn compile

PS:在输入mvn compile以后,maven会从自己的中央仓库下载需要的文件,这里可能会失败,依赖于个人的网络好坏。或者你的公司有设置防火墙,需要使用代理,因此请设置你的proxy

当maven编译完成以后,会生成一个target文件夹,这个文件夹里边存放的就是编译生成的class文件。maven默认的下载是存放在“C:\Users\.m2”该路径下的。你也可以手动添加一个本地仓库,这样MAVEN会先去本地仓库下载资源,如果本地仓库没有,再去服务器下载。建议添加一个本地仓库,方便快速部署。本地仓库请修改MAVEN的settings.xml的localRepository属性。

编写测试类

好了,现在为止Hello类已经编译完成,下面编写test来测试该类中的sayHello方法。测试类和普通的类比较相似,所有的测试类都必须要放到”src/test/java”目录下。建立一个com.spring4RESTful.test用于存放测试类。

TestHello.java


用到了JUNIT的相关功能,所以需要在POM中添加依赖,依赖如下


运行MVN test


看到这里,至此,完整的一个基本MVN流程就结束了。

将java项目转换为web项目

这一步,我们需要将JAVA项目转为web项目,在ECLIPSE中,选中项目,然后鼠标右键选择属性Properties,在属性列表中选择Project Facets

勾选Dynamic Web Module


然后点击Further configuration available 选项,填入你要放置WEB文件的目录名,这里我没有修改,默认用的WebContent,你也可以自行修改,加入到比如src/webapp这样的路径当中去。


确认之后,一个WEB项目就建立好了。建好的项目,可能还会没有报错,但是无法访问的情况,因为之前是手动创建的项目,主要原因是ECLIPSE没有找到缺省的MAVEN依赖包和TOMCAT的依赖包,在属性的Java Bulid Path 里面添加即可。

创建好之后的ECLIPSE目录如下

现在来建立一个index.jsp测试一下,内容很简单,就是打印输出一行内容,对于这部分内容,不是必须的,只是习惯性有新的东西添加都要测试一下,缺了这个页面,服务器只是会提示找不到页面而已,但是后期的服务,我们依然可以直接调用。



添加完成以后,选中项目,选择RUN AS,RUN ON SERVER


选择你安装好的SERVER服务,这里我是TOMCAT 9


运行完毕,你就可以看到一个欢迎页面了,这样一个WEB项目的基础结构也建好了。


添加SPRING依赖

现在引入SPRING的相关依赖,直接修改POM文件,增加相关SPRING的dependencies,我们用的是spring 4.0来构建RESTful,POM文件内容如下


这里除了基本的SRPING依赖包,还需要添加一个JACKSON,用于将获得的对象自动转换为JSON,简单方便,不再需要自己去构建JSON格式的数据。

之后在src\main\resources下面添加applicationContext.xml配置,因为作为初始的基本RESTful项目,还不需要用到service层和DAO层,暂时不用添加任何内容,未来若我更新带数据版本的,我会更新。

在WEB-INFO下,修改web.xml的配置,添加org.springframework.web.servlet.DispatcherServlet的相关配置,如下

如此,一个基本的SPRING依赖添加完成,可以TOMCAT 启动在测试一下,看看是否有错误,检查下自己的配置是否正确。

这个时候如果你启动TOMCAT,后台应该会打印输出你缺失一个文件,这是我们配置RESTFUL服务的关键配置文件,所以我们WEB-INFO目录下创建Spring4RestfulServices-servlet.xml,并添加如下内容


context:component-scan 标签主要用来让SPRING确定你的Controller资源会放在哪个包路径,在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean,就不需要配置单独的BEAN在配置文件里面,这里我放在了resources里面。

而mvc:annotation-driven标签主要是确保这些注解可以正确使用,以及对jackson提供支持,具体可以参考相关文档。配置完成,可以运行下TOMCAT,看看是否正确启动项目。

创建RESTful类

一系列的配置文件完成后,我们开始正式编写RESTful的相关实现代码。创建一个com.spring4RESTful.bean的package用于存放bean类,

创建一个com.spring4RESTful.resources的package用于存放所有的webservices的controller类。

老规矩,先创建一个最简单的HELLO WORLD服务,在bean中,创建Greeting.java



然后在resouces中创建GreetingController.java

@RestController 注解用于通知spring,这是一个控制类,这个是SPRING 4.0里面的RESTful服务的关键,它包含了以前的@Controller and @ResponseBody.

@RequestMapping("/greeting"),这里的意思,就是将url的/greeting地址映射到greeting这个方法上面。这里我们没有使用@RequestMapping(method=Get)来限制只能接受GET方法,也就意味目前我们的greeting默认可以接受其他类型的http请求。

@RequestParam(value="name",defaultValue="World") String name,如果前端页面没有传值过来,这里默认就是World

好了,目前最基本的一个RESTful的服务已经写好,让我们正式看看效果,重新启动TOMCAT,输入链接

http://localhost:8080/spring4RESTful/greeting,你将看到一个JSON格式的hello,world


如果你带上参数,比如http://localhost:8080/spring4RESTful/greeting?name=haifeng

现在我们来写另外一个例子,看看@PathVariable如何使用,为了方便以后分析和修改代码,我单独建立了另外一个controller

首先是bean,Message.java


然后创建MessageRestController.java


@PathVariable 可以动态的接受页面传过来的参数值,然后完全按照RESTFUL的访问格式。如下

http://localhost:8080/spring4RESTful/say/haifeng


也可以用POSTMAN进行调试


至此,一个基本的SPRING 4.0 RESTful就完成了。需要源代码的,请去这里下载

https://github.com/thflove99/spring4RESTfull.git

如果什么问题,请留言我。谢谢大家耐心看完

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容