[4]第一個接口-學(xué)Java的iOS開發(fā)者

本次學(xué)習(xí)我們有兩個目標(biāo)

  1. 完善SpringMVC框架
  2. 寫出來第一個接口并訪問

完善SpringMVC框架

上次我們引入了最基本的SpringMVC框架的依賴金蜀,但一個依賴是遠(yuǎn)遠(yuǎn)不夠的趟薄,SpringMVC有一系列框架,各司其職危喉,下面我們就開始吧,需要什么引什么筒饰,讓我?guī)阋徊揭徊綄W(xué)習(xí)SpringMVC框架

  1. 首先創(chuàng)建文件結(jié)構(gòu)晋柱,我們的先不使用項目間互相依賴,先使用一個項目多個文件夾分結(jié)構(gòu)琢融。主要結(jié)構(gòu)如下


    主要結(jié)構(gòu)
  2. 是不是一下看到太多東西無法接受界牡,別慌,這只是個總攬漾抬,創(chuàng)建完后的效果∷尥觯現(xiàn)在我們才真正開始創(chuàng)建了。如果接上篇文章的話纳令,你現(xiàn)在的目錄應(yīng)該是這樣的


    原始目錄
  3. 首先挽荠,我們在main文件夾下創(chuàng)建一個Class文件夾,用于存放我們的源碼平绩,名字可以隨便起哈圈匆。然后再在Class文件夾下創(chuàng)建5個文件夾,分別是Aop捏雌、Bean跃赚、ControllerDao腹忽、Service

  • Aop砚作,是SpringMVC中的切面窘奏,面向切面編程嘛,非侵入式的代碼葫录。
  • Bean着裹,中主要放的是數(shù)據(jù)模型,具體和Dao層和Service層交互米同。
  • Controller骇扇,控制器摔竿,拋去Aop不說,Controller是跟頁面最近的一層少孝,數(shù)據(jù)進(jìn)入Controller然后由Controller調(diào)用Service完成業(yè)務(wù)邏輯操作继低,將數(shù)據(jù)返回給頁面展示。Controller在整個流程中起著總管的作用稍走,要不能叫控制器嘛袁翁。
  • Dao,Dao層有兩個方面婿脸,1. 跟數(shù)據(jù)庫和模型組建映射(Mapper)粱胜,2. 映射出方法跟Service做交互。Dao層可以理解為由一個一個的映射組成狐树,這個映射一方面從數(shù)據(jù)庫查數(shù)據(jù)映射至Bean中也就是模型中焙压,一方面給Service出接口供Service調(diào)用。
  • Service抑钟,服務(wù)涯曲,真正處理業(yè)務(wù)邏輯的類,Controller調(diào)用Service味赃,Service調(diào)用Dao獲取和操作數(shù)據(jù)掀抹,完成后返回給Controller。


    創(chuàng)建文件夾
  1. 創(chuàng)建完后Class文件夾沒有任何屬性心俗,我們這里放的是源碼傲武,所以需要設(shè)置一下,打開項目設(shè)置->Module->JiaoRiBao->右鍵點擊Class->選擇Sources然后OK即可城榛。這樣就在文件夾里就可以創(chuàng)建java文件了


    設(shè)置源碼文件夾
  2. 首先我們當(dāng)然先要搞入口的控制器咯揪利,在Controller文件夾里創(chuàng)建一個java類,類名就叫BaseController吧狠持,然后再在同一位置創(chuàng)建一個UserController繼承與BaseController疟位,這個控制器我們就用來做用戶相關(guān)的操作


    創(chuàng)建java類
  3. 有學(xué)過Servlet的小伙伴此時應(yīng)該會說,是不是忘了什么喘垂?對了甜刻,需要在web.xml中配置控制器才能訪問,但我們用的是SpringMVC當(dāng)然要用簡便方法來操作咯正勒,于是我們就要學(xué)習(xí)SpringMVC的第一個注解了@Controller這個注解是告訴Spring的掃描器說這是一個Spring的控制器得院,不注解的話需要在web.xml中注冊這個控制器才行。

  4. 好了章贞,開始操作祥绞。由于@Controller在spring-context庫里所以我們要在maven里加一個依賴加。
    打開pom.xml,加之前我們先在properties標(biāo)簽里添加一個<spring.version>5.1.7.RELEASE</spring.version>用于統(tǒng)一所有的spring庫版本蜕径,然后加入以下依賴

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
    <scope>compile</scope>
  </dependency>

下圖的${spring.version}對應(yīng)剛添加的<spring.version>5.1.7.RELEASE</spring.version>這樣所有spring庫都用這個版本两踏,方便統(tǒng)一操作,添加好以后更新maven兜喻,打開BaseController梦染,在類的聲明上方添加@Controller就可以自動提示了。同樣的虹统,UserController上也加入該注解

spring-context依賴

自動提示

@Controller

8.好弓坞,接下來再來認(rèn)識一個注解@RequestMapping這個注解是聲明路徑用的,可以看到我圖中是這樣寫的@RequestMapping("/user")车荔,這樣當(dāng)我訪問這個控制器內(nèi)的方法時就要用localhost:8080/user/xxx.xx路徑了

@RequestMapping

  1. 接下來再加一個注解@ResponseBody這個注解主要是用來讓該Controller中方法的返回值返回到頁面上

    @ResponseBody

  2. 我們先寫一個登陸方法吧聲明一個返回值是String入?yún)⑹?code>HttpServletRequest request新手嘛渡冻,暫時先按這樣固定的寫。添加一個這樣的方法忧便,方法這里再加一個@RequestMapping聲明了路徑"/login"族吻,訪問的時候要使用localhost:8080/user/login訪問到此接口。

    @RequestMapping("/login")
    String userLogin(HttpServletRequest request) {
        HashMap map = new HashMap();
        map.put("phone", request.getParameter("phone"));
        map.put("pass", request.getParameter("pass"));

        return "";
    }
登陸方法
  1. 這里我直接在接口里寫了一個邏輯珠增,就是接受phone和pass兩個參數(shù)超歌,然后返回到頁面里,當(dāng)然要轉(zhuǎn)成json字符串返回咯蒂教,我推薦使用阿里爸爸的fastjson框架巍举,挺方便的,打開pom.xml凝垛,加入以下依賴懊悯,更新maven
    <!-- json -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.23</version>
    </dependency>
  1. 繼續(xù)修改登錄邏輯,將轉(zhuǎn)json加入進(jìn)去梦皮,返回json字符串到頁面


    添加fastjson

    轉(zhuǎn)換json
  2. 接口出好了炭分,訪問一下。果然不通??剑肯。原因是web.xml還沒有配置捧毛,SpringMVC框架還沒形成閉環(huán),記不記得@Controller让网,要使這個注解生效還要配置一下spring-mvc庫和web.xml

    404

  3. 打開pom.xml配置spring-mvc庫呀忧,更新maven,是不是都輕車熟路了……

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
添加spring-mvc
  1. 接下來是重點操作咯溃睹,注意聽講而账,敲黑板。在webapp文件夾下創(chuàng)建一個SpringMVC文件夾(名字隨意丸凭,方便歸納)福扬,在SpringMVC文件夾下右鍵->XML Configuration File->Spring Config,創(chuàng)建一個spring-mvc的配置文件惜犀,名字也可以隨意起铛碑。完后在spring-mvc.xml加入以下內(nèi)容,base-package對應(yīng)的是你控制器所在的文件夾
<context:component-scan base-package="Controller"/>
創(chuàng)建spring-mvc配置文件

配置內(nèi)容
  1. 打開項目配置虽界,和Class設(shè)置源碼文件夾的操作一樣汽烦,這次我們要將SpringMVC設(shè)置為資源文件夾,別問為啥莉御,設(shè)就完了撇吞。


    設(shè)置資源文件夾
  2. 打開web.xml,下面開始配置web.xml礁叔,首先在<web-app>標(biāo)簽下加入如下內(nèi)容牍颈。注意咯,一大波內(nèi)容琅关,我們慢慢消化煮岁。

  <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-mvc.xml</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.hehe</url-pattern>
  </servlet-mapping>

講解一下:

  • servlet標(biāo)簽,是servlet的設(shè)置總標(biāo)簽涣易,servlet是什么東西小伙伴們可以去百度一下哈画机,一句兩句解釋不清楚。此處就不展開了新症,免得看著亂步氏。
  • servlet-name標(biāo)簽,是此servlet的名字徒爹。
  • servlet-class標(biāo)簽荚醒,是指明此servlet的類,這里用spring框架中的DispatcherServlet類即可瀑焦,固定這么寫就行
  • init-param標(biāo)簽腌且,字面意思是初始化參數(shù)
  • param-name標(biāo)簽,該標(biāo)簽的值是contentConfigLocation固定的榛瓮,這表示接下來的value的值是配置的地址
  • param-value標(biāo)簽铺董,是剛才創(chuàng)建的spring-mvc.xml配置文件的地址。路徑是從SpringMVC文件夾開始的禀晓,這就是為什么把它設(shè)為資源文件夾精续,不設(shè)為資源是無法找到這個xml的
  • servlet-mapping標(biāo)簽,是一個映射粹懒,主要作用是聲明本servlet處理的路徑范圍
  • url-pattern標(biāo)簽重付,是具體攔截的路徑范圍,*.hehe就是地址只能用.hehe為結(jié)尾訪問凫乖,如果不想設(shè)置攔截的話确垫,將該值設(shè)置為/就可以了弓颈。
web.xml配置完成
  1. 再次運行,訪問删掀,第一個接口就完成咯??翔冀,恭喜恭喜!


    接口完成
  2. 總結(jié)一下:

  • web.xml中配置了servlet。1. servlet指明了以.hehe結(jié)尾的路徑可以訪問披泪。2. 關(guān)聯(lián)了SpringMVC的配置文件spring-mvc.xml纤子。
  • spring-mvc.xml中關(guān)聯(lián)了Controller文件夾,該文件夾下的所有控制器款票,只要聲明@Controller注解的都會被認(rèn)為是一個控制器控硼,通過@RequestMapping注解聲明了訪問路徑。
  • http請求訪問到方法路徑后會跳轉(zhuǎn)到指定控制器的指定方法艾少,使用HttpServletRequest即可獲取到請求參數(shù)卡乾,然后我們的方法返回一個json字符串到頁面上
  1. 然而這個接口只是一個假接口,下一章我們開始操作數(shù)據(jù)庫缚够,搞真正的接口咯

溫馨提示:HttpServletRequest的getParameter方法默認(rèn)只能獲取到Content-Type為application/x-www-form-urlencoded格式的參數(shù)说订,如果是application/json格式的話需要在參數(shù)位置添加@RequestBody注解,想了解可以自行百度

學(xué)Java的iOS開發(fā)者系列文章

iOS轉(zhuǎn)Java歡迎關(guān)注學(xué)Java的iOS開發(fā)者文集

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潮瓶,一起剝皮案震驚了整個濱河市陶冷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毯辅,老刑警劉巖埂伦,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異思恐,居然都是意外死亡沾谜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門胀莹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來基跑,“玉大人,你說我怎么就攤上這事描焰∠狈瘢” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵荆秦,是天一觀的道長篱竭。 經(jīng)常有香客問我,道長步绸,這世上最難降的妖魔是什么掺逼? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瓤介,結(jié)果婚禮上吕喘,老公的妹妹穿的比我還像新娘赘那。我一直安慰自己,他們只是感情好氯质,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布漓概。 她就那樣靜靜地躺著,像睡著了一般病梢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梁肿,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天蜓陌,我揣著相機(jī)與錄音,去河邊找鬼吩蔑。 笑死钮热,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烛芬。 我是一名探鬼主播隧期,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赘娄!你這毒婦竟也來了仆潮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤遣臼,失蹤者是張志新(化名)和其女友劉穎性置,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揍堰,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡鹏浅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屏歹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隐砸。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝙眶,靈堂內(nèi)的尸體忽然破棺而出季希,到底是詐尸還是另有隱情,我是刑警寧澤幽纷,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布胖眷,位于F島的核電站,受9級特大地震影響霹崎,放射性物質(zhì)發(fā)生泄漏珊搀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一尾菇、第九天 我趴在偏房一處隱蔽的房頂上張望境析。 院中可真熱鬧囚枪,春花似錦、人聲如沸劳淆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沛鸵。三九已至括勺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曲掰,已是汗流浹背疾捍。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留栏妖,地道東北人乱豆。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像吊趾,于是被迫代替她去往敵國和親宛裕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容