2013-02-22 1 views
0

Я сделал базовое приложение на основе весны mvc.url-шаблон не работает в весеннем приложении mvc

, когда я пишу следующий шаблон URL-адрес на web.xml:

<servlet-mapping> 
     <servlet-name>springxml</servlet-name> 
     <url-pattern>*.jsp</url-pattern> 
    </servlet-mapping> 

и запускает приложение (используя ../SpringMVCXML/welcome.jsp), он отображает состояние HTTP 404 ошибки.

Когда я изменяю шаблон URL, отличный от .jsp, приложение работает нормально.

Почему приложение не работает на .jsp url pattern?

Я использовал следующий класс java как контроллер.

@Controller 
@RequestMapping(value="/welcome",method=RequestMethod.GET) 
public class ControllerHello { 
    @RequestMapping(method=RequestMethod.GET) 
    public String printHello(ModelMap map) { 
     map.addAttribute("message", "Hello Spring MVC Framework"); 
     return "hello"; 
    } 
} 

Кроме того, мой springxml-servlet.xml был следующий код:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 

ответ

1

Если у вас есть также springxml сервлет также служит другие представления, чем * .jsp (возможно, есть и другие сервлетах отображения в вашем web.xml), то ситуация такова:

Вы зарегистрировали контроллер для пути/приветствия, а не для /welcome.jsp. Следовательно, /welcome.jsp не отображается на контроллер Spring mvc. Приветствие HelloController приветствует вас.

/welcome.jsp выдаст ошибку 404, так как она находится в WEB-INF и для этого URL-адреса нет контроллера Spring MVC.

org.springframework.web.servlet.view.InternalResourceViewResolver предназначен для размещения ваших файлов jsp внутри/WEB-INF. Посмотрите на http://www.mkyong.com/spring-mvc/spring-mvc-internalresourceviewresolver-example/ для простого объяснения того, что делает InternalResourceResolver. В принципе, это позволяет Spring MVC использовать jsp, который не входит в ваши общедоступные ресурсы, в виде представления. Это не механизм регистрации этих jsps как действительных URL-адресов.

URL-адреса определяются в запросах.

0

вы, вероятно, не имеют никакого отображения весной контроллер для этого URL /welcome.jsp какая версия весной вы используют? если вы используете пружину 2.5 или выше, попробуйте следующий код

@RequestMapping(value = "welcome.jsp") 
public String welcomeJSP(){ 
    return "welcome"; 
} 
+0

Я редактирую вопрос. Пожалуйста, взгляните на это. –