java 为什么不支持SpringMVC请求方法'GET'?

mqxuamgl  于 2023-01-01  发布在  Java
关注(0)|答案(9)|浏览(277)

我尝试@RequestMapping(value = "/test", method = RequestMethod.POST),但出现错误
代码为

@Controller
 public class HelloWordController {
 private Logger logger = LoggerFactory.getLogger(HelloWordController.class);

 @RequestMapping(value = "/test", method = RequestMethod.POST)
 public String welcome() {
  logger.info("Spring params is welcome");
  return "/WEB-INF/jsp/welcome";
 }

}

web.xml是

<servlet>
<description>This is Spring MVC DispatcherServlet</description>
<servlet-name>SpringMVC DispatchServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
  <description>SpringContext</description>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<servlet-mapping>
<servlet-name>SpringMVC DispatchServlet</servlet-name>
<url-pattern>/</url-pattern>

并且springmvc.xml是
index.jsp是

<form action="<%=request.getContextPath() %>/test" method="post">
<input type="submit" value="submit"> 
</form>

我输入提交按钮浏览器错误
HTTP状态405-请求方法'GET'不支持状态报告类型
不支持消息请求方法'GET'
说明指定的HTTP方法不允许用于请求的资源(不支持请求方法'GET')。

efzxgjgh

efzxgjgh1#

对我来说,问题是我忘记在我的 Postman 请求中给baseUrl添加一个协议,在我添加了“https://"之后,它就像一个护身符一样工作了。

djp7away

djp7away2#

你在使用Angular吗?我也遇到过同样的问题,这是因为我在使用subscribe时,他们改变了他们的实现(这种弃用是在RxJS 6.4中引入的)。
从"rxjs"导入{of};
// recommended of([1,2,3]).subscribe((v) => console.info(v));

y4ekin9u

y4ekin9u3#

我也遇到了同样的问题,我把它改成了下面的,效果很好。
java :

@RequestMapping(value = "/test", method = RequestMethod.GET)

HTML代码:

<form action="<%=request.getContextPath() %>/test" method="GET">
    <input type="submit" value="submit"> 
    </form>

默认情况下,如果您没有在表单中指定http方法,它将使用GET。要使用POST方法,您需要特别声明它。
希望这个有用。

wr98u20j

wr98u20j4#

如果您使用的是浏览器,它默认总是在get上工作,您可以使用postman工具,否则您可以将其更改为getmapping。希望这将工作

lxkprmvk

lxkprmvk5#

我解决这个错误的方法是将json数据包含到postman body部分,然后点击postmapping url

x33g5p2x

x33g5p2x6#

method = POST将工作,如果你'post'一个表单到url /test.
如果您在浏览器地址栏中键入一个url并按Enter键,它始终是一个GET请求,因此您必须指定POST请求。
Google for HTTP GETHTTP POST(还有其他几个类似PUT DELETE的)。它们都有自己的含义。

3b6akqbq

3b6akqbq7#

变更

@RequestMapping(value = "/test", method = RequestMethod.POST)

@RequestMapping(value = "/test", method = RequestMethod.GET)
dy1byipe

dy1byipe8#

显然,一些POST请求看起来像是对服务器的“GET”(如Heroku...)
所以我用了这个策略,它对我很有效:

@RequestMapping(value = "/salvar", method = { RequestMethod.GET, RequestMethod.POST })
wlzqhblo

wlzqhblo9#

我通过在控制器中包含get和post请求解决了这个错误:方法={请求方法.POST,请求方法.GET}

相关问题