<文摘>

基于模板的Web表示层技术

模板技术相对传统JSP技术有以下三个主要优势:
1. 在技术层面,将表现逻辑与业务逻辑相分离。
2. 为人员之间的分工提供了一个良好的分界点。页面美工只需专著关心模板的设计,而程
序员则专注于业务逻辑的实现。二者重合点明显减少。
3. 如果需要,模板引擎可脱离Web 容器单独运行,这为系统可能的移植需求提供了更多
的弹性空间(这一特性在应用中也许并不会有太大的实际意义,只是提供了一种附加选
择)。

目前Spring支持一下几种模板技术:

1. XSLT
XSLT是基于XML的表现层模板技术,伴随着XML的大量使用。XSLT也日渐成熟,并
迅速成为主流表现层技术之一。XSLT技术提供了极佳的扩展性和重用性,
也保证了业务逻辑和表示逻辑的清晰划分,然而,最大的问题是,XSLT缺乏强有力的编辑
器支持。(XSLT 中,每个节点都是一个Java 对象,大量
对象的存储对内存占用极大,同时大量对象的频繁创建和销毁也对JVM 垃圾收集产生了较
大负面影响)。

2. Velocity
Velocity是Apache Jakarta项目中的一个子项目,它提供了丰富强大的模板功能。
作为目前最为成熟的模板支持实现,Velocity 在诸多项目中得到了广泛应用,不仅
限于Web 开发,在众多代码生成系统中,我们也可以看到Velocity 的身影(如
Hibernate中的代码生成工具)。

3. FreeMarker
FreeMarker是Velocity之外的另一个模板组件。

与Velocity 相比,FreeMarker 对表现逻辑和业务逻辑的划分更为严格,
Freemarker在模板中不允许对Servlet API进行直接操作(而Velocity可以),
如FreeMarker 中禁止对HttpServletRequest 对象直接访问(但可以访问
HttpServletRequest对象中的Attribute)。通过更加严格的隔离机制,牵涉逻
辑处理的操作被强制转移到逻辑层。从而完全保证了层次之间的清晰性。

另外一个Velocity无法实现的特性,也是最具备实际意义的特性:FreeMarker对
JSP Tag提供了良好支持。

这里推荐采用FreeMarker作为Spring MVC中的表现层实现。

输入验证与数据绑定
Spring Framework提供了强大的输入验证和数据绑定功能。结合输入验证器和
<spring:bind>tag,传统繁杂混乱的输入校验功能将变得更加清晰简单。

Spring MVC中的异常处理:   /p63
以前面的注册系统为例,首先,在Dispatcher配置文件Config.xml中增加id为
“exceptionResolver”的bean定义

通过SimpleMappingExceptionResolver我们可以将不同的异常映射到不同的jsp页
面(通过exceptionMappings属性的配置),同时我们也可以为所有的异常指定一个默认的异
常提示页面(通过defaultErrorView属性的配置),如果所抛出的异常在exceptionMappings
中没有对应的映射,则Spring将用此默认配置显示异常信息(注意这里配置的异常显示界面均
仅包括主文件名,至于文件路径和后缀已经在viewResolver中指定)。

国际化支持

Spring中目前提供了以下几种语言自动切换机制的实现(均实现了LocaleResolver接口):
Ø AcceptHeaderLocaleResolver
根据浏览器Http Header中的accept-language域判定(accept-language域中
一般包含了当前操作系统的语言设定,可通过HttpServletRequest.getLocale方法
获得此域的内容)。
Ø SessionLocaleResolver
2Windows可以通过控制面板中的“区域和语言选项”快速切换系统Locale设定,Linux可通
过export LANG=zh_CN; LC_ALL=zh_CN.GBK 命令修改当前Locale。
SpringFrameWork Developer’s Guide Version 0.6
October 8, 2004 So many open source projects. Why not Open your Documents?
根据用户本次会话过程中的语言设定决定语言种类(如:用户登录时选择语言种
类,则此次登录周期内统一使用此语言设定)。
Ø CookieLocaleResolver
根据Cookie判定用户的语言设定(Cookie中保存着用户前一次的语言设定参
数)。

Spring学习的书-夏昕(2)相关推荐

  1. Spring学习总结二

    Spring框架的代理与AOP.AspectJ Spring学习总结二 0.在理解什么是AOP之前的一些话 1.什么是AOP 2.AOP的重要概念 3.代理模式 3.1.静态代理 3.2.动态代理 3 ...

  2. Spring学习笔记1

    前言 Spring框架的学习路线: Spring第一天:Spring的IOC容器之XML的方式,Spring框架与Web项目整合 Spring第二天:Spring的IOC容器之注解的方式,Spring ...

  3. Android学习第一书

    大家好,我是一名Facebook的工程师,同时也是<第一行代码--Android>的忠实读者. 虽然我最近几年是在国外读书和工作的,但是和很多人一样,我也非常喜欢郭霖的博客以及他写的< ...

  4. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  5. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  6. 爆火的深度学习面试书现可白嫖!GitHub上线2周1.5K Star,之前售价146元

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 面试宝典千千万,但这一份,应当是深度学习领域里不容错过的那一个了. 这不,才在arXiv"上架"12天,GitHub就狂 ...

  7. 基于TensorFlow 2.0的中文深度学习开源书来了!GitHub趋势日榜第一,斩获2K+星

    十三 发自 凹非寺  量子位 报道 | 公众号 QbitAI TensorFlow 2.0 发布已有一个半月之久,你会用了吗? 近日,一个叫做深度学习开源书的项目在火了.GitHub趋势日榜排名全球第 ...

  8. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)

    自学python的学习路线是什么?推荐一些python学习资源 第一段 初级,掌握Python的语法和常用库的使用 这里首先推雪锋在网上的书籍,这是Python2.7的,这本书适合于重头开始一直读完, ...

  9. Spring学习笔记(三) AOP_annotation,AOP_XML

    在学习课程以前,听说AOP有种很神秘的感觉,好像很好深的技术.其实原理很简单,使用动态代理的方式给程序增加逻辑.与此相似的有struts2中的filter拦截器. 再讲AOP之前先把需求说一下: 同S ...

  10. 送给 Java 程序员的 Spring 学习指南

    https://www.infoq.cn/article/Ad-8ghcGGCNU572U6oEX 学习 Spring 的基础要求 Spring 官网首页是这么介绍自己的--"Spring: ...

最新文章

  1. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...
  2. Java调用net的webservice问题分享
  3. big and little endian
  4. 继承中类以及成员变量初始化的讨论。
  5. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试
  6. python里面对文件的读写操作
  7. c#Struts框架理念和自制Struts框架下 复杂版
  8. [css] 说说你对table-layout的理解,它有什么运用场景?
  9. 互联网日报 | TikTok将开启Pre-IPO融资;菜鸟裹裹战略再升级;滴滴中国西区总部落户重庆江北...
  10. 《TensorFlow技术解析与实战》——1.1 什么是人工智能
  11. JavaScript包管理器综述
  12. 计算机软件技术基础_「连载」信息技术基础题型归纳之计算机软件2
  13. snownlp 原理_情感分析snownlp包部分核心代码理解
  14. windows server 2012的DHCP保留地址导出导入、DHCP故障转移配置、DNS条目命令导入
  15. 我们系有个计算机中心英语,吉大自考计算机专业英语(一)
  16. 删除鼠标右键菜单多余选项的方法
  17. CPU32和CPU64区别
  18. C语言度化为度分秒的方法,一句话转换度:分:秒格式为度.度度度
  19. UE4 UE4 C++ Gameplay Abilities的GameplayCue
  20. 怎样彻底删除 mac 上的 Adobe 相关文件?

热门文章

  1. OpenGL学习笔记一
  2. 用 windows 资源监视器 查看 被占用的文件
  3. matlab 电机 热仿真,MATLAB在电机仿真中的应用
  4. 使用plsql导出数据库表中数据
  5. 思维导图软件哪个好?不要错过这份思维导图软件合集
  6. CoFlash 基本操作说明和Flash编程算法
  7. 常见python爬虫框架_python的爬虫框架有哪些
  8. k8s问题记录与解决
  9. 曾宪武《物联网通信技术》课后答案(四)
  10. Axure制作微信APP原型(一)四大模块:消息、通讯录、发现、我