Я использую в своем проекте фреймворк 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/" />
Но я нахожу в журнале столько ошибок, вот такой запрос:
- POST /index.php
- ЗАПИСЬ /notexists.html
Их не было на моем сервере, поэтому будет вызывать "/system/404.html", но mvc: resources не принимают метод POST, поэтому он вернет ошибку 500.
Как это исправить? или работать?
Благодарность
1 ответ
Прежде всего: я думаю, вы злоупотребляете ResourceHttpRequestHandler
, когда пытаетесь использовать его для запросов POST. - И я не уверен, что все работает правильно, если вы сделали этот обработчик для обработки POST запросы.
<mvc:resources />
настроить экземпляр класса org.springframework.web.servlet.resource.ResourceHttpRequestHandler
. У этого суперкласса есть WebContentGenerator
, и у этого суперкласса есть свойство Set<String> supportedMethods
.
Итак, все, что вам нужно сделать, это:
<property name="supportedMethods">
<list>
<value>GET</value>
<value>HEAD</value>
<value>POST</value>
</list>
</property>
К сожалению, для этого необходимо настроить ResourceHttpRequestHandler
вручную, а не использовать <mvc:resources />
<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>
Я не проверял эту конфигурацию, я только что записал ее на основе того, что делает ResourceBeanDefintionParser
.
Похожие вопросы
Связанные вопросы
Новые вопросы
spring
Spring Framework - это среда с открытым исходным кодом для разработки приложений на платформе Java. В ее основе лежит широкая поддержка компонентно-ориентированных архитектур, и в настоящее время в ней имеется более двадцати высокоинтегрированных модулей.