最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談springMVC中controller的幾種返回類型

 更新時(shí)間:2021年02月27日 15:29:39   作者:muma_biubiu  
這篇文章主要介紹了淺談springMVC中controller的幾種返回類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

Controller方法的返回值可以有以下幾種:

1、返回ModelAndView

返回ModelAndView時(shí)最常見的一種返回結(jié)果。需要在方法結(jié)束的時(shí)候定義一個(gè)ModelAndView對(duì)象,并對(duì)Model和View分別進(jìn)行設(shè)置。

2、返回String

1):字符串代表邏輯視圖名

真實(shí)的訪問(wèn)路徑=“前綴”+邏輯視圖名+“后綴”

注意:如果返回的String代表邏輯視圖名的話,那么Model的返回方式如下:

public String testController(Model model){
model.addAttribute(attrName,attrValue);//相當(dāng)于ModelAndView的addObject方法
return "邏輯視圖名";
 }

2):代表redirect重定向

redirect的特點(diǎn)和servlet一樣,使用redirect進(jìn)行重定向那么地址欄中的URL會(huì)發(fā)生變化,同時(shí)不會(huì)攜帶上一次的request

案例:

public String testController(Model model){
 return "redirect:path";//path代表重定向的地址
 }

3):代表forward轉(zhuǎn)發(fā)

通過(guò)forward進(jìn)行轉(zhuǎn)發(fā),地址欄中的URL不會(huì)發(fā)生改變,同時(shí)會(huì)將上一次的request攜帶到寫一次請(qǐng)求中去

案例:

 public String testController(Model model){
 return "forward:path";//path代表轉(zhuǎn)發(fā)的地址
 }

3、返回void

返回這種結(jié)果的時(shí)候可以在Controller方法的形參中定義HTTPServletRequest和HTTPServletResponse對(duì)象進(jìn)行請(qǐng)求的接收和響應(yīng)

1)使用request轉(zhuǎn)發(fā)頁(yè)面

request.getRequestDispatcher("轉(zhuǎn)發(fā)路徑").forward(request,response);

2)使用response進(jìn)行頁(yè)面重定向

response.sendRedirect("重定向路徑");

3)也可以使用response指定響應(yīng)結(jié)果

response.setCharacterEncoding("UTF-8"); 
response.setContentType("application/json;charset=utf-8"); 
 response.getWriter.write("json串"); 

以上三種返回值沒(méi)有什么重要和不重要的分別,一般來(lái)說(shuō)都會(huì)使用到, 只不過(guò)有的時(shí)候使用的方式會(huì)有一些細(xì)微的差別

補(bǔ)充:SpringMvc中,Controller方法的多種實(shí)現(xiàn)方式(指定返回到哪個(gè)頁(yè)面,指定返回到頁(yè)面的數(shù)據(jù))

1)ModelAndView

@RequestMapping("/list")
 public ModelAndView itemsList() throws Exception{  
 List<Items> list = itmesService.list();
 //創(chuàng)建ModelAndView視圖
 ModelAndView modelAndView = new ModelAndView();
 //將list數(shù)據(jù)添加到試圖里
 modelAndView.addObject("itemList", list);
 modelAndView.setViewName("itemList");//設(shè)置視圖的名稱,即返回到哪個(gè)頁(yè)面
 //由于有視圖解析器的作用,省去了前綴和后綴,其實(shí)訪問(wèn)的頁(yè)面為("/WEB-INF/jsp/itemList.jsp")
 return modelAndView;
 }
 

2) String(最常用,最方便,建議)

@RequestMapping("/itemEdit/{id}")
 public String itemEdit(@PathVariable("id") Integer id, HttpServletRequest reuqest, 
  Model model) throws Exception{
 
 //String idStr = reuqest.getParameter("id");
 Items items = itmesService.findItemsById(id);
 //將items數(shù)據(jù)加到視圖中
 model.addAttribute("item", items);
 
 //這里返回editItem,在@Controller的注解下,回自動(dòng)添加前綴和后綴,實(shí)則是返回到頁(yè)面("/WEB-INF/jsp/editItem.jsp")
 return "editItem";
 }

3) 返回void

public void update(Items items,HttpServletRequest request,HttpServletResponse response)throws Exception{
 //返回?cái)?shù)據(jù),將items的內(nèi)容放入items里,jsp頁(yè)面調(diào)用items就行
 request.setAttribute("items", items);
 //返回指定的頁(yè)面
 //如果是void類型的話,就不會(huì)去調(diào)用SpringMvc的架構(gòu),因此無(wú)法自動(dòng)加載視圖解析器,所以跳轉(zhuǎn)的
 //網(wǎng)頁(yè)名稱應(yīng)該為其全路徑名稱
 request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
 }
就不會(huì)去調(diào)用SpringMvc的架構(gòu),因此無(wú)法自動(dòng)加載視圖解析器,所以跳轉(zhuǎn)的
 //網(wǎng)頁(yè)名稱應(yīng)該為其全路徑名稱
 request.getRequestDispatcher("/WEB-INF/jsp/success.jsp").forward(request, response);
 }

4)關(guān)于方法中所需要的參數(shù)定義

舉3)中的例子,我在update方法中定義了:

Items items,HttpServletRequest request,以及HttpServletResponse response這三個(gè)類型.

但是大家可以發(fā)現(xiàn),其實(shí)我在方法中是沒(méi)有用到response的,因此,可以把其刪掉,對(duì)于程序來(lái)說(shuō),并不會(huì)

產(chǎn)生影響。

因此,大家在定義方法的時(shí)候,可以根據(jù)自己的實(shí)際需要來(lái)定義所需要的類,或者大家怕以后代碼需要改麻煩的話,

全部定義上也是可以的。

更新

5)若如果想要接口不是跳轉(zhuǎn)頁(yè)面,而是返回?cái)?shù)據(jù),則需要添加@ResponseBody的注解

例:

@RequestMapping("atimynyc/getUser")
@ResponseBody
public User getUser(String id){
  User user = new User();
  user.setUserName = "Atimynyc";
  user.setUserAge = 18;
  user.setUserPhone = "123456789";
  return User;
}

通過(guò)加上ResponseBody,springmvc就知道該接口是返回?cái)?shù)據(jù),例,當(dāng)我們用ajax調(diào)用上面的接口url時(shí)atimynyc/getUser,就可以獲得user這個(gè)對(duì)象。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java GC垃圾回收算法分析

    Java GC垃圾回收算法分析

    垃圾回收機(jī)制簡(jiǎn)稱GC,主要用于Java堆的管理。在JVM中程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧生命周期隨跟隨線程,棧幀的進(jìn)棧和入棧能實(shí)現(xiàn)自動(dòng)清理。而 jdk8后元空間為本地內(nèi)存也不受GC控制,所以垃圾回收主要是在堆中
    2022-12-12
  • XML Web 服務(wù) Eclipse實(shí)現(xiàn)sun-jaxws.xml文件的方法

    XML Web 服務(wù) Eclipse實(shí)現(xiàn)sun-jaxws.xml文件的方法

    在sun-jaxws.xml文件,可以配置endpoint、handler-chain等內(nèi)容,在這個(gè)文件中配置的內(nèi)容會(huì)覆蓋在Java代碼中使用注解屬性配置的的內(nèi)容,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2023-11-11
  • java使用JSCH實(shí)現(xiàn)SFTP文件管理

    java使用JSCH實(shí)現(xiàn)SFTP文件管理

    這篇文章主要為大家詳細(xì)介紹了java使用JSCH實(shí)現(xiàn)SFTP文件管理,實(shí)現(xiàn)上傳、下載等功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • java String類型對(duì)象轉(zhuǎn)換為自定義類型對(duì)象的實(shí)現(xiàn)

    java String類型對(duì)象轉(zhuǎn)換為自定義類型對(duì)象的實(shí)現(xiàn)

    本文主要介紹了java String類型對(duì)象轉(zhuǎn)換為自定義類型對(duì)象的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringBoot整合Redisson的兩種方式

    SpringBoot整合Redisson的兩種方式

    這篇文章主要介紹了Spring Boot整合Redisson的兩種方式,方式一直接使用yml配置,方式二創(chuàng)建RedissonConfig配置類,文中通過(guò)代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-04-04
  • Spring中propagation的傳播機(jī)制詳解

    Spring中propagation的傳播機(jī)制詳解

    這篇文章主要介紹了Spring中propagation的傳播機(jī)制詳解,要搞懂事務(wù)的傳播機(jī)制,那么就要明白邏輯事務(wù)中各個(gè)事務(wù)的關(guān)系,才能徹底理解事務(wù)傳播特性,在Spring事務(wù)中,各個(gè)邏輯事務(wù)的關(guān)系可以是并列、覆蓋或包含,需要的朋友可以參考下
    2023-12-12
  • Spring源碼之事件監(jiān)聽機(jī)制詳解(@EventListener實(shí)現(xiàn)方式)

    Spring源碼之事件監(jiān)聽機(jī)制詳解(@EventListener實(shí)現(xiàn)方式)

    這篇文章主要介紹了Spring源碼之事件監(jiān)聽機(jī)制(@EventListener實(shí)現(xiàn)方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SSH框架網(wǎng)上商城項(xiàng)目第26戰(zhàn)之訂單支付后發(fā)送短信提醒

    SSH框架網(wǎng)上商城項(xiàng)目第26戰(zhàn)之訂單支付后發(fā)送短信提醒

    這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第26戰(zhàn)之訂單支付后發(fā)送短信提醒,感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringMVC實(shí)現(xiàn)注解式權(quán)限驗(yàn)證的實(shí)例

    SpringMVC實(shí)現(xiàn)注解式權(quán)限驗(yàn)證的實(shí)例

    本篇文章主要介紹了SpringMVC實(shí)現(xiàn)注解式權(quán)限驗(yàn)證的實(shí)例,可以使用Spring MVC中的action攔截器來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解下。
    2017-02-02
  • Java實(shí)時(shí)監(jiān)控日志文件并輸出的方法詳解

    Java實(shí)時(shí)監(jiān)控日志文件并輸出的方法詳解

    這篇文章主要給大家介紹了關(guān)于Java實(shí)時(shí)監(jiān)控日志文件并輸出的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06

最新評(píng)論

龙口市| 南和县| 旬邑县| 柘城县| 巩留县| 天柱县| 新龙县| 如东县| 阜宁县| 开鲁县| 拉孜县| 自治县| 洛浦县| 梅州市| 郑州市| 乌兰察布市| 佛山市| 蒙自县| 栾城县| 云和县| 湖北省| 宝应县| 休宁县| 石嘴山市| 东源县| 宝清县| 泰安市| 十堰市| 象州县| 大同县| 宝山区| 虎林市| 沽源县| 兴和县| 玉山县| 桓仁| 西平县| 澄江县| 五峰| 焉耆| 新竹县|