我是靠谱客的博主 美满店员,最近开发中收集的这篇文章主要介绍学习spring mvc 五,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天开始第五天的spring mvc框架学习

----------------------3小时完成-----------------------------------

要做的事:学习spring mvc 

1、在Spring MVC中使用 flash attributes

2、Spring MVC Building 

3、Using locales

-------------------------------------------------------------------------

markpage45

1、在Spring MVC中使用 flash attributes

spring  mvc  Flash  attributes提供了一个请求存储属性可供另外请求使用一种方式。在使用重定向时候非常必要。

例如,Post/Redirect/Get模式。flash  attributes在重定向之前暂存以便重定向之后还能使用,并立即删除。

Spring MVC有两个主要的抽象来支持flash attributes。FlashMap用于保持 flash attributes而FlashMapManager用于存储,检索,管理FlashMap实例。

Flash attribute支持默认开启并不需要显式启用,它永远不会导致HTTP Session的创建。每一个请求都有一个"input" FlashMap具有从上一个请求传过来的属性和一个“output”FlashMap具有将要在后续请求中保存的属性。这两个FlashMap实例都可以通过静态方法RequestContextUtils从Spring MVC的任何位置访问。

使用注解的控制器通常不需要直接与FlashMap一起工作。相反,@RequestMapping方法可以接受一个RedirectAttributes类型的参数,用它来在重定向场景中增加flash attributes。通过RedirectAttributes加入的Flash attributes将自动传播到“output”FlashMap。同样的,重定向之后,从“input” FlashMap来的属性自动添加到控制器的Model,为目标Url服务。

Matching requests to flash attributes

闪存属性的概念存在于许多其他的Web框架,事实证明,有时受到并发问题。这是因为根据定义flash属性是要被存储直到下一个请求。但是恰好“next”请求并不是接受者,而是另外的异步请求,这种情况下,flash attributes被过早移除。

2、Spring MVC Building 

Spring MVC提供用于生成和使用UriComponentsBuilder和 UriComponents对URI编码的机制。

例如你可以展开并进行编码的uri模板字符串:

UriComponents uriComponents = 

UriComponentsBuilder.fromUriString("http://example.com/hotels/{hotel}/bookings/{booking}").build();

URI uri = uriComponents.expand("42","21").encode().toUri();

你可以使用单独的URI组件expand和encode:

UriComponents uriComponents = UriComponentsBuilder.newInstance()

.scheme("http").host("example.com").path("/hotels/{hotel}/bookings/{booking}").build().expand("42","21")

.encode();

在Servlet环境中,ServletUriComponentsBuilder子类提供了静态工厂方法来从Servlet请求复制可用的URL信息:

HttpServletRequest request = ...

ServletUriComponentsBuilder ucb = ServletUriComponentsBuilder.fromRequest(request).replaceQueryParam("accountId","{id}").build()

.expand("123").encode();

另外,你可以选择复制包括甚至contect path的可用信息的子集:

ServletUriComponentsBuilder ucb = 

ServletUriComponentsBuilder.fromContextPath(request).path("/accounts").build()

或在DispatcherServlet被以name映射情况下,你也可以讲servlet mapping的文字部分包含进来:

ServletUriComponentsBuilder ucb = 

ServletUriComponentsBuilder.fromServletMapping(request).path{"/accounts"}.build()

3、Using locales

Spring的体系结构中,大部分都支持国际化,就像Spring Web MVC框架一样。DispatcherServlet使你能够使用客户端的locale自动解决信息。这都是由LocaleResolver对象来实现的。

请求进来的时候,DispatcherServlet查找一个locale resolver,如果它找到了一个,它就试图用它来设置locale。使用 RequestContext.getLocale()方法,你可以始终检索由locale resolver解决的 locale。

为了自动处理locale resolution,你可以给handle mapping附加一个拦截器来改变指定环境下的locale,例如,基于请求中的一个参数。

下面是Spring中locale resolvers的一些选择。

3.1 AcceptHeaderLocaleResolver

该locale resolver拦截客户端发送请求中的 accept-language头信息。通常该header字段包含客户端操作系统的locale。

3.2CookieLocaleResolver

该locale resolver拦截一个可能存在于客户端的cookie,看是否设置了locale。如果是这样,它将使用指定的区域设置。

3.3SessionLocaleResolver

SessionLocaleResolver允许你从可能与用户请求相关联的session中检索locales。

3.4LocaleChangeInterceptor

你可以通过将LocaleChangeInterceptor添加到 handlermappings来启用locales更改。

它将检测请求中的参数并修改locale。


mg:49















最后

以上就是美满店员为你收集整理的学习spring mvc 五的全部内容,希望文章能够帮你解决学习spring mvc 五所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部