Java中@Controller、@RestController注解的區(qū)別

這篇文章主要介紹“Java中@Controller、@RestController注解的區(qū)別”,在日常操作中,相信很多人在Java中@Controller、@RestController注解的區(qū)別問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java中@Controller、@RestController注解的區(qū)別”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了墨江免費(fèi)建站歡迎大家使用!

@Controller、@RestController注解區(qū)別:

@RestController 注解相當(dāng)于 @Controller + @ResponseBody 合在一起的作用。

一、@Controller注解

@Controller 是Spring框架提供的注解。

@Controller標(biāo)識(shí)的類,該類代表控制器類(控制層/表現(xiàn)層)。這里控制層里面的每個(gè)方法,都可以去調(diào)用@Service標(biāo)識(shí)的類(業(yè)務(wù)邏輯層),@Service標(biāo)識(shí)的類中的方法可以繼續(xù)調(diào)用@Resposity標(biāo)識(shí)的接口實(shí)現(xiàn)類(Dao層/持久層)。

【MVC設(shè)計(jì)模式:M(model)指模型,V(view)指視圖層,C(controller)指控制層。M代表模型一般指service和DAO;view代表視圖一般指頁(yè)面eg:jsp,html ftl等;C代表控制器,比如springMVC 中的controller或struts2中的action 。MVC其實(shí)我們正常理解應(yīng)該是VMC:JSP/HTML頁(yè)面數(shù)據(jù)–>控制器–>數(shù)據(jù)邏輯處理并持久化。但官方是MVC,所以我們按照MVC這么記住就對(duì)了?!?/p>

@Controller標(biāo)記在一個(gè)類上還不能真正意義上說(shuō)它就是SpringMVC的控制器,應(yīng)為這個(gè)時(shí)候Spring還不認(rèn)識(shí)它,這個(gè)時(shí)候需要把這個(gè)控制器交給Spring來(lái)管理。用下面方式管理:

在applicationContext.xml文件里面配置如下 掃描器

<context:component-scan base-package="com.baidu"></context:component-scan>

上面的掃描器可以掃描"com.baidu"包和它子包下面的所有帶有@Component、@Controller、@Service、@Resposity等組件,并把他們添加到IOC容器中,由IOC容器管理。

@Controller用于標(biāo)記在一個(gè)類上,使用它標(biāo)記的類就是一個(gè)SpringMVC的 Controller類,分發(fā)處理器會(huì)掃描使用該注解的類的方法,并檢測(cè)該方法是否使用了 @RequestMapping 注解。

@Controller只是定義了一個(gè)控制器類,而使用 @RequestMapping 注解的方法才是處理請(qǐng)求的處理器。

@Controllerpublic class HospitalController { //注入Service服務(wù)對(duì)象 @Autowired private HospitalService hospitalService; @RequestMapping(method = RequestMethod.POST, value = "/findAllHospital") @ResponseBody  public Map findAllHospital(final HttpServletRequest request , @RequestBody Map parmMap , HttpServletResponse response){   Map map=parmMap ;//@RequestBody注解原因,系統(tǒng)會(huì)自動(dòng)把request數(shù)據(jù)變成parmMap   ........  ........  return map;   }   }

用@Controller定義一個(gè)控制器類,

用@RequestMapping給出外界訪問(wèn)方法的路徑,或者說(shuō)觸發(fā)路徑 ,觸發(fā)條件。

用@ResponseBody標(biāo)記Controller類中的方法。把return的結(jié)果變成JSON對(duì)象返回。(如果沒有這個(gè)注解,這個(gè)方法只能返回要跳轉(zhuǎn)的路徑即跳轉(zhuǎn)的html/JSP頁(yè)面。有這個(gè)注解,可以不跳轉(zhuǎn)頁(yè)面,只返回JSON數(shù)據(jù))

二、@RestController注解

@RestController 也是Spring框架提供的注解。(Spring4.0之后新增的)

@RestController 注解相當(dāng)于 @Controller + @ResponseBody 合在一起的作用。

Controller類中的方法返回值,默認(rèn)是json對(duì)象,也就是相當(dāng)于@Controller里面的方法上添加了@ResponseBody如果方法返回值,需要跳轉(zhuǎn),那么方法的返回類型必須是View 或者M(jìn)odelAndView.

@RestControllerpublic class HospitalController { //注入Service服務(wù)對(duì)象 @Autowired private HospitalService hospitalService; @RequestMapping(method = RequestMethod.POST, value = "/findAllHospital") //方法上面可以不需要@ResponseBody注解,因?yàn)轭惿厦嬗玫氖茾RestController注解 public Map findAllHospital(final HttpServletRequest request , @RequestBody Map parmMap , HttpServletResponse response){   Map map=parmMap ;//@RequestBody注解原因,系統(tǒng)會(huì)自動(dòng)把request數(shù)據(jù)變成parmMap   ........  ........  return map;   }   }

到此,關(guān)于“Java中@Controller、@RestController注解的區(qū)別”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

分享名稱:Java中@Controller、@RestController注解的區(qū)別
轉(zhuǎn)載源于:http://muchs.cn/article12/gdsdgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站品牌網(wǎng)站制作、網(wǎng)站改版App開發(fā)、ChatGPT

廣告

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

綿陽(yáng)服務(wù)器托管