Servlet映射问题与mvc资源spring

时间:2013-11-26 16:37:54

标签: 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行时,一切(其他)开始神奇地工作。但是,当我取消注释行时,只有资源可用。在编译时,log表示仅映射了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。

编辑日志AFTER评论后/ 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'

2 个答案:

答案 0 :(得分:3)

请注意,您的当前设置都不会注册任何控制器。你需要添加

<mvc:annotation-driven />

到您的上下文,以便Spring使用DispatcherServlet注册它们。

您的main DispatcherServlet也应该简单地映射到

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

其他的都是多余的。

答案 1 :(得分:0)

这个问题已经得到解答,但在解决问题时遇到了一系列问题,所以我想留下一些解决方案,以防万一有人遇到类似的问题:

第1期和首期:mvc:资源行为不端(有问题的详情) 解决方案:完全按照建议的答案解决。 (

第2期(参见第1个堆栈跟踪):当您没有结束标记时发生) 解决方案:在结尾处添加“/”或在之后添加(也接受的答案是正确的)

第3期(第2次(最后一次)堆栈跟踪):当您没有以下依赖项时发生:

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.3.1.Final</version>
        </dependency>

另外。如果你正在使用Tika&amp; Solrj togather,选择更高版本的sl4j-api。选择较低版本会导致一大堆其他问题(抱歉没有堆栈跟踪)。

我的版本:Solr 3.6.2,Solrj 4.4.0,Tika 1.4。