4

我所到之处总是弹出相同的解释。
配置视图解析器。

<bean id="viewMappings"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views" />
</bean>

然后将一个文件放在名为 view.properties 的类路径中,其中包含一些键值对(不要介意名称)。

logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp

是什么logout.class意思logout.url
如何ResourceBundleViewResolver使用文件中的键值对?
我的目标是,当有人输入 URI 时myserver/myapp/logout.htm,文件logout.jsp就会得到服务。

4

2 回答 2

5

ResourceBundleViewResolver 使用views.properties 中的key/vals 来创建视图bean(实际上是在内部应用程序上下文中创建的)。在您的示例中,视图 bean 的名称将是“logout”,它将是 JstlView 类型的 bean。JstlView 有一个名为 URL 的属性,该属性将设置为“WEB-INF/jsp/logout.jsp”。您可以以类似的方式在视图类上设置任何属性。

您似乎缺少的是您的控制器/处理程序层。如果您希望 /myapp/logout.htm 为 logout.jsp 提供服务,则必须将控制器映射到 /myapp/logout.htm 并且该控制器需要返回视图名称“logout”。然后将向 ResourceBundleViewResolver 查询该名称的 bean,并返回您的 JstlView 实例。

于 2008-09-19T20:45:16.593 回答
0

回答您的问题logout是从控制器返回的 ModelAndView 对象中获取的视图名称。如果您遇到问题,您可能需要以下附加配置。

您需要*.htm在您的 中添加一个 servlet 映射web.xml

    <网络应用>
        <小服务程序>
            <servlet-name>htm</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <加载时启动>1</加载时启动>
        </servlet>
        <servlet 映射>
            <servlet-name>htm</servlet-name>
            <url-pattern>*.htm</url-pattern>
        </servlet-mapping>
    </web-app>

如果您想直接映射到*.jsp而不创建自定义控制器,那么您需要将以下 bean 添加到您的 Spring 上下文中:

    <bean id="urlFilenameController"
        class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

于 2008-09-19T20:56:03.960 回答