- 浏览: 933113 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (251)
- WebService (17)
- IBatis (22)
- Hibernate (1)
- SpringMVC - 基础篇 (32)
- Spring (15)
- Java (11)
- JVM及调优 - 基础篇 (4)
- 集群 (14)
- 数据库 (17)
- WebSphere (5)
- 多线程 (4)
- 集合、容器 (2)
- DB Pool (1)
- Power Designer (5)
- Maven基础 (5)
- JS (14)
- WEB 前端 (5)
- 实用小工具 (17)
- 社会、人 (2)
- 乱七八糟 (18)
- ASM&CGLIB - 基础篇 (12)
- 缓存 (1)
- 性能 (1)
- 设计之殇 (1)
- 分布式事务 (1)
- 单点登录 (11)
- 分布式 Session (4)
- Memcached - 基础篇 (6)
最新评论
-
一笑_奈何:
楼主写的还真行不错。
扫盲贴 - J2EE集群之JNDI集群实现 -
xuezhongyu01:
博主写的很详细,但最后还是没明白,最后调用BasicDataS ...
Spring中的destroy-method方法 -
Mr梁:
commons-fileupload.jar commons- ...
SpringMVC 中文件上传 MultipartResolver -
Eywa:
总结的很不错
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法 -
TryRelax:
fastjson 比 jackson 好用吧?
Spring MVC Jackson DateFormat
用多个解析器解析视图
如果在web应用程序中有许多视图,只选择一种视图解析策略通常是不够的。InternalResourceViewResolver通常可以解析大多数的内部JSP视图,但是还有其他的视图类型必须通过ResourceBundleViewResolver进行解析。在这种情况下,就必须结合两种策略来进行视图解析。
<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 初始化bean,指定初始页面和成功后的页面 -->
<bean id="registrationController"
class="com.wy.controller.RegistrationController">
<property name="commandClass" value="com.wy.pojo.User"/>
<property name="formView" value="login" />
<property name="successView" value="viewSuccessRedirect" />
</bean>
<!-- 映射处理器 -->
<bean id="simpleUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/register.do">registrationController</prop>
</props>
</property>
</bean>
<!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
<property name="order" value="1" />
</bean>
<bean id="resourceBundleViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views" />
<property name="defaultParentView" value="views" />
<property name="order" value="0" />
</bean>
<bean name="/parameterizableViewController.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="viewSuccessRedirect" />
</bean>
</beans>
当同时选择不止一种策略时,重要的是要指定解析优先级。为此,可以设置视图解析器Bean的order属性。order值越小,表示优先级越高。请注意,应该给InternalResourceViewResolver分配最低的优先级别,因为无论它是否存在,始终都会用它来解析视图。因此,如果其他解析器的优先级别比较低,就没有机会解析视图了。
现在views.properties应该只包含不能通过InternalResourceViewResolver解析的视图(如:重定向视图)。
#重定向视图,解决SimpleFormController提交表单后,重复提交表单
viewSuccessRedirect.(class) = org.springframework.web.servlet.view.RedirectView
viewSuccessRedirect.url = index.jsp
Spring MVC之将异常映射到视图
当出现未知的异常时, 应用服务器通常会将这个可恶的异常栈显示给用户。用户与这个栈轨迹毫无干系,他会抱怨你的应用程序对用户不友好。此外,这么做琮有潜在的安全风险,因为可能将内部的方法调用层次结构公开给用户。
在Spring MVC应用程序中,可以在web应用程序上下文中注册一个或者多个解析器Bean,来解析未被捕捉的异常。这些Bean必须实现HandlerExceptionResolver接口,这样DispatcherServlet才能自动侦测它们。Spring MVC提供了一个简单的异常解析器,让你可以将每种异常分类映射到视图上。
为了解析未被捕捉的异常,可以通过实现HandlerExceptionResolver接口,来编写定制的异常解析器。通常情况下,你会想要将不同的异常分类映射到不同的错误页面。Spring MVC提供了异常解析器SimpleMappingExceptionResolver,可以在web应用程序上下文中配置异常映射。例如,可以在court-servlet.xml(前面blog中的例子)中注册下面的异常解析器。
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.apress.springrecipes.court.service.
ReservationNotAvailableException">
reservationNotAvailable
</prop>
<prop key="java.lang.Exception">error</prop>
</props>
</property>
</bean>
在这个异常解析器中,为ReservationNotAvailableException定义了逻辑视图名称 reservationNotAvailable。如果Web应用程序上下文中配置了InternalResourceViewResolver,一旦无法提供预订,就会出现reservationNotAvailable.jsp页面。
为任何未知的异常定义默认的错误页面,这是一种好的做法。你应该将这个页面映射到java.lang.Exception键,作为映射的最后一项,如果之前的项都不匹配,就会显示这个页面。
视图解析器策略和视图解析器
<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd
<mvc:resources mapping="/img/**" location="/img/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
-->
<!-- 定义bean -->
<bean id="abstractController" class="com.wy.controller.SimpleAbstractController" />
<bean name="abstrController" class="com.wy.controller.SimpleAbstractController" />
<bean name="/beanNameAbstractController.do" class="com.wy.controller.SimpleAbstractController" /><!--BeanNameViewResolver;是name而不是id -->
<bean name="/beanNameImplementsController.do" class="com.wy.controller.SimpleImplementsController" />
<!-- 映射处理器 -->
<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="abstr.do">abstractController</prop>
<prop key="abstrBeanName.do">abstrController</prop>
<prop key="bnac.do">/beanNameAbstractController.do</prop>
<prop key="bnic.do">/beanNameImplementsController.do</prop>
</props>
</property>
</bean>
<!-- 视图解析器策略 -->
<!-- 视图解析器
<bean id="urlBasedViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
-->
<!-- InternalPathMethodNameResolver 默认MethodNameResolver解析器,从请求路径中获取文件名作为方法名
<bean id="viewResolver"
class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
-->
<!-- InternalPathMethodNameResolver 默认MethodNameResolver解析器,从请求路径中获取文件名作为方法名
<bean id="viewResolver"
class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
-->
<bean id="beanNameViewResover" class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<!-- 当ModelAndView返回的view名称为"hello"时,会去寻找"id"属性为hello的ViewBean -->
<bean id="hello" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/page/hello.jsp"/>
</bean>
<bean id="list" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/page/list.jsp"/>
</bean>
<bean name="/parameterizableViewController.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="viewSuccessRedirect" />
</bean>
<!--
ResourceBundleViewResolver通过basename所指定的ResourceBundle解析视图名。
对每个待解析的视图,ResourceBundle里的[视图名].class所对应的值就是实现该视图的类。
同样,[视图名].url所对应的值是该视图所对应的URL。
可以指定一个parent view,其它的视图都可以从parent view扩展。
用这种方法,可以声明一个默认的视图。
-->
<bean id="resourceBundleViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views" /><!-- views是classPath下的views.properties -->
<property name="defaultParentView" value="views" />
<property name="order" value="0" />
</bean>
</beans>
发表评论
-
SpringMVC中内容协商【统一资源多种展现json xml html】
2013-09-12 15:58 3426在我们实际的开发中,往往需要SpringMVC ... -
Spring为某个属性注入值或为某个方法的返回值
2013-08-26 16:02 1490项目中用到需要初始化一些数据,Spring提供了filed的 ... -
SpringMVC 基础知识点小结
2013-08-23 15:26 2269参照:http://zachary-g ... -
使用SpringMVC Restful 开发思考
2013-03-18 14:23 1280一、rest思想 此部分 ... -
Spring MVC Jackson DateFormat
2012-10-14 15:59 2233使用Spring MVC 里的Jackson返回JSON时,遇 ... -
SpringMVC 中文件上传 MultipartResolver
2011-12-17 17:44 55172基于前面文章的基础上。 一、准备 需要的jar ... -
SpringMVC 异常处理初探
2011-12-12 12:18 8240Web应用中对于异常的处理方式与其他形式的应用并没有太大的不同 ... -
SpringMVC 使用JSR-303进行校验 @Valid
2011-12-11 18:04 31563一、准备校验时使用的JAR 说明: ... -
SringMVC 注解标记备忘录
2011-12-10 22:42 2136Spring MVC注解开发中常用标签,如下表: ... -
SpringMVC拦截器简单使用
2011-12-10 22:17 93574基于上一篇文章的基础上 一、拦截器的配置 1、 ... -
SpringMVC生成JSON(三)
2011-12-10 01:16 20641基于上一篇文章的代码基础上 一、准备工作 1、 下载依赖库 ... -
SpringMVC生成JSON(二)
2011-12-06 21:24 8279基于上一篇文章的代码基础上 开始Jackson之旅。 一、准 ... -
SpringMVC 生成JSON(一)
2011-12-04 19:37 3314本示例基于前面几篇文章的代码。 一、JSON-lib框 ... -
Spring MVC处理重定向的传参
2011-12-03 21:35 6543一、Spring MVC是如何处理重定向的传参? 现提供一种 ... -
Spring MVC3.0的RESTFul方式的访问
2011-12-03 20:59 1635上一篇以简单介绍了 ... -
SpringMVC之用注解控制器
2011-12-03 19:53 2530在传统的Spring MVC开发方法中,必须在Bean配置 ... -
SpringMVC例子代码小汇总
2011-11-20 11:18 1907一、结构 二、Jar版本及使用jar包 ... -
SpringMVC 拦截器实现分析
2011-11-20 00:10 5394一、Servlet Filter与Spring interce ... -
SpringMVC学习笔记(三) --- 映射处理器(续)
2011-10-07 21:46 1673<?xml version="1.0" ... -
SpringMVC学习笔记(二) --- 后端控制器之MultiActionController(一)
2011-10-07 21:07 2047创建处理多个请求的控制器 根据"每个请求一个 ...
相关推荐
在Spring MVC框架中,视图和视图解析器是实现MVC模式中“V”(View)部分的关键组件。它们负责将处理完的数据转化为用户可以理解的格式,并展示在浏览器上。视图解析器则是连接控制器与视图的桥梁,它负责根据返回的...
SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...
在"springmvc学习笔记--springmvc注解开发.zip"这个压缩包中,我们可以深入探讨Spring MVC的注解驱动开发方式,这是一种简洁且高效的开发模式。 1. **Spring MVC基础**: Spring MVC的核心组件包括...
基于SpringMVC Mybatis Shiro Redis 的权限管理系统,该系统已经部署到线上,线上访问地址:http://shiro.itboy.net,登录账号:admin 密码:sojson,,详细教程参考sojson.com/shiro
SpringMVC的配置文件中,可以定义自动扫描的包,以便发现和管理控制器类,同时配置视图解析器,如Bean和视图的映射。POJO(Plain Old Java Object)是SpringMVC中用于接收和处理请求的数据对象。 SpringMVC的注解...
《SpringMVC-Activiti5.16-Shiro-EasyUI项目整合详解》 在现代企业级应用开发中,高效、安全、易用是至关重要的考量因素。SpringMVC、Activiti、Shiro和EasyUI这四个技术组件的整合,正是为了实现这样的目标。这篇...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
- 配置 SpringMVC 的 DispatcherServlet,设置拦截器、视图解析器等。 - 配置 MyBatis 的数据源、SqlSessionFactoryBean、MapperScannerConfigurer。 - 编写 Mapper 接口和对应的 XML 映射文件。 - 创建 ...
《SpringMVC-Mybatis-Shiro-Redis:构建安全高效的Web应用》 在现代Web开发中,构建一个高效且安全的后端系统是至关重要的。本文将深入探讨一个基于SpringMVC、Mybatis、Shiro和Redis的Web应用架构,这四个组件共同...
这个压缩包文件“SpringMVC-Activiti5.16-Shiro-EasyUI.zip”显然包含了使用这些技术构建的一个完整或部分的应用系统。让我们详细探讨一下每个组件及其在实际开发中的应用。 **1. SpringMVC** SpringMVC是Spring...
【标题】"SpringMVC-Mybatis-Shiro-redis-master" 涉及的是一个集成框架项目,这个项目集成了四个关键的技术组件:SpringMVC、MyBatis、Shiro和Redis。这些技术在现代Java Web开发中扮演着重要角色。 **SpringMVC**...
本学习笔记将涵盖前端控制器、文件上传、异常处理以及开发过程中的心得小结。 1. **前端控制器(DispatcherServlet)** 前端控制器是SpringMVC的核心组件,负责接收所有HTTP请求,然后根据请求的类型和映射规则...
在Spring MVC框架中,视图和视图解析器是核心组件,它们负责处理控制器返回的数据并将其呈现给用户。本文将深入探讨视图与视图解析器的工作原理、常用实现及自定义视图的实现方法,同时也会讲解重定向操作。 1. **...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合
自己做的Spring+Mybatis+SpringMVC笔记------------------------------------------------------------------------------------------------------------------------ QQ:1017834057
此外,还可能涉及到SpringMVC的拦截器、视图解析器、异常处理等高级特性。 在实际开发中,SpringMVC和Mybatis的组合能够提供高效的Web服务和灵活的数据访问。例如,SpringMVC可以与RESTful API设计相结合,实现前后...