如何在web.xml中正确映射Spring应用程序的内容?

时间:2012-07-27 04:19:04

标签: java spring web.xml

我的web.xml包含

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>
      resources/index.html
    </welcome-file>
  </welcome-file-list>
</web-app>

资源/ index.html引用存储在 中的其他静态资源(如图像,js,css等)通过相对路径存储 目录。

当我在浏览器中放置http://localhost/MyProject/时,它显示了index.html但没有得到css和javascripts。

但是,如果我将http://localhost/MyProject/resources/index.html放在浏览器中,则所有内容都会正确显示。

所以,问题是如何将欢迎页面作为<welcome-file>中给出的路径在网址中提供,例如: /resources/index.html。

如果无法在<welcome-file list>中完成,我应该使用哪种其他可配置方法。

我倾向于不通过添加另一个html或通过在Servlet控制器中以编程方式执行来重定向到/resources/index.html。

1 个答案:

答案 0 :(得分:1)

您似乎正在使用Spring并且遇到静态内容问题。

尝试查看此link

它解释了如何在这种情况下继续......

注意线:

<mvc:resources mapping="/resources/**" location="/resources/" />

它将您的资源文件夹(包含css,javascript和图像文件)映射到Spring的特殊处理程序。

更新

在servlet-context.xml文件中,您可以添加此行

<!-- Forwards requests to the "/" resource to the "welcome" view -->
    <mvc:view-controller path="/" view-name="index"/>

<!-- Resolves view names to protected .html resources within the /WEB-INF/resources/ directory -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/resources/"/>
        <property name="suffix" value=".html"/>
    </bean>

表示您不必正确使用'index.jsp'。这样,您将视图映射到“/”访问。总而言之,用户输入“http://localhost/MyProject/”并查看index.html并查看css和javascripts的效果。

PS。: - 此配置仅适用于Spring 3+       - 首选将文件命名为“.jsp”而不是“.html”......映射更简单。