0

我配置 spring 并将其映射到 *.htm,但它也适用于真正的 .htm 文件。所以我无法在我的 Web 应用程序中访问真正的静态 *.htm。我应该配置什么来解决这个问题?谢谢!

<servlet-mapping>
  <servlet-name>systemdispatcher</servlet-name>
  <url-pattern>*.htm</url-pattern>
</servlet-mapping> 

如果我尝试访问 index.htm 之类的静态 htm 文件,它将显示 404 错误。如何配置弹簧来解决问题?谢谢!

4

4 回答 4

3

你不能直接解决它,因为你有冲突的映射。但是您可以让 spring 读取 html 文件并将其输出给用户。

但是,一个建议是.html用于静态文件,因此不会有任何冲突。

除此之外,您还需要放置资源处理程序,以便从调度程序 servlet 中跳过静态内容。

<mvc:resources location="/resources/" mapping="/resources/**" />
于 2012-05-15T06:04:54.093 回答
2

我同意@Bozho 给出的解决方案。

但是还有另一种方法可以做到这一点。您可以指定可以从应用程序的特定路径提供静态内容的 ResourceHandler,而无需将请求传输到调度程序 servlet。

尝试在您的 servlet xml 文件中进行以下配置。

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

在这里,您可以替换静态 .htm 文件所在的路径。

希望这对您有所帮助。干杯。

于 2012-05-15T06:25:30.423 回答
0

你有没有像这样在你的 spring 配置文件中设置视图解析器?

<!-- View Resolver -->
<bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix">
        <value>/WEB-INF/pages/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

在上面的示例中,将 .jsp 更改为 .htm。之后,您可以在 web.xml 中使用您已经使用的任何 url 映射。

<servlet-mapping>
  <servlet-name>systemdispatcher</servlet-name>
  <url-pattern>*.htm</url-pattern>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>

它会起作用,因为您只会在控制器中给出视图名称,其余的由 Spring mvc 完成。

于 2012-05-15T06:23:23.203 回答
0

您可以在 xml 文件中尝试以下架构定义。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

可能存在您的 spring 版本冲突然后用您的版本替换版本的情况。

于 2012-05-15T07:12:31.133 回答