`
fireflyjava
  • 浏览: 184489 次
  • 性别: 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入门教程

    个人认为相当适合入门和知识巩固!! 一、前言 ...十八、spring mvc 多视图控制器 十九、 &lt;mvc:annotation-driven /&gt; 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址

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

    Spring MVC 教程 快速入门 深入分析 目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 ...十八、spring mvc 多视图控制器 十九、 &lt;mvc:annotation-driven /&gt; 到底做了什么工作

    Spring MVC 入门实例

    你可以在 list 标签中配置多个 value 标签. database.xml: 1 2 &lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt; 3 4 5 6 &lt;!-- Remove ...

    SpringMVC框架架构介绍

    一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心...十八、spring mvc 多视图控制器 十九、 &lt;mvc:annotation-driven /&gt; 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址

    深入解析Spring+MVC与Web+Flow.pdf

    《深入解析Spring MVCgn Web Flow》是Spring MVC 和Web Flow 两个框架的权威指南,书中包括的技巧和提示可以让你从这个灵活的框架中汲取尽可能多的信息。书中包含了一些开发良好设计和解耦的Web 应用程序的最佳实践...

    Spring+MVC+Mybatis 书城项目

    Spring MVC: Spring MVC是Spring框架的一个模块,它实现了MVC(模型-视图-控制器)设计模式,用于构建Web应用。Spring MVC允许你将应用的逻辑、数据和用户界面分离,使得代码更加清晰和易于维护。 MyBatis: MyBatis...

    spring mvc 思维导图

    Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。...

    Spring MVC 员工管理系统

    Spring提供了丰富的处理器类型,在真正处理业务逻辑前,有些处理器会事先执行两项预处理工作: 1)将HttpServletRequest请求参数绑定到一个POJO对象中; 2)对绑定了请求参数的POJO对象进行数据合法性校验; ④ ...

    Java之Spring Boot详解

    简单的来说 Spring Boot 这个项目整合目前很多的流行的第三方框架,并且做了一系列的默认配置,我们无需在进行手动配置,直接拿过来直接使用! 接下来我们比较一下Spring mvc和 Spring Boot的开发过程 Spring mvc (1)...

    SpringMVC入门教程

    SpringMVC: 一、前言 二、spring mvc 核心类与接口 ...十八、 spring mvc 多视图控制器 十九、 &lt;mvc:annotation-driven /&gt; 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    Spring MVC 学习笔记

    2、 DispatcherServlet把请求转交给HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象、多个HandlerInterceptor拦截器)对象.(后面会学习到拦截器) 3、 ...

    基于经典技术组合Spring MVC、Apache Shiro、MyBatis、Bootstrap UI的java快速开发框架

    JeeSite是在Spring Framework基础上搭建的一个Java基础开发平台,以Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流引擎。是JavaEE界的...

    spring4.3.2参考文档(英文)

    核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂...通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

    Spring中文帮助文档

    13.5.3. 重定向(Rediret)到另一个视图 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2. CookieLocaleResolver 13.6.3. SessionLocaleResolver 13.6.4. LocaleChangeInterceptor 13.7. 使用...

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.5.3. 重定向(Rediret)到另一个视图 13.5.3.1. RedirectView 13.5.3.2. redirect:前缀 13.5.3.3. forward:前缀 13.6. 本地化解析器 13.6.1. AcceptHeaderLocaleResolver 13.6.2. CookieLocaleResolver 13.6.3. ...

    销售订单系统(spring Web MVC + JPA + Hibernate + JSP + JSTL)

    该应用程序只是一个由多个层构建的简单的单体应用程序。总之,后端是用 Java 编写的,它连接到后端内存中关系数据库 (HSQL)。也可以连接到其他关系数据库(MySQL)。应用程序由 Sp​​ring 框架搭建。模型-视图-控制...

    spring Boot 2 精髓

    本书系统介绍了Spring Boot 2的主要技术,侧重于两个方面,一方面是极速开发一个Web应用系统,详细介绍Spring Boot框架、Spring MVC、视图技术、数据库访问技术,并且介绍多环境部署、自动装配、单元测试等高级特性...

    Spring技术内幕:深入解析Spring架构与设计原理

     我们耳熟能详的mvc模式在spring中是如何实现的?  spring mvc如何灵活地集成各种丰富的视图展现方案?  spring实现远端调用的方案有很多种,你知道它们之间的优劣差异吗?  spring acegi安全框架在用户验证...

    ssh springMvc,jquest easyUI多视图、多数据源开发框架源码

    sprinvMVC 多视图支持,velcotity,freemark,jsp,html 都同时可以支持,并且还支持多数据源。十余你开发经验的技术总监历时3个月完成

Global site tag (gtag.js) - Google Analytics