`
fireflyjava
  • 浏览: 187942 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在spring MVC中配置多个视图

阅读更多
如果在一个项目中有人比较喜欢用freemarker,而有人对JSTL(Jsp标准标记库)比较熟,那就得配置多种视图的方式!
1.首先在web.xml,配置多个Dispatcher,不同视图当然转发不一样!

web.xml
<servlet-name>fm</servlet-name>
	  <servlet-class>
	    org.springframework.web.servlet.DispatcherServlet
	  </servlet-class>
	  <load-on-startup>1</load-on-startup>
	</servlet>	   
	<servlet-mapping>
	  <servlet-name>jstl</servlet-name>
	  <url-pattern>/*.do</url-pattern>
	</servlet-mapping>	   
	<servlet-mapping>
	  <servlet-name>fm</servlet-name>
	  <url-pattern>/*.fm</url-pattern>
	</servlet-mapping>
	<servlet>


2.然后再配置*-servlet文件

jstl-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="simpleUrlHandlerMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello.do">showCon</prop>
           </props>
       </property>
    </bean>
  <bean name="showCon"   class="test.mvc.web.ShowController"/> 
  <bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix"><value>/WEB-INF/template/jsp/</value></property>
    <property name="suffix"><value>.jsp</value></property>
    <property name="viewClass">
      <value>org.springframework.web.servlet.view.JstlView</value>
    </property>
  </bean>  
</beans>


fm-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="simpleUrlHandlerMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/hello.fm">showCon</prop>
           </props>
       </property>
    </bean>
	<bean name="showCon"   class="test.mvc.web.ShowController"/>    
	<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
	 <property name="suffix"><value>.fm</value></property>
	  <property name="viewClass">
	   <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
	  </property>
	  <property name="contentType"><value>text/html; charset=gb2312</value></property>
	</bean>  
</beans>

两个视图都调用test.mvc.web.ShowController,所以即使全部换了视图层,也不影响到控制层的东西,这就是spring MVC强大之一!
分享到:
评论
6 楼 springdata 2014-08-07  
springmvc相关demo源代码下载地址:http://www.zuidaima.com/share/kspringmvc-p1-s1.htm
5 楼 JavaFlasher 2007-01-29  
flyspider 写道
配置多个ViewResolver就可以了,没必要配置多个DispatcherServlet,当然楼主这么做也可以,但会增加配置复杂度,实际上Spring MVC中View跟DispatherServlet之间除了viewName外,没有太大关系



不配置多个 DispatcherServlet  不就没法做到 *.jstl的去 jstl界面, *.fm的去 fm界面了么?


4 楼 zkj_beyond 2006-12-02  
可能出现的问题就不说了。可以看看spring 2.0那个国际化例子。
ResourceBundleViewResolver

这种编码方式最好不要尝试。

http://www.jactiongroup.net/reference2/html/mvc.html#mvc-viewresolver-chaining
当在一个web应用中混合使用不同的视图技术时,你可以使用ResourceBundleViewResolver:

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views"/>
    <property name="defaultParentView" value="parentView"/>
</bean>
ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。同样,[视图名].url所对应的值是该视图所对应的URL。从上面的例子里你也可以发现,你可以指定一个parent view,其它的视图都可以从parent view扩展。用这种方法,你可以声明一个默认的视图。

关于视图缓存的注意事项 --继承AbstractCachingViewResolver的解析器可以缓存它曾经解析过的视图。当使用某些视图技术时,这可以大幅度的提升性能。你也可以关掉缓存功能,只要把cache属性设成false就可以了。而且,如果你需要在系统运行时动态地更新某些视图(比如,当一个Velocity模板被修改了),你可以调用removeFromCache(String viewName, Locale loc)方法来达到目的。
3 楼 flyspider 2006-12-02  
配置多个ViewResolver就可以了,没必要配置多个DispatcherServlet,当然楼主这么做也可以,但会增加配置复杂度,实际上Spring MVC中View跟DispatherServlet之间除了viewName外,没有太大关系
2 楼 axiang_2898 2006-11-28  
如果映射的数据库表的一个字段为:private Byte startIni;

我呢在freemarker中这样写:
<td class='small' ><#if bmBase.startIni=0>完成<#else>完成</#if></td>

为什么老是报错呢?
The only legal comparisons are between two numbers, two strings, or two dates. Left hand operand is a freemarker.template.SimpleScalar Right hand operand is a freemarker.template.SimpleNumber

好像比较的是只能是二个numbers,二个String,二个two dates,那对于我的Byte怎么写呢?
1 楼 daquan198163 2006-11-04  
好,看来喜欢SpringMVC的越来越多了
过些天写个帖子总结SpringMVC对Validator和国际化的支持
或者楼主想写也行

相关推荐

    Spring MVC--5.视图和视图解析器

    在Spring MVC框架中,视图和视图解析器是实现MVC模式中“V”(View)部分的关键组件。它们负责将处理完的数据转化为用户可以理解的格式,并展示在浏览器上。视图解析器则是连接控制器与视图的桥梁,它负责根据返回的...

    Spring MVC 教程快速入门 深入分析

    十八、Spring MVC多视图控制器:解释了如何配置和使用Spring MVC的多视图控制器来处理不同的视图需求。 十九、&lt;mvc:annotation-driven/&gt;到底做了什么工作:描述了&lt;mvc:annotation-driven /&gt;标签的作用,它自动注册...

    spring MVC的HelloWorld完整实例

    在这个简单的例子中,可能只需要设置一个视图名,如"hello",然后Spring MVC会根据配置的视图解析器来查找对应的视图。 7. **视图解析**: 视图解析器(如`InternalResourceViewResolver`)根据给定的视图名找到...

    Spring MVC 4.2.3

    2. **Java配置增强**:Spring 4.2.x系列进一步提升了Java配置的支持,使得在没有XML配置的情况下也能轻松地配置Spring MVC。 3. **RESTful支持**:Spring MVC提供了对RESTful风格的HTTP方法(如GET、POST、PUT、...

    Spring配置Freemarker视图解析器,配置多个视图解析器

    本篇文章将深入探讨如何在Spring中配置Freemarker视图解析器,以及如何配置多个视图解析器以实现更灵活的应用场景。 首先,让我们了解如何配置单个Freemarker视图解析器。在Spring的配置文件(如`...

    spring mvc 4.0

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。在Spring MVC 4.0版本中,它引入了许多改进和新特性,以提升开发效率和应用程序的性能。 1. **依赖注入**:Spring ...

    spring mvc 整合包

    在这个"spring mvc 整合包"中,我们很可能会找到一系列与Spring MVC相关的库和配置文件,以便于快速搭建开发环境。 1. **MVC架构**:MVC是一种设计模式,将业务逻辑、数据和用户界面分离。在Spring MVC中,...

    Spring mvc 国际化

    1. 创建国际化资源文件:在Spring MVC项目中,创建一个或多个属性文件(通常以messages开头),这些文件包含了键值对,键是应用中需要翻译的文本的引用,而值是具体的文本内容。例如,在messages.properties中可以...

    Spring mvc整合mybatis例子

    综上所述,整合Spring MVC和MyBatis涉及了Web应用的多个层面,从配置到业务逻辑,都需要细心设计和实现。这个过程不仅要求对两个框架有深入理解,还需要熟悉Spring的IoC和AOP原理。通过这样的整合,我们可以构建出...

    Spring MVC + Mybatis+Spring实现的个人博客系统

    这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...

    spring MVC中文教程

    - **配置文件**:通常使用XML或注解来配置Spring MVC,例如设置视图解析器、定义控制器映射规则等。 - **启用Spring MVC**:可以通过在web.xml中配置DispatcherServlet来启动Spring MVC。 #### 六、Spring MVC的...

    spring-mvc-官方中文文档

    7. **ModelAndView**:这是 Spring MVC 中的一个重要类,用于存储模型数据和视图名。在控制器处理完请求后,可以通过返回一个 ModelAndView 对象来指定视图和传递模型数据。 8. **视图解析**:Spring MVC 支持多种...

    Spring MVC实例 MVC注解配置

    在这个实例中,我们将探讨如何利用MVC注解配置来简化Spring MVC应用的设置和管理。MVC模式(Model-View-Controller)是软件设计的一种经典模式,它将业务逻辑、数据和用户界面分离,使得代码更加模块化,易于维护。 ...

    Spring MVC Helloword代码

    在这个"Spring MVC HelloWord代码"示例中,我们将探讨如何创建一个基本的Spring MVC应用程序。 首先,我们需要理解Spring MVC的基本组成部分: 1. **DispatcherServlet**:这是Spring MVC的前端控制器,负责接收...

    spring MVC简单示例

    在本示例中,我们将深入探讨Spring MVC的基本概念、配置以及如何创建一个简单的应用程序。 1. **Spring MVC 概述** Spring MVC 是 Spring 框架的一部分,它简化了开发和测试Web应用程序的过程。通过分离业务逻辑、...

    spring mvc

    6. **ModelAndView**: 它是Spring MVC中用于携带模型数据和视图名的对象,可以在控制器方法中返回,以便于传递数据和指定视图。 7. **Form Handling**: Spring MVC 提供了强大的表单处理能力,包括自动数据绑定、...

    Spring mvc 教程

    - **视图链**:视图链是一种组织多个视图的方法,可以实现页面之间的跳转和重定向。 - **视图重定向**:当一个请求被处理完毕后,可能需要重定向到另一个页面。 - **内容协商解析器 ContentNegotiatingViewResolver*...

Global site tag (gtag.js) - Google Analytics