我已将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>
因此,根据网址,它会为每个请求提供服务。但是,当我像这样映射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>
并且当控制器返回&#34; home&#34;作为视图名称。然后我得到了
[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>
时,我总是对定义我的项目结构感到困惑。
答案 0 :(得分:1)
使用“/ *”表示URL映射意味着绝对每个发送到该应用程序的请求都必须通过DispatcherServlet
,因此您需要为所有这些请求进行映射。
如果这是不可接受的,找到一种方法来创建一个应该通过DispatcherSerlet
的子集,让其余部分由HTTP服务器处理。