SpringMVC自学笔记-3

1.视图和视图解析器

1.定义:请求处理方法执行完毕后,最终会返回一个ModelAndView对象。对于返回String、View或者ModelMap的类型的处理方法,SpringMVC也会在内部将他们装配称一个ModelAndView对象,包含了逻辑名和模型对象的视图。
2.视图:视图的作用是渲染数据模型,将模型里面的数据以某种形式呈现给用户。为了实现视图模型和具体实现技术的解耦,Spring在org.springframework.web.servlet包中定义一个接口:View视图对象有视图解析器负责实例化。由于视图是无状态的,所以不存在线程安全的问题。
3.视图解析器:
springmvc为逻辑视图名的解析提供了不同的策略,可以在SpringWEB上下文中配置一种或者是多种解析的策略,并指定他们的先后顺序。每一种映射的策略对应一个具体的视图解析器的实现类。
4.视图解析的作用比较单一:将逻辑视图解析为一个具体的视图对象。
所有的视图解析器都必须实现ViewResolver接口
5.比较常用的实现类:
BeanNameViewResolver:将逻辑视图名解析为一个bean,bean的id等于逻辑视图名
InternalResourceViewResolver:将视图名解析为一个URL文件。一般使用该解析器将视图名映射为一个保存在WEB-INF文件中的一个程序文件(一般来讲都是JSP)
(1)例子:

<bean  class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value = "/WEB-INF/view/"></property>
		<property name="suffix" value =".jsp"></property>
	</bean>

注:
(1)prefix为视图文件的前缀,suffix为视图文件的后缀,
(2)我们可以使用一种视图解析器或者是多种视图解析器混合使用,每一个视图解析器都实现了Ordered接口并开放了一个order属性,通过order属性我们就可以指定视图解析器的优先顺序,order越小优先级越高。
SpringMVC按照视图解析器的顺序对逻辑视图进行解析,直到解析成功并返回视图对象,否则将会抛出ServletException异常。
(3)InternalResourceViewResolver;
jsp是最常见的视图技术,可以使用InternalResourceViewResolver作为视图的解析器:
(4)如果我们在项目中使用了JSTL,则SpringMVC会自动把视图由InternalResourceView转换为JSTLView
如果使用了JSTL的fmt标签则需要在SpringMVC的配置文件中配置国际化资源文件,
6.JSTL国际化的实例:
(1)首先在项目根目录下书写配置文件:
i18n.preporties文件代码

i18n.username = username
i18n.password =password 

i18n_zh_CN.preporties文件代码

i18n.Username = \u7528\u6237\u540D
i18n.password =\u5BC6\u7801

i18n_en_US.preporties文件代码

i18n.username = Username-us
i18n.password =Password-us

(2)在SpringMVC配置文件当中书写支持国际化的配置:

<!-- 配置国际化  注意:id 名字不能是随机的只能是messageSource-->
	<bean id = "messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basename" value ="i18n"></property>
	</bean>

(3)在jsp文件中添加fmt支持代码如下:

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 	<fmt:message key="i18n.Username"></fmt:message>
    <fmt:message key="i18n.password"></fmt:message>

7.直接访问success.jsp
(1)由于success.jsp在web-info下无法直接访问,为了解决这个问题我们可以在SpringMVc.xml中配置control view;代码如下
我们要引入新的命名空间mvc

<!-- 配置 control view ,path 是访问路径 ,view-name与方法的返回值相同 -->
	<mvc:view-controller path="/success" view-name="success"/>

(2)但是写上标签之后就不能用handler方法进行访问了,我们可以在Springmvc.xml下配置

<!-- 配置annotation-driven -->
<mvc:annotation-driven></mvc:annotation-driven

8.关于重定向:
一般情况下,控制器返回字符串类型的值会被当成逻辑视图名处理。
如果返回的字符串中带forward:或者是redirect:前缀的时候,SpringMVC会对他们进行特殊的处理:将forward:和redirect:当成指示符,其后的字符串作为URL来处理。
例子:
(1)handler方法:

	@RequestMapping(value="/testRedirect")
	public String testRedirect(){
		return "redirect:/index.jsp";
	}
	@RequestMapping(value="/testforward")
	public String testforword(){
		return "forward:/index.jsp";
	}

(2)index.jsp方法:

	<a href = "testRedirect" >testRedirect</a></br>
    <a href = "testforward" >testforward</a></br>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值