溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringMVC處理Put或Delete請(qǐng)求報(bào)錯(cuò)及解決方法

發(fā)布時(shí)間:2020-06-18 08:31:17 來(lái)源:網(wǎng)絡(luò) 閱讀:2053 作者:nineteens 欄目:編程語(yǔ)言

  首先先貼原代碼和報(bào)錯(cuò)提示

  1.在web.xml配置文件中配置HiddenHttpMethodFilter,它的作用是能把POST請(qǐng)求轉(zhuǎn)換為PUT或DELETE請(qǐng)求。

  HiddenHttpMethodFilter

  org.springframework.web.filter.HiddenHttpMethodFilter

  HiddenHttpMethodFilter

  /*

  2.配置視圖解析器

  3.在JSP頁(yè)面中發(fā)送PUT或DELETE請(qǐng)求。注意表單中method必須為post,隱藏域中name和value屬性如下所示:

  4.在目標(biāo)方法中接收請(qǐng)求。

  @RequestMapping("/SpringMVC")

  @Controller

  public class SpringMVCTest {

  private static final String Success = "Success";

  @RequestMapping(value="/testRest/{id}", method=RequestMethod.PUT)

  @ResponseBody

  public String testRestPut(@PathVariable Integer id) {

  System.out.println("testRest Put:"+id);

  return Success;

  }

  @RequestMapping(value="/testRest/{id}", method=RequestMethod.DELETE)

  public String testRestDelete(@PathVariable Integer id) {

  System.out.println("testRest Delete:"+id);

  return Success;

  }

  }無(wú)錫婦科醫(yī)院排行榜 http://mobile.chfk120.com

  4.正常來(lái)說(shuō)是可以跳轉(zhuǎn)到Success.jsp頁(yè)面的,但是卻出現(xiàn)了錯(cuò)誤(我就只貼文字了)

  HTTP Status 405 – Method Not Allowed

  Type Status Report

  消息 JSP 只允許 GET、POST 或 HEAD。Jasper 還允許 OPTIONS

  描述 請(qǐng)求行中接收的方法由源服務(wù)器知道,但目標(biāo)資源不支持

  Apache Tomcat/9.0.20

  5.原因分析:JSP只支持GET與POST請(qǐng)求,而我們發(fā)起的是REST風(fēng)格的請(qǐng)求,同樣調(diào)用了PUT與DELETE方法,JSP無(wú)法解析。

  6.解決方法:為controller里的testRestPut和tsetRestDelete方法添加**@ResponseBody注解**。如下所示:

  @RequestMapping(value="/testRest/{id}", method=RequestMethod.PUT)

  @ResponseBody

  public String testRestPut(@PathVariable Integer id) {

  System.out.println("testRest Put:"+id);

  return Success;

  }

  @RequestMapping(value="/testRest/{id}", method=RequestMethod.DELETE)

  @ResponseBody

  public String testRestDelete(@PathVariable Integer id) {

  System.out.println("testRest Delete:"+id);

  return Success;

  }

  然后上網(wǎng)查閱了@responseBody注解的作用,這里大致貼一段:

  -)將controller的方法返回的對(duì)象通過(guò)適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后,寫(xiě)入到response對(duì)象的body區(qū),通常用來(lái)返回JSON數(shù)據(jù)或者是XML數(shù)據(jù)。添加此注解后,直接將數(shù)據(jù)寫(xiě)入到輸入流,不會(huì)再走視圖處理器。他的效果等同于通過(guò)response對(duì)象輸出指定格式的數(shù)據(jù)。

  添加注解之后順利解決問(wèn)題。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI