到处都是我看起来总是一样的解释弹出窗口 配置视图解析器。
<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
就会被提供。
答案 0 :(得分:5)
ResourceBundleViewResolver使用views.properties中的键/ val来创建视图bean(实际上是在内部应用程序上下文中创建的)。示例中视图bean的名称将为“logout”,它将是JstlView类型的bean。 JstlView有一个名为URL的属性,它将被设置为“WEB-INF / jsp / logout.jsp”。您可以以类似的方式在视图类上设置任何属性。
您似乎缺少的是您的控制器/处理程序层。如果希望/myapp/logout.htm为logout.jsp提供服务,则必须将Controller映射到/myapp/logout.htm,并且Controller需要返回视图名称“logout”。然后将为该名称的bean查询ResourceBundleViewResolver,并返回您的JstlView实例。
答案 1 :(得分:0)
回答您的问题logout
是从控制器返回的ModelAndView对象获取的视图名称。如果您遇到问题,许多人需要以下额外配置。
您需要在*.htm
中添加web.xml
的servlet映射:
<web-app> <servlet> <servlet-name>htm</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <oad-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <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" />