java - Servlet 映射与 mvc 资源 spring 相关的问题

标签 java spring servlets spring-mvc

我对 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/

相关文章:

java - .zip 文件上传 Spring

rest - Camel 作为 REST 服务的 HTTP 代理 - 如何路由路径和参数?

Java 字符串外部化键缺失

java - 如何扩展 Canvas 的Context2d?

java - 如何获取java变量的更新值?

java - JDesktopPane ContainerListener 和 JInternalFrame 图标化事件

mysql - 如何在mysql服务器中设置用户的远程访问?

java - Spring 异步方法不适用于 EndPoint

java - http 请求的 servlet-container 和调度程序 servlet 的顺序是什么?

java - 嵌入式 tomcat 7 servlet 3.0 注释不起作用