您的位置:首页 > 编程语言 > Java开发

Spring学习的书-夏昕(2)

2010-07-15 14:46 155 查看
<文摘>  

基于模板的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中保存着用户前一次的语言设定参

数)。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息