Spring mvc-фреймворк обрабатывает отправку файла jsp как еще один запрос - PullRequest
0 голосов
/ 17 октября 2011

Я новичок в Spring Web MVC Framework, и раньше я использовал распорки 2.

Я создаю новый динамический веб-проект, используя eclipse EE, и добавляю все файлы в /web-info/lib.

.

Вся иерархия проекта выглядит следующим образом:

SpringMVCTest
    WEB-INF
        web.xml
        example-servlet.xml
        jsp
            hello.jsp
        lib
            xxxx.jars
            .....

Это определение сервлета:

<servlet>
    <servlet-name>example</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>example</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Это пример-servlet.xml:

<context:component-scan base-package="com.kk.web.controllers" />
<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/" />
    <property name="suffix" value=".jsp" />
</bean>

И контроллер:

package com.kk.web.controllers;
@Controller("example")
@RequestMapping("/example")
public class ExampleController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "hello";
    }

    @RequestMapping("/hello_jsp")
    public ModelAndView hello_jsp(){
        ModelAndView mv=new ModelAndView("hello");
        mv.addObject("message", "welcome");
        return mv;
    }
}

Это сработало, когда я запустил:

http://localhost:8080/SpringMVCTest/example/hello

Но когда я бегу: http://localhost:8080/SpringMVCTest/example/hello_jsp Я получил предупреждение:

2011-10-17 10:36:15 org.springframework.web.servlet.DispatcherServlet noHandlerFound
Warn: No mapping found for HTTP request with URI [/SpringMVCTest/WEB-INF/jsp/hello.jsp] in DispatcherServlet with name 'example'

Кажется, что ExampleController работает, он отправляет запрос "/ example / hello_jsp" в правое представление "jsp / hello.jsp".

Но тогда пружина примет отправку файла "/jsp/hello.jsp" как другой запрос, тогда она не найдет сопоставленное сопоставление URL в контроллере "example".

Почему ?? IMO, запрос должен прийти от клиента к серверу, контроллер получает только один запрос здесь "/ exmaple / hello_jsp", не так ли?

А как это исправить?

Кстати, я могу установить шаблон URL на "/*.xxx", но мне не нужен суффикс в URL.

Есть идеи?

1 Ответ

1 голос
/ 17 октября 2011

Предыдущий ответ не сработал ...

Эта публикация выглядит примерно так: http://forum.springsource.org/showthread.php?55982-No-mapping-found-for-HTTP-request-with-MVC-requests

Резюме: изменить

<servlet-mapping>
    <servlet-name>example</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

на

<servlet-mapping>
    <servlet-name>example</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

и проверяя мое последнее приложение Spring MVC, я использую последний шаблон (без * в конце).

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