快速业务通道

Spring的优秀工具类盘点,第1部分: 文件资源操作和Web相关 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

下面的片断演示了使用 WebUtils 从 HttpSession 中获取属性对象的操作:

protected Object formBackingObject(HttpServletRequest request) throws Exception {   UserSession userSession = (UserSession) WebUtils.getSessionAttribute(request,     "userSession");   if (userSession != null) {     return new AccountForm(this.petStore.getAccount(     userSession.getAccount().getUsername()));   } else {     return new AccountForm();   } }

Spring 所提供的过滤器和监听器

Spring 为 Web 应用提供了几个过滤器和监听器,在适合的时间使用它们,可以解决一些常见的 Web 应用问题。

Spring的优秀工具类盘点,第1部分: 文件资源操作和Web相关(6)

时间:2011-02-06 IBM 陈雄华

延迟加载过滤器

Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。

Spring 为此专门提供了一个 OpenSessionInViewFilter 过滤器,它的主要功能是使每个请求过程绑定一个 Hibernate Session,即使最初的事务已经完成了,也可以在 Web 层进行延迟加载的操作。

OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中。

要启用这个过滤器,必须在 web.xml 中对此进行配置:

… <filter>   <filter-name>hibernateFilter</filter-name>   <filter-class>   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter   </filter-class> </filter> <filter-mapping>   <filter-name>hibernateFilter</filter-name>   <url-pattern>*.html</url-pattern> </filter-mapping> …

上面的配置,我们假设使用 .html 的后缀作为 Web 框架的 URL 匹配模式,如果您使用 Struts 等 Web 框架,可以将其改为对应的“*.do”模型。

中文乱码过滤器

在您通过表单向服务器提交数据时,一个经典的问题就是中文乱码问题。虽然我们所有的 JSP 文件和页面编码格式都采用 UTF-8,但这个问题还是会出现。解决的办法很简单,我们只需要在 web.xml 中配置一个 Spring 的编码转换过滤器就可以了:

<web-app> <!---listener的配置--> <filter>   <filter-name>encodingFilter</filter-name>   <filter-class>     org.springframework.web.filter.CharacterEncodingFilter ① Spring 编辑过滤器   </filter-class>   <init-param> ② 编码方式     <param-name>encoding</param-name>     <param-value>UTF-8</param-value>   </init-param>   <init-param> ③ 强制进行编码转换     <param-name>forceEncoding</param-name>     <param-value>true</param-value>   </init-param>   </filter>   <filter-mapping> ② 过滤器的匹配 URL     <filter-name>encodingFilter</filter-name>     <url-patt

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号