springmvc如何使用视图解析器_SpringMVC学习笔记

369c8345e70140c879b2c8f80e4ae198.png

Springmvc

springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

springmvc是一个基于mvc的web框架。

b65ed5e7cafb9f5d88e008905d380a33.png

基本概念和执行过程

第一步:浏览器发起请求到前端(核心)控制器(DispatcherServlet)

前端控制器决定什么类型的请求会进入springmvc框架。

第二步:前端控制器请求处理器映射器(HandlerMapping)查找处理器(Handler)

映射器作用:根据特定规则查找处理器,找不到报异常。

第三步:处理器映射器(HandlerMapping)向前端控制器返回找到的处理器(Handler)

第四步:前端控制器调用处理器适配器(HandlerAdapter)去执行Handler

适配器作用:执行某种特定的Handler

第五步:处理器适配器去执行处理器(Handler)

第六步:处理器(Handler)执行完成后给处理器适配器返回模型视图(ModelAndView)

第七步:处理器适配器向前端控制器继续返回ModelAndView

第八步:前端控制器请求视图解析器(ViewReslover)去解析视图

第九步:视图解析器向前端控制器返回视图View

第十步:前端控制器进行视图渲染

第十一步:前端控制器向用户响应结果

入门程序

l 准备环境和jar包

Spring的4+1

Spring的Spring-web

Spring的Spring-webmvc

jstl

l 创建springmvc配置文件

在classpath下创建springmvc的配置文件,文件名习惯是:springmvc.xml

l 配置前端(核心)控制器

在web.xml文件中配置springmvc的前端控制器DispatcherServlet,且向contextConfigLocation属性注入springmvc配置文件的路径。如果不配置contextConfigLocation,默认加载WEB-INF/servletname-servlet.xml

url-pattern的值:*.action、/ 。 /*报错

l 配置处理器适配器

在springmvc的配置文件中,配置处理器适配器类SimpleControllerHandlerAdapter。能执行实现了Controller接口的Handler。

l 编写和配置处理器

处理器类Handler,其实功能等价于strtus2的action动作类。需实现controller接口。才能由SimpleControllerHandlerAdapter适配器执行。

向模型视图填充数据,相当于填充到request域。

在springmvc配置文件中配置处理器类。

<bean name="/hello.action" class="com.springmvc_01.handler.UserHandler"></bean>

l 编写视图

在WEB-INF下创建jsp目录,在目录中创建index.jsp页面

l 配置处理器映射器

在springmvc配置文件中配置处理器映射器类BeanNameUrlHandlerMapping,能根据bean的name属性作为url查找处理器。

l 配置视图解析器

在springmvc配置文件中配置视图解析器InternalResourceViewResolver,解析jsp视图。

l 部署调试

http://ip:port/site/动作名

映射器和适配器

非注解映射器和适配器(掌握)

l 非注解映射器:

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

作用:根据bean的name属性作为url查找。

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

简单url映射,配置时,注入mappings指定url和处理器类的映射关系。

注:多个映射器可以共存,前端控制器自动判断用哪个映射器。

l 非注解适配器:

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter

要求编写的Handler实现Controller接口。

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter

要求编写的Handler实现HttpRequestHandler接口。

此方法可以通过修改response,设置响应的数据格式,比如响应json等。

多个适配器可以共存

l DispatcherSerlvet.properties文件

位置在:/org/springframework/web/servlet/DispatcherServlet.properties,是框架的配置文件。

前端控制器默认从DispatcherSerlvet.properties文件中加载映射器、适配器、视图解析器等组件,如果不在配置文件中配置,使用默认的加载。

注解映射器和适配器(掌握)

注解映射器:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping。

注解适配器:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter。

l 配置注解映射器适配器

配置主键映射器和适配器时,可以用bean配置。

也可以使用<mvc:annotation-driven>配置,默认加载参数绑定方法,json转换解析器等功能。

开发中使用<mvc:annotation-driven>。

注:注解映射器和适配器必须配对使用。

l 开发注解Handler

n 编写Handler类

使用@Controller标识它是一个Handler动作类

用@RequestMapping实现方法和url的映射,建议url和方法名一样

n 配置Handler

可以使用bean单独配置Handler

也可以使用<context:component-scan>标签指定扫描的包,自动扫描Handler。

小结

理解springmvc的前端控制器、处理器映射器、处理器适配器、视图解析器用法。

前端控制器url-pattern的配置:*.action、/

<mvc:annotation-driven>配置注解适配器和映射器

<context:component-scan>配置注解类扫描包

视图解析器前缀和后缀

配置视图解析器时,可以注入prefix前缀,和suffix后缀。

用户访问的路径=prefix+用户url+suffix

Handler详解

@RequestMapping

l url映射

将handler中的方法映射到url上。

l 窄化请求映射

在动作类上用@RequestMapping指定访问当前动作类中方法的父路径。

l 限制请求方式

指定只接受get类型或post类型的请求。

05e88a9cebf150cf31e34c0d71008ab5.png

handler方法返回值

l 返回ModelAndView

Handler中的方法可以返回ModelAndView

l 返回String

1. 返回逻辑视图。

return "/jsp2";真正路径=前缀+逻辑视图+后缀

2. 重定向

return "redirect:/index.jsp";

3. 页面转发

return "forward:/index.jsp";

l 返回void

当方法返回void时,可以使用request转发页面,也可以使用response页面重定向,也可以使用response指定响应结果,例如响应json数据。

参数绑定

客户端发送的请求是key/value,经过参数绑定,将请求参数绑定到handler方法的形参上。

84cd6f6370af7ee4965d2c833e9a1249.png

l 默认参数绑定

直接在controller方法形参上定义以下类型,可以直接使用。

n HttpServletRequest

n HttpServletResponse

n HttpSession

n Model/ModelMap:Model是一个接口,ModelMap是一个接口实现。

l 简单类型参数绑定

当请求参数名和controller方法的形参名一致,参数会自动绑定成功。

参数名和方法形参名可以不一致,可以通过@RequestParam对参数进行绑定,。

90afec78c073ada5db58b2edb910d03d.png

l Pojo类型参数绑定

页面中<input>的name属性的值和handler中的方法的pojo形参中的属性名一致,自动将页面中数据绑定到pojo。

l 包装pojo类型参数绑定

Handler方法中形参类型是包装pojo,pojo的属性又是pojo。

让<input>标签name属性的值是handler中方法形参的pojo对象中的pojo属性的属性。会自动参数绑定。

集合类型参数绑定

l 数组绑定

页面发送多个相同key不同value的数据。在handler方法形参中定义数组接收。

l list绑定

在包装pojo中定义list类型属性

<input type="text" name="list[0]" value="b">

l map绑定

在包装pojo中定义map类型属性。

<input type="checkbox" name="map[key1]" value="c">

自定义converter

controller形参中的pojo对象,如果属性中有日期类型,可能需要自定义参数绑定。

l 自定义类

自定义类实现Converter接口,重写方法。

997e16835e73329801dc5c38638e88bf.png

l 配置转换器

配置自定义参数绑定bean,对应的类是FormattingConversionServiceFactoryBean类,注入converters,指定转换器类。

4bea333b332f21046b526c15f8141019.png

在注解配置中用conversion-service引用参数绑定类。

1f60918603ed3b6cc70fdab92d3d7bcf.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值