使用Intellij IDEA社區版創建web項目并引入jersey實現Restful接口

基本的操作和代碼編寫不多說了,網上一找一大把,主要記錄一下踩的坑,也算給自己留個印象。由于本人是在業余時間嘗試和學習,所以遇到的坑估計也都是很淺顯的問題。

Intellij IDEA使用的是社區版,免費的,相對功能也少很多,比如不能直接創建web項目。所以結果是在創建普通項目后,聯接tomcat來測試,通過maven來打包。

項目創建和設置都有段時間了,沒有記錄,都忘記了。但是當時還是遇到了一些坑的,想不起來了,也都不復雜,當時做到有servlet就放下了。

近期又拿起來,是為了增加Restful風格的接口。從網上找了找說是Jersey很好用,于是嘗試使用Jersey。

因為沒有Java的實際工程經驗,都是自己摸索的(本職C++),所以就算對Java本身的語法、更基礎的算法和數據模型沒什么不理解的,關鍵的問題出在了項目結構、構建以及一些輔助工具的使用上,這里的坑都踩在了maven上(同樣的,對于ant或者grandle也沒有使用經驗,一點借鑒都沒有)。

實際上只要在自動生成的pom.xml文件里添加正確的Jersey依賴就可以了,讓maven把必要的文件下載下來就可以使用;不過我走了不少彎路,具體來說有:

1、自己下了一個Jersey的lib包。開始時引入了這個比較大的包去開發,到后來發現這個包直接可以刪除,因為只要依賴正確,maven會下載所需的包,不需要完整的包。

2、能夠運行,但是打包成war以后部署在tomcat里不能使用。這里開始是犯了一個低級錯誤,把source文件夾設置給取消掉了,所以沒有生成對應的class;后來發現在Intellij IDEA里,如果先用maven的clean再用maven的package命令,打包出來還是沒有class文件。似乎只有測試運行一次,才能正確打包,不知道是我設置的問題還是IDE的問題。

3、找不到Jersey的servlet。這個就是沒有正確添加依賴(因為我沒有使用spring或者struct2框架,所以引入 的注入是jersey-hk2,應該要根據實際框架調整):

基礎的servlet依賴

4、后來使用POJO方式直接向前端返回JSON數據,也就是Jersey框架要完成一個將POJO直接轉換為JSON的功能,這時如果沒有設置依賴會報500錯誤,tomcat控制臺打印出的問題是(class名自定):

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo MessageBodyWriter not found for media type=application/json, type=class servlet.usingJersey$tmpClass, genericType=class servlet.usingJersey$tmpClass

究其原因,是下面這個引用:


POJO轉JSON的引用

5、所有的依賴要有正確的版本設置。另外前面列出的是最新的Jersey版本,以前似乎還有其它前綴的版本,不是org.glassfish.jersey.xxx的,找資料時要注意。

6、這個和Jersey無關,是前端ajax請求restful接口的小坑:如果設置ajax請求的contentType為"application/json",返回的值必須是標準的JSON,否則會走到請求設置的error函數,而不是success函數。另外在success里,函數接到的參數已經是JSON對象了,不需要再做parse動作。

以上把基礎的坑都踩到了,能夠成功部署一個Jersey的Restful風格的服務。接下來就是具體的業務實現了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,971評論 6 342
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評論 25 708
  • 原文鏈接:http://www.dropwizard.io/1.2.0/docs/getting-started....
    Lance_Xu閱讀 950評論 0 0
  • “砰楞哐當” ---“噼里啪啦”--鄰居家傳來一陣摔東西的聲音。我知道,這是鄰居媽媽在發飆,不出意料的話,是因為兒...
    終將長大閱讀 258評論 0 1