1.Spring配置的XML
<?xml version="1.0" encoding="UTF-8"?>
<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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd ">
<context:component-scan
base-package="com.spring.action"/>
<!--
org.springframework.web.servlet.view.ResourceBundleViewResolver
用于多个视图集成时,ResourceBundleViewResolver是通过解析资源文件来解析请求输出文件的。
<property name="basename" value="views"></property>,即表示在/WEB-INF/classes路径下有一个
views.properties文件,本例中views.properties的内容为
welcome.(class)=org.springframework.web.servlet.view.velocity.VelocityView
welcome.url=welcome.vm
freemarker.(class)=org.springframework.web.servlet.view.freemarker.FreeMarkerView
freemarker.url=freemarker.ftl
-->
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views">
</property>
<!--
<property name="order" value="0"></property>
-->
</bean>
<!-- FreeMarker环境配置 -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- freemarker模板位置 -->
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>
<!-- velocity环境配置 -->
<bean id="velocityConfig"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<!-- velocity配置文件路径 -->
<property name="configLocation" value="/WEB-INF/velocity.properties"/>
<!-- velocity模板路径 -->
<property name="resourceLoaderPath" value="/WEB-INF/velocity/"/>
</bean>
<bean id="viewResolver"
class="com.spring.action.MultiViewResover">
<property name="resolvers">
<map>
<entry key="jsp">
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</entry>
<entry key="ftl">
<bean
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".ftl"/>
</bean>
</entry>
<entry key="vm">
<bean
class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="cache" value="true"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".vm"/>
</bean>
</entry>
</map>
</property>
</bean>
</beans>
2 解析多视图请求的类
package com.spring.action;
import java.util.Locale;
import java.util.Map;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
/**
* @author Jeson
* @blog:http://www.gbsou.com
* @date:Oct 20, 2009 8:39:27 AM
* @version :1.0
*
*/
public class MultiViewResover implements ViewResolver {
private Map<String, ViewResolver> resolvers;
@Override
public View resolveViewName(String viewName, Locale locale)
throws Exception {
int n = viewName.lastIndexOf("_"); // 获取
// viewName(modelAndView中的名字)看其有没有下划线
if (n == (-1))
return null; // 没有则直接返回空
// 有的话截取下划线后面的字符串 这里一般是jsp,ftl,vm与配置文件中的<entry key="ftl">的key匹配
String suffix = viewName.substring(n + 1);
// 根据下划线后面的字符串去获取托管的视图解析类对象
ViewResolver resolver = resolvers.get(suffix);
// 取下划线前面的部分 那时真正的资源名.比如我们要使用hello.jsp 那viewName就应该是hello_jsp
viewName = viewName.substring(0, n);
if (resolver != null)
return resolver.resolveViewName(viewName, locale);
return null;
}
public Map<String, ViewResolver> getResolvers() {
return resolvers;
}
public void setResolvers(Map<String, ViewResolver> resolvers) {
this.resolvers = resolvers;
}
}
3. action
package com.spring.action;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloWorldAction {
@RequestMapping(value = "/helloworld.do")
public ModelAndView hello() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("hello_jsp");
modelAndView.addObject("message", "Hello,SpringMvc");
return modelAndView;
}
@RequestMapping(value = "/welcome.do")
public ModelAndView helloVm() {
// ModelAndView modelAndView=new ModelAndView();
// modelAndView.setViewName("freemarker_ftl");
// modelAndView.addObject("message", "Hello,Velocity");
// return modelAndView;
Map map = new HashMap();
return new ModelAndView("freemarker_ftl", map); // 根据之前的解释这里就是去寻找
// user.ftl资源
}
@RequestMapping(value = "/free.do")
public ModelAndView helloFreeMarker() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("welcome");
modelAndView.addObject("message", "Hello,Freemarker");
return modelAndView;
}
}
这样 在页面键入对应action就可以访问对应的视图实现了
分享到:
相关推荐
个人认为相当适合入门和知识巩固!! 一、前言 ...十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址
Spring MVC 教程 快速入门 深入分析 目录 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 ...十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作
一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心...十八、spring mvc 多视图控制器 十九、 <mvc:annotation-driven /> 到底做了什么工作 二十、 本文中springMVC.xml配置文件是核心,这里给一个下载地址
第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...
首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring ...
最近学习了一下mybatis结合网上的一些列子搭建的一个网站的框架,前端显示用的velocity引擎,数据访问使用mybatis+oracle,视图访问控制spring mvc,框架主要包括一些基本的增删改操作以及拦截器,项目介绍地址:...
Spring mvc依赖包 Spring mvc都做了些什么 Controller为中心完成对系统流程的控制管理 从请求中搜集数据 对传入的参数进行验证 将结果返回给视图 针对不同的视图提供不同的解决方案 针对jsp视图技术提供标签库 拦截...
Spring MVC--5.视图和视图解析器
通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring ...
这个jar文件包含Spring MVC框架相关的所有类。 包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。 当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的...
详细的Spring MVC教程,内容包括控制器 重定向 保存并获取属性参数 拦截器 表单标签和验证表单 视图和视图解析器 上传文件 数据转换和格式化
Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。 此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。 这意味着,你甚至可以...
Spring MVC如何解析视图 视图解析器类型 基于协商的视图解析器 目录 本地化:基础原理 本地化:Spring MVC的本地化解析器 本地化:Spring MVC的本地化解析器 LocaleChangeInterceptor:通过URL参数指定 静态资源处理 ...
SingleJDBCBase 是基于Spring Framework基础上搭建的一个Java基础开发套件,以Spring MVC为模型视图控制器,JDBC为数据访问层。 * 核心框架:Spring Framework 4.2.7 * 安全框架: * 视图框架:Spring MVC 4.2.7 * ...
Spring Mvc实例 主要实现利用spring注解,完成前后台交互,简单的视图控制和数据操作。
《深入解析Spring MVCgn Web Flow》是Spring MVC 和Web Flow 两个框架的权威指南,书中包括的技巧和提示可以让你从这个灵活的框架中汲取尽可能多的信息。书中包含了一些开发良好设计和解耦的Web 应用程序的最佳实践...
Spring MVC的一个关键特性是它的灵活性,支持多种类型的控制器和视图技术。它还提供了强大的注解支持,使得开发更加简洁和直观。例如,通过使用@Controller和@RequestMapping注解,开发者可以轻松定义控制器和请求...
奉上学习Spring MVC 3.0的技术资料PPT资料,我花了两天写成,该资料根据最新拙作的《Spring 3.x 企业应用开发实战 》写成,仅需要1个小时左右的时间,就可以让你学习到Spring MVC 3.0的所有知识点和新功能,强烈推荐...
Spring Web model-view-controller (MVC)框架是围绕 DispatcherServlet 设计的,并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置...