Spring: не найдено сопоставление для HTTP-запроса с URI - PullRequest
1 голос
/ 16 октября 2011

Я начал использовать пружину и сталкиваюсь с этой ошибкой

Не найдено сопоставление для HTTP-запроса с URI [/SpringSocialSample/login.htm] в DispatcherServlet с именем «SpringSocialSample»

Я понял, что login.htm не может быть найден диспетчером-сервлетом

Мой SpringSocialSample-servlet.xml

<context:component-scan
        base-package="com.social.spring.controllers" />
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix="/WEB-INF/views/" p:suffix=".jsp" />

web.xml-

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" 
version="2.5">
  <display-name>SpringSocialSample</display-name>

  <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>updatestatus.root</param-value>
  </context-param>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

  <servlet>
    <servlet-name>SpringSocialSample</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringSocialSample</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

У меня есть index.jsp, куда я перенаправляю на login.jsp, находящийся в WEB-INF / views ..

1 Ответ

2 голосов
/ 16 октября 2011

Вы сопоставили Spring Dispatcher с * .htm, поэтому каждый раз, когда запрашивается URL, соответствующий этому шаблону, диспетчер будет искать контроллер, сопоставленный с этим конкретным URL-запросом, он НЕ будет пытаться загрузить статические файлы (иначе Ваш hvml-файл login.html эффективно скрыт этой конфигурацией, вы не можете его вернуть, пока не пройдете сначала через Spring Controller, который отправляет его обратно в качестве представления). Вы создаете Spring Controller, который возвращает эту страницу, сопоставляете ее с URI [login.htm], и тогда Spring больше не будет жаловаться, что не может найти сопоставление для этого URL:

Ознакомьтесь с главой «13.4. Отображения обработчиков» из:

http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...