應用SpringMVC發(fā)布restful服務是怎樣的一種體驗-創(chuàng)新互聯(lián)

     摘要:“約定優(yōu)于配置”這是一個相當棒的經(jīng)驗,SOAP服務性能差、基于配置、緊耦合,restful服務性能好、基于約定、松耦合,現(xiàn)在我就把使用Spring MVC發(fā)布restful服務的過程同大家分享。代碼之優(yōu)雅、過程之簡單、編碼之愉快,不是發(fā)布SOAP服務所能匹敵的。    關鍵字:java, rest, webservice, spring mvc     前提:IntelliJ IDEA (13.1.5 版本), apache maven (3.2.3 版本), Tomcat(7.0.56版本), Spring(3.2.4版本)
         “約定優(yōu)于配置”這是一個相當棒的經(jīng)驗,對于我來說,恐怕是自“面向對象”以來對我大沖擊的理念了吧。首先,SOAP服務可以說是基于配置的,它在HTTP的基礎上使用XML配置表達服務與數(shù)據(jù),為了實現(xiàn)遠程訪問,它生成的服務信息尤其復雜,無論是C#客戶端還是JAVA客戶端,甚至可以通過WSDL服務描述來自動生成一整套代碼,這樣基于配置的服務的缺點就在于服務端與客戶端有著較強的編碼耦合性,服務端接口修改后,需要對客戶端的服務依賴代碼重新生成。而restful服務是基于約定的,是http的get、delete、post還是put都約定好了不同的含義,我們依照約定來進行http請求便可以實現(xiàn)各式的操作。更不用說SOAP服務的性能之差、與restful服務不是一個數(shù)量級之缺點了?;诩s定,我們可以實現(xiàn)代碼間的松耦合。雖然Hessian性能略優(yōu)于restful服務、其實是一個數(shù)量級、restful編解碼做好了就性能差不多,但Hessian也還是基于代碼的緊耦合了。      首先,我們先在IDEA中新建一個名為dp-parent的Project,作為所有工程的父節(jié)點,其<packaging>pom</packaging>。然后,我們在dp-parent下新建一個名為dp-restfulservice的Module,其<packaging>war</packaging>,并在其pom.xml中添加其所需的spring依賴。如: <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.2.4.RELEASE</version>
</dependency>         其次,我們在src/main目錄下創(chuàng)建名為webapp的目錄,為什么要叫這個名字呢?這其實也是一個約定。并且,我們在webapp目錄下創(chuàng)建名為WEB-INF的目錄(為什么要叫這個名字呢?這其實也是一個約定)。在WEB-INF目錄下創(chuàng)建名為web.xml的文件(為什么要叫這個名字呢?這其實也是一個約定,這句話我說了太多遍了,“約定優(yōu)于配置”此理念真是百試不爽)。下面是web.xml的主要內容。 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">
  <servlet>
    <servlet-name>restful</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>restful</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>      然后,我們要在WEB-INF目錄下創(chuàng)建一個名為restful-servlet.xml的文件(為什么要叫這個名字呢?這其實也是一個約定,在web.xml中規(guī)定的servlet-name加上-servlet約定為servlet配置文件名)。restful-servlet.xml文件的主要內容如下。 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  <context:component-scanbase-package="com.jsc.dp.controllers"></context:component-scan>
  <mvc:resources mapping="/resources/**" location="/WEB-INF/resources/"></mvc:resources>
  <mvc:annotation-driven/>
  <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <propertyname="prefix" value="/WEB-INF/views/"/>
    <propertyname="suffix" value=".jsp"/>
    <!-- 如果 .jsp 文件中含有 jstl,需要這一行 -->
    <propertyname="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  </bean>
</beans>?     下面是要編寫代碼spring mvc中的C(Controller)了。在main/java中創(chuàng)建名為com.jac.dp.controllers的包,在此包下新建一個名為AbcController的類,其通過@Controller注解注入進spring框架中。具體的restful代碼如下圖所示。從圖中可以看到,其實現(xiàn)了一個名為getAbcs的方法,使用get用以對get式的 http://localhost:8088/restfulservice/abcs 請求進行響應。還實現(xiàn)了一個名為getAbc的方法,使用get以對get式的 http://localhost:8088/restfulservice/abcs/3 請求進行響應,來獲取某一對象,返回給前端的是一Json字符串:{"myInt":3,"myString":"myString"}。名為putAbc的方法,其使用put以對put式的 http://localhost:8088/restfulservice/abcs/3  請求進行響應,來更新某一對象。下圖中也展示了,使用工具REST Client來進行http put請求測試的過程與結果,在這里,返回的是一個對象轉成的Json字符串,在IDEA中可以看到其Response是:{"myInt":-1,"myString":"post true"},與預想中的一樣;同樣的post和get也可以如此測試,測試get請求也可以直接使用瀏覽器執(zhí)行。 

?

成都創(chuàng)新互聯(lián)公司專注于興縣網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供興縣營銷型網(wǎng)站建設,興縣網(wǎng)站制作、興縣網(wǎng)頁設計、興縣網(wǎng)站官網(wǎng)定制、成都微信小程序服務,打造興縣網(wǎng)絡公司原創(chuàng)品牌,更為您提供興縣網(wǎng)站排名全網(wǎng)營銷落地服務。         代碼編寫完成后,需要進行服務發(fā)布了,我們使用Tomcat作為服務容器。在IDEA中如何進行Tomcat配置就不多說了,這里提一下Run/Debug Configurations。在Application context中配置成restfulservice才有上面的效果哦。?           有時候一個理念讓人茅塞頓開、醍醐灌頂?!凹s定優(yōu)于配置”就是這樣的理念。感謝教給我這個理念的人,王某連云港人。   來自王安琪

作者:Angel 出處:http://www.cnblogs.com/wgp13x/ 歡迎轉載或分享,但請務必聲明文章出處。如果文章對您有幫助,希望你能推薦或關注。

王安琪,英文名Angel,南京郵電大學計算機應用技術碩士學位。 熟悉Java、C#編程語言。專注于WebService、海量數(shù)據(jù)處理、搜索引擎技術、消息中間件技術、分布式文件存儲、.NET應用程序開發(fā)、系統(tǒng)架構設計。主要從事大數(shù)據(jù)管理系統(tǒng)的研發(fā),項目經(jīng)理,系統(tǒng)架構師,就職于江蘇金陵科技集團有限公司。

Email:aitanjupt@hotmail.com

QQ:289770363

本文標題:應用SpringMVC發(fā)布restful服務是怎樣的一種體驗-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://bm7419.com/article12/dsdjgc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、全網(wǎng)營銷推廣、外貿網(wǎng)站建設、網(wǎng)站制作標簽優(yōu)化、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)