2011-12-20 2 views
0

Я новичок в Spring, читал много, но не могу понять, почему это не работает. Я включил соответствующие разделы ниже ...

web.xml:Spring - ПРЕДУПРЕЖДЕНИЕ: нет сопоставления для HTTP-запроса с URI

<servlet> 
    <servlet-name>display</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>display</servlet-name> 
    <url-pattern>*.p</url-pattern> 
</servlet-mapping> 


дисплея servlet.xml:

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


displayController.java:

package com; 
@Controller 
public class displayController { 

    @RequestMapping("/display") 
    public ModelAndView displayName() { 
     System.out.println("-- in handleRequest"); 
     ModelAndView mv = new ModelAndView("display"); 
     user u = new user(); 
     u.setUsername("bob"); 
     mv.addObject("user", u); 
     return mv; 
    } 
} 

Теперь, насколько я знаю, это то, что я думаю, что происходит, но это не так ..

1. Я иду в URL «/user/display.p»
2. Приложение просматривает web.xml, находит шаблон url «* .p» и замечает, что он должен быть связан с отображением сервлета. Затем создается экземпляр DispatcherServlet и загружается контекст в display-servlet.xml.
3. Когда загружен display-servlet.xml, он замечает mvc: annotation-driven и делает что-то (не совсем уверен, что я все еще это понимаю, но я думаю, что мне это нужно. Затем он замечает компонент- сканирование и сканирование через пакет «com», в котором находится displayController.
4. displayController выполняет поиск аннотаций и обнаруживает, что это контроллер, а также любой URL с «/ дисплеем» в нем должен автоматически запускать функция DISPLAYNAME().
5. [Где-то здесь вещи перерыв ...]
6. Затем, что должно произойти (но делает не) - это должен быть загружен вид «дисплей» и должен быть загружен «/WEB-INF/jsp/display.jsp». Тем не менее, никакого «отображения» не обнаружено, и я получаю сообщение об ошибке «ПРЕДУПРЕЖДЕНИЕ: сопоставление не найдено для HTTP-запроса с URI [/testing/user/display.p] в DispatcherServlet с именем« display »»

Может кто-нибудь помочь я на это?

Спасибо!

+0

Вызывается функция displayName(), т.е. сообщение «in handleRequest» распечатывается? – gkamal

+0

Что такое/testing/user в url. Если вы получаете доступ к /testing/user/display.p из браузера, тогда RequestMapping должен быть для/testing/user/display – gkamal

+0

Почему вы переходите к '/ user/display.p', если ваш контроллер отображается как'/display .p'? – axtavt

ответ

0

Попробуйте

package com; 
@Controller 
public class displayController { 

@RequestMapping("/user/*) 
public ModelAndView displayName() { 
    System.out.println("-- in handleRequest"); 
    ModelAndView mv = new ModelAndView("display"); 
    user u = new user(); 
    u.setUsername("bob"); 
    mv.addObject("user", u); 
    return mv; 
} 
} 

Диспетчерские делегируют запросы с рисунком * .p к DispatcherServlet и DispatcherServlet будет делегировать/пользователь/* запросы к вашему методу.

+0

Не должно быть '@RequestMapping ("/user/display.p ")'? – jjmontes

+0

Нет, это никогда не печаталось. Однако из комментария к моему основному сообщению я понял, что для того, чтобы делать то, что я хочу, мне нужно перейти к «/display.p» вместо «/ user/display».p " – Fittersman

+0

Однако это предложение Aravind также делает мою программу работы по назначению (это было не совсем то, чем я был), поэтому я буду принимать ее как ответ для тех, кто в будущем! – Fittersman

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