寫在前面的話html
原計劃這部分代碼的更新也是上傳到ssm-demo倉庫中,由於以下緣由並無這麼作:前端
有些使用了該項目的朋友建議從新建立一個倉庫,由於原來倉庫中的項目太多,結構多少有些亂糟糟的。 並且此次的代碼改動較大,與原來的目錄結構及代碼風格相比都有很大的差異。 同時也考慮到不一樣的人所處的學習階段不一樣,擔憂有人不習慣也不適應這種風格及後面的更新,有的朋友甚至多是初學者,更適合學習ssm-demo這個基礎項目。java
基於以上幾點,最終並無選擇把幾個項目都放在一個代碼倉庫中,而是另外花了些時間改動而且從新建立了一個倉庫,perfect-ssm另起爐竈,項目也在新的服務器和域名下部署。web
接口設計spring
項目共有三個模塊:json
文章管理模塊 圖片管理模塊 用戶管理模塊後端
針對以上三個模塊,並結合前文《設計一套好的RESTful API》中所總結的RESTful API設計原則,對api進行改造,目標接口以下:api
圖片上傳: 原接口 [] http://ssm-demo.hanshuai.xin/loadimage/upload.do 現接口 [POST] http://perfect-ssm.hanshuai.xin/images服務器
文章添加: 原接口 [] http://ssm-demo.hanshuai.xin/article/save.do 現接口 [POST] http://perfect-ssm.hanshuai.xin/articlescookie
文章修改: 原接口 [] http://ssm-demo.hanshuai.xin/article/save.do 現接口 [PUT] http://perfect-ssm.hanshuai.xin/articles
文章列表: 原接口 [] http://ssm-demo.hanshuai.xin/article/list.do 現接口 [GET] http://perfect-ssm.hanshuai.xin/articles
文章刪除: 原接口 [] http://ssm-demo.hanshuai.xin/article/delete.do 現接口 [DELETE]http://perfect-ssm.hanshuai.xin/articles
圖片添加: 原接口 [] http://ssm-demo.hanshuai.xin/picture/save.do 現接口 [POST] http://perfect-ssm.hanshuai.xin/pictures
圖片修改: 原接口 [] http://ssm-demo.hanshuai.xin/picture/save.do 現接口 [PUT] http://perfect-ssm.hanshuai.xin/pictures
圖片列表: 原接口 [] http://ssm-demo.hanshuai.xin/picture/list.do 現接口 [GET] http://perfect-ssm.hanshuai.xin/pictures
圖片刪除: 原接口 [] http://ssm-demo.hanshuai.xin/picture/delete.do 現接口 [DELETE]http://perfect-ssm.hanshuai.xin/pictures
用戶登陸: 原接口 [] http://ssm-demo.hanshuai.xin/user/login.do 現接口 [POST] http://perfect-ssm.hanshuai.xin/users/cookie
用戶列表: 原接口 [] http://ssm-demo.hanshuai.xin/user/list.do 現接口 [GET] http://perfect-ssm.hanshuai.xin/users
用戶刪除: 原接口 [] http://ssm-demo.hanshuai.xin/user/delete.do 現接口 [DELETE]http://perfect-ssm.hanshuai.xin/users
用戶添加: 原接口 [] http://ssm-demo.hanshuai.xin/user/save.do 現接口 [POST] http://perfect-ssm.hanshuai.xin/users
修改密碼: 原接口 [] http://ssm-demo.hanshuai.xin/user/modifyPassword.do 現接口 [PUT] http://perfect-ssm.hanshuai.xin/users12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
根據不一樣資源映射成不一樣的uri,對於資源的具體操做類型,由HTTP動詞來表示。
java後端實現
前文中提到了一些設計原則,這一篇就是將這些原則運用到項目中,可是理論性的知識看看就忘了,我寫博客的目的不是爲了寫理論概念,沒有實際項目配合我是不會寫的,我以爲經過代碼實現出來,配合實戰才能讓理論知識吸取的更好。
因爲是ssm項目,所以主要是經過SpringMVC實現,更多的是使用了SpringMVC的註解來進行簡化開發。
整合過程:
首先是修改web.xml配置文件,使得URI能夠符合RESTful風格。
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-context-mvc.xml</param-value> </init-param> <!--加載順序爲1 --> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>123456789101112131415
修改spring-context-mvc.xml配置文件,配置json消息轉換器及動態資源過濾。
<!-- Start: 配置json消息轉換器 & 參數解析--> <bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg index="0" type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/> </bean> </property> </bean> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json; charset=UTF-8</value> </list> </property> <property name="prettyPrint" value="true"/> <property name="objectMapper" ref="objectMapper"/> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- End: 配置json消息轉換器 & 參數解析 -->
<!-- 使用了<url-pattern>/</url-pattern>,因此要對靜態資源進行處理 --> <mvc:default-servlet-handler/>
<!-- 默認的視圖解析器 在上邊的解析錯誤時使用 (默認使用html)- --> <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="contentType" value="text/html"/> <property name="prefix" value="/WEB-INF/"/> <property name="suffix" value=".jsp"/> </bean>12345678910111213141516171819202122232425262728293031323334
@RequestMapping註解,規範和限制Http請求的請求方法。
@RequestMapping(value = "", method = RequestMethod.PUT)
@RequestMapping(value = "/{ids}", method = RequestMethod.DELETE)123
@ResponseBody註解,將返回結果轉換爲JSON格式。 增長common包,其中的工具類規定了返回狀態碼及返回數據的基本格式。
public class Constants {
public static final int RESULT_CODE_SUCCESS = 200; // 成功處理請求 public static final int RESULT_CODE_BAD_REQUEST = 412; // bad request public static final int RESULT_CODE_SERVER_ERROR = 500; // 沒有對應結果
}
public class Result<T> implements Serializable { private static final long serialVersionUID = 1L; private int resultCode; private String message; private T data;
public Result() { } }1234567891011121314151617
注意事項
幾個須要注意的註解:
@RequestMapping @PathVariable @ResponseBody @RequestParam
代碼中大量的出現,本文中也一再強調,所以,給正在看本篇文章的你一個建議就是若是你不熟悉這幾個註解,花點時間去認真學習和實踐一下,知道這幾個註解的用法和注意事項,網上針對這些註解的文章有不少,能夠針對性的學習一下,這篇文章就再也不佔用篇幅去贅述了,須要代碼的話,直接去個人GitHub倉庫中去下載就好。
結語
首發於個人我的博客,新的項目演示地址:perfect-ssm,用戶名:admin,密碼:123456。 若是有問題或者有一些好的創意,歡迎給我留言,也感謝向我指出項目中存在問題的朋友,本篇主要講述了後端的實現,關於前端的修改會在下一篇文章中講述。
若是你想繼續瞭解該項目能夠查看整個系列文章Spring+SpringMVC+MyBatis+easyUI整合系列文章,也能夠到個人GitHub倉庫或者開源中國代碼倉庫中查看源碼及項目文檔。 --------------------- 做者:Named13 來源:CSDN 原文:https://blog.csdn.net/zhenfengshisan/article/details/77101527 版權聲明:本文爲博主原創文章,轉載請附上博文連接!