0

我映射DispatcherServlet如下

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

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

因此,根据 url,它会处理每个请求。但是,当我像这样映射 ViewResolver

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

并且控制器返回“home”作为视图名称。然后我得到

[PageNotFound] No mapping found for HTTP request with URI [/ems/WEB-INF/jsps/home.jsp] in DispatcherServlet with name 'ems'

由于这个 InternalResourceViewResolver 使用 RequestDispacher,它将是另一个请求,并且该请求再次被DispatcherServlet再次处理。

我们如何解决这个问题?当我们使用<url-pattern>/*</url-pattern>. 可能是一个愚蠢的问题,但是当我使用<url-pattern>/*</url-pattern>.

4

1 回答 1

1

对 URL 映射使用“/*”意味着绝对每个发送到该应用程序的请求都必须通过DispatcherServlet,因此您需要所有这些请求的映射。

如果这不可接受,请找到一种方法来创建一个应该通过的子集,DispatcherSerlet并让其余的由 HTTP 服务器处理。

于 2012-07-18T12:00:40.150 回答