我对 mvc:resources
有疑问
我的main-servlet.xml
**
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="50000000" />
</bean>
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/css/**" location="/css/" />
**
当我评论 mvc:resources
行时,一切(其他)都开始神奇地工作。但是当我取消注释这些行时,只有资源有效。编译时,日志显示仅映射了 css/** 和 images/** ,没有其他映射。
Web.xml 文件:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/css/**</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/images/**</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我尝试放置 2 个调度程序 servlet,但这也不起作用。另一个 servlet 被读取并被映射,但请求默认到主 servlet。
从 web.xml 注释/css/** 和/images/** 后的编译日志:
**
org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/images/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
Nov 26, 2013 11:40:40 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/css/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#1'
Nov 26, 2013 11:40:40 AM org.springframework.web.servlet.FrameworkServlet initServletBean
INFO: FrameworkServlet 'resources': initialization completed in 220 ms
Nov 26, 2013 11:40:40 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'main'
Nov 26, 2013 11:40:40 AM org.springframework.web.servlet.FrameworkServlet initServletBean
**
INFO: FrameworkServlet 'main': initialization completed in 234 ms
Nov 26, 2013 11:40:40 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Nov 26, 2013 11:40:40 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Nov 26, 2013 11:40:53 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/KT/] in DispatcherServlet with name 'main'
最佳答案
请注意,您的任何 Controller 都不会在您当前的设置中注册。您需要添加
<mvc:annotation-driven />
到您的上下文,以便 Spring 使用 DispatcherServlet
注册它们。
您的main
DispatcherServlet
也应该简单地映射到
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
其他都是多余的。
关于java - Servlet 映射与 mvc 资源 spring 相关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20222783/