2014-12-15 2 views
5

я получаю некоторые проблемы с использованием Spring MVC Вот мой web.xml конфигурацииSpring MVC - Не найдено сопоставление для запроса URI?

<!-- config spring --> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/classes/applicationContext.xml, 
       /WEB-INF/classes/xfire-servlet.xml, 
       /WEB-INF/classes/mvc-servlet.xml, 
       classpath:org/codehaus/xfire/spring/xfire.xml 
    </param-value> 
</context-param> 
<listener> 
    <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 
<listener> 
    <listener-class> 
      org.springframework.web.util.IntrospectorCleanupListener 
    </listener-class> 
</listener> 
<!-- spring mvc --> 
<servlet> 
    <servlet-name>mvc</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>mvc</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

Мой контроллер следит за

@Controller 
@RequestMapping("/searchCase.do") 
public class SearchCaseController { 

     public String getCaseDetailInfo() { 
      return "forward:caseDetail"; 
     } 

} 

и мой MVC конфигурации является

<!--auto scan annotation --> 
<context:component-scan base-package="com.thunisoft.shxt.webservice.model.searchCase.logic" /> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/jsp/case" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

Тогда я прошу через URL: http: // {address: port}/{application-name} /searchCase.do, Но он не может найти контроллер для разрешения моего запроса с помощью

No handler found in getLastModified 
DispatcherServlet with name 'mvc' processing request for [/{application-name}/searchCase.do] 
No mapping found for HTTP request with URI [/{application-name}/searchCase.do] in DispatcherServlet with name 'mvc' 
Successfully completed request 

Моя весна MVC версия 2.5.6 Я жду ваших вопросов, чтобы помочь мне решить эту проблему, спасибо!

+0

Каково имя вашего файла конфигурации xml? –

+0

Конфигурация имени файла xml - это mvc.xml – Gmx

+1

make it springMVC-servlet.xml, затем попробуйте. –

ответ

0

То, что люди предполагают, в комментариях, что docs описывают

После инициализации DispatcherServlet, Spring MVC ищет файл с именем [имя сервлета] -servlet.xml в WEB-INF каталог вашего веб-приложения и создает там определенные компоненты, переопределяя определения любых фасоль, определенных с тем же именем, в глобальной области .

Однако, при использовании конфигурации

<init-param> 
    <param-name>namespace</param-name> 
    <param-value>mvc</param-value> 
</init-param> 

вы перекрываться это, так что файл DispatherServlet будет выглядеть по следующему адресу

DEFAULT_CONFIG_LOCATION_PREFIX + getNamespace() + DEFAULT_CONFIG_LOCATION_SUFFIX 

так в вашем примере, это будет

/WEB-INF/mvc.xml 

Я вижу за ваш комментарий, что вы первоначально имело собственное имя (соответствующее вашей конфигурации). Так что вы либо не разместили его под WEB-INF, либо ваши проблемы находятся в другом месте.

Рассматривая альтернативную конфигурацию (более ясную, на мой взгляд), на основе contextConfigLocation param, например.

<servlet> 
    <servlet-name>springMVC</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>springMVC</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/mvc-servlet.xml</param-value> 
    </context-param> 

Надеется, что это помогает

+0

Во-первых, спасибо за ваш ответ, и я делаю это после вашего совета, но я его не решу, и я отредактировал свой «web.xml», пожалуйста, помогите мне взглянуть, есть ли у него какие-то проблемы. – Gmx

3

Пожалуйста, измените шаблон контроллера URL, как я упоминал ниже

.do воли добавляемых автоматически для все отображения запроса контроллера, так как вы настроили в сети.XML

@Controller 
@RequestMapping("/searchCase") 
public class SearchCaseController { 

     public String getCaseDetailInfo() { 
      return "forward:caseDetail"; 
     } 

} 

JSP код:

<a href="/searchCase.do">Click</a> 
+0

Я предполагаю, что вы имеете в виду Click. Я делаю это после вашего совета, но я не работал в эфире, я плюс метод 'init()' в моем контроллере, чтобы узнать, было ли оно обнаружено и инициализировано, и 'init()' вызывается при запуске сервера, я не могу найти, где проблема! – Gmx

+0

Какая ошибка на самом деле у вас? .Пожалуйста, сообщите об ошибке. – sankar

+0

Привет, вот ошибка 'Нет сопоставления для HTTP-запроса с URI [/{application-name}/searchCase.do] в DispatcherServlet с именем 'mvc'' – Gmx

1

Try добавление уровня метод аннотацию, как это:

@Controller 
@RequestMapping("/searchCase") 
public class SearchCaseController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String getCaseDetailInfo() { 
     return "forward:caseDetail"; 
    } 

} 

Как это описано в документации: Mapping Requests With @RequestMapping

17,3 .2 Необходимость сопоставления ресы С @RequestMapping

Вы используете @RequestMapping аннотацию для сопоставления URL-адресов, таких как /appointments на целый класс или конкретного метода обработчика. Как правило, аннотации на уровне классов сопоставляют определенный путь запроса (или шаблон пути) на контроллер формы с дополнительными аннотациями уровня на уровне метода, сужающими первичное сопоставление для конкретного метода HTTP. метод запроса («GET», «POST») и т. д.) или параметр запроса HTTP .

0

Я настраиваю свой проект на своем компьютере. Сначала я запускаю проект с maven-jetty-plugin. Тогда не было обнаружено ошибки обнаружения. После многих изменений, наконец, я попробовал maven-tomcat7-plugin Тогда это сработало.

Добавить TOMCAT плагин для вашего pom.xml

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
      </plugin> 
     </plugins> 
    </build> 

Затем запустите сервер mvn tomcat7:run

Ваше отображение контроллера должно быть так:

@RequestMapping(value="/searchCase", method = RequestMethod.GET) 
public ModelAndView helloWorld() { 
0

Я имел ту же ошибку. После проверки всего, что я обнаружил при переполнении стека, ничего не понял, я понял, что у меня есть контроллер в папке src/main/resources/com/controllers, где com.controllers должен был быть пакетом.

Создание другой папки-источника src/main/java и перемещение папки com/controllers там сделали трюк. (Он обнаружил папку com/controller в качестве пакета, тогда как в src/main/resources он рассматривался как обычный каталог.)

+0

Кроме того, не забудьте добавить в ваш xml-файл сервлета, иначе он не обнаружит контроллер. – user2648421

Смежные вопросы