springmvc中的静态资源处理

menxin 发布于 2015/01/07 15:07
阅读 3K+
收藏 2

今天真是耽搁时间啊,刚解决问题,又冒出来一个。springmvc处理静态资源时,我准备用tomcat自带的defaultServlet处理,在项目中的web.xml中添加如下代码:

      <!-- 静态资源处理 -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/static/*</url-pattern>
    </servlet-mapping>
位置也是放在如下代码之上的:

 <!--Spring-mvc配置信息-->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:application-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
现在我有一个test.html文件放在D:\tomcat-6.0\webapps\rb-ows-wx\static\html下的,我用http://localhost:8888/rb-ows-wx/static/html/test.html 访问,但是却是404?

加载中
0
kl2422
kl2422
可能要看一下你的版本 我的版本是3.2.0.RELEASE 我的静态资源文件处理方式是直接在spring配置文件里面: <mvc:default-servlet-handler/> 或者是:<mvc:resources mapping="/js/**" location="/js/" /> 前提是你要声明 beans的xmlns里面加入 xmlns:mvc="http://www.springframework.org/schema/mvc"  xsi:schemaLocation=http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
0
menxin
menxin

引用来自“kl2422”的评论

可能要看一下你的版本 我的版本是3.2.0.RELEASE 我的静态资源文件处理方式是直接在spring配置文件里面: <mvc:default-servlet-handler/> 或者是:<mvc:resources mapping="/js/**" location="/js/" /> 前提是你要声明 beans的xmlns里面加入 xmlns:mvc="http://www.springframework.org/schema/mvc"  xsi:schemaLocation=http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
多谢回复,我主要是考虑到用springmvc的处理方法的话,静态资源可能还会走到servletdispatch中,为了防止这个,我就想用tomcat中的defaultservlet处理静态资源,但是就是获取不到!谢谢!
zhaoyou
zhaoyou
为啥要用tomcat来处理静态资源呢, tomcat前面应该还有一层吧, 通过nginx或者apache来代理不是更好吗
0
menxin
menxin

引用来自“kl2422”的评论

可能要看一下你的版本 我的版本是3.2.0.RELEASE 我的静态资源文件处理方式是直接在spring配置文件里面: <mvc:default-servlet-handler/> 或者是:<mvc:resources mapping="/js/**" location="/js/" /> 前提是你要声明 beans的xmlns里面加入 xmlns:mvc="http://www.springframework.org/schema/mvc"  xsi:schemaLocation=http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

引用来自“menxin”的评论

多谢回复,我主要是考虑到用springmvc的处理方法的话,静态资源可能还会走到servletdispatch中,为了防止这个,我就想用tomcat中的defaultservlet处理静态资源,但是就是获取不到!谢谢!
额,还有本地开发呢,生产环节可以这么做,本地就不必要在用nignx、apache这些了吧?
0
雨翔河
雨翔河
nginx可以搞定,web.xml配置也行。但是都交给tomcat处理压力很大。
0
menxin
menxin

引用来自“雨翔河”的评论

nginx可以搞定,web.xml配置也行。但是都交给tomcat处理压力很大。
生产环境是要配nignx的,开发环境准备用tomcat的defaultservlet
0
jaheme
jaheme
web。xml的url匹配不要全部就行了。加个前缀:/app/*将由mvc处理,静态资源一律同平时一样用。
0
甘薯
甘薯

是不是你没配置好default servlet 类?

在tomcat的样板web.xml里是有这个类配置的.

你自己实际使用的不知道有没有?如果没有的话是找不到的.

<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>


0
menxin
menxin

引用来自“ZeroOne”的评论

是不是你没配置好default servlet 类?

在tomcat的样板web.xml里是有这个类配置的.

你自己实际使用的不知道有没有?如果没有的话是找不到的.

<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>


defaultservlet还要自己配置么?这个是第一次配,求解答
0
甘薯
甘薯

你把我提出来的那个放到你实际的web.xml文件中, 

看看是否解决这个问题.

0
y
yusf
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
返回顶部
顶部