当前位置: 首页 > 知识库问答 >
问题:

Spring:不接受mvc:资源下的POST请求?如何修复

邢和光
2023-03-14

我在项目中使用spring框架

这是我的web.xml的一部分:

<servlet>
    <servlet-name>SpringMvcServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/servlet-context.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>SpringMvcServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<filter>
    <filter-name>httpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>httpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<error-page>
    <error-code>404</error-code>
    <location>/system/404.html</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/system/500.html</location>
</error-page>

并配置:

<mvc:resources mapping="/system/**" location="/WEB-INF/pages/system/" />

但是我在我的日志中发现了很多错误,一些请求如下:

  • 职位/索引。php
  • POST/notexists.html

它们不存在于我的服务器中,所以会调用“/system/404.html”,但是mvc:资源不接受POST方法,所以会返回500错误。

如何修复?或者四处工作?

谢谢

共有1个答案

刘兴朝
2023-03-14

首先:我认为当您试图将其用于POST请求时,您滥用了ResourceHttpRequestHandler如果您让这个处理程序处理POST请求,我不确定每件事是否都正确。

<代码>

所以你需要做的就是:

<property name="supportedMethods">
    <list>
       <value>GET</value>
       <value>HEAD</value>
       <value>POST</value>
    </list>
</property>

不幸的是,这需要手动配置ResourceHttpRequestHandler,而不是使用

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="urlMap">
         <map>
              <entry key="/system/**" value="myResourceHandler" />
         </map>
     </property>
     <property name="order" value="100000" />       
</bean>

<bean id="myResourceHandler" name="myResourceHandler"
      class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler">
      <property name="locations" value="/WEB-INF/pages/system/" />
      <property name="supportedMethods">
         <list>
            <value>GET</value>
            <value>HEAD</value>
            <value>POST</value>
         </list>
     </property>
     <!-- cacheSeconds: maybe you should set it to zero because of the posts-->
</bean>

我还没有证明这个配置,我只是根据ResourceBean定义解析器所做的写了下来。

 类似资料:
  • 我有点像 在我的控制器里。 但它给我一个错误,当我发布与 在我的html中。我哪里出错了。

  • 问题内容: 在我的pom.xml中有以下详细信息 JSP页面: 控制器: 我正在以以下方式调用我的网址: 单击按钮后,它返回url,因为 http://lt-50k7sy1:8080/QuickBooks-UX/syncAccounts它返回406,描述为: 该请求标识的资源只能根据请求“接受”标头生成特性不可接受的响应 问题答案: 将以下jar添加到Spring 4.1。*所需的pom.xml文

  • 在我的spring MVC应用程序中,我试图发出一个简单的Post请求,但由于请求的主体,它不起作用。我在params中得到了嵌套对象,Spring抛出了这个异常: 下面是我的对象DTO: 和: 我拿到了这些日志:

  • 在我的pom中有以下详细信息。xml 应用程序配置。xml: JSP页面: 控制器: 我正在调用我的url作为: 点击按钮后,返回的url,返回406和描述是: 此请求标识的资源只能根据请求“接受”标头生成具有不可接受特征的响应 我跟踪了这个链接,但没有结果。

  • 问题内容: 我有一个GET请求,该请求以YYYY-MM-DD格式发送日期到Spring Controller。控制器代码如下: 我正在使用Firebug检查时,请求已正确发送。我得到错误: HTTP状态400:客户端发送的请求在语法上不正确。 如何使控制器接受这种日期格式?请帮忙。我究竟做错了什么? 问题答案: 好的,我解决了。写给那些在一整天不间断的编码后可能会累并且错过这种愚蠢的事情的人。 是

  • 我有一个GET请求,它以YYYY-MM-DD格式向Spring控制器发送一个日期。控制器代码如下: HTTP状态400:客户端发送的请求语法不正确。 我如何使控制器接受这种格式的日期?请帮帮忙。我做错了什么?