jsp springmvc 视图解析器_SpringMVC学习笔记
Springmvc
springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
springmvc是一个基于mvc的web框架。
基本概念和执行过程
第一步:浏览器发起请求到前端(核心)控制器(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类型的请求。
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方法的形参上。
l 默认参数绑定
直接在controller方法形参上定义以下类型,可以直接使用。
n HttpServletRequest
n HttpServletResponse
n HttpSession
n Model/ModelMap:Model是一个接口,ModelMap是一个接口实现。
l 简单类型参数绑定
当请求参数名和controller方法的形参名一致,参数会自动绑定成功。
参数名和方法形参名可以不一致,可以通过@RequestParam对参数进行绑定,。
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接口,重写方法。
l 配置转换器
配置自定义参数绑定bean,对应的类是FormattingConversionServiceFactoryBean类,注入converters,指定转换器类。
在注解配置中用conversion-service引用参数绑定类。
jsp springmvc 视图解析器_SpringMVC学习笔记相关推荐
- jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题
最近被问到过几次关于springmvc多视图解析器解析的问题:总结一下. 1.问题: 假设我有两个jsp: WEB-INF/html/a.jsp WEB-INF/report/b.jsp 且我配置了视 ...
- jsp springmvc 视图解析器_springMVC配置jsp/html视图解析器
1.maven项目引入freemark相关jar包 freemaker是以个模板引擎,可以根据提供的数据和创建好的模板,去自动的创建html静态页面.所以在返回html视图时可以用这个引擎结合数据生成 ...
- jsp springmvc 视图解析器_SpringMVC工作原理
SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServlet收到请求调用HandlerMapp ...
- springmvc视图解析器_SpringMVC视图及REST风格
什么是视图解析器? springMVC用于处理视图最重要的两个接口是ViewResolver和View. ViewResolver的主要作用是把一个逻辑上的视图名称解析成一个真的的视图,而Spring ...
- jsp springmvc 视图解析器_Java面试题整理——SpringMVC
SpringMVC 1.什么是SpringMVC Spring MVC是一个MVC的开源框架,Spring MVC = Struts2+spring,Spring MVC就相当于是Struts2加上S ...
- SpringMVC视图解析器
SpringMVC视图解析器 前言 在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视 图解析器.当我们对SpringMVC控制的资源发起 ...
- SpringMVC视图解析器(转)
前言 在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一下SpringMVC视图解析器.当我们对SpringMVC控制的资源发起请求时,这些请求都会被Sprin ...
- SpringMVC 视图解析器
1.视图解析器 会 根据 把控制器返回的逻辑视图名 确定 渲染模型的视图文件的物理位置. Spring MVC的一个重要特性:将控制器中处理请求的逻辑 和 视图中渲染实现 解耦. 控制器方法和视图实现 ...
- springmvc如何使用视图解析器_SpringMVC的工作原理
SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServlet收到请求调用HandlerMapp ...
最新文章
- Struts2返回json
- 转:【AI每日播报】从TensorFlow到Theano:横向对比七大深度学习框架
- 嵌入网站的挖矿代码——Webmine
- 【Python】Scrapy入门实例
- 用户登陆进去后,没有权限操作
- 最小二乘法和极大似然估计
- linux目录与文件
- 皮尔逊相关系数(Pearson Correlation Coefficient)
- python box2d模拟平抛运动_[HTML5]使用Box2dWeb模拟飞行箭矢
- 使用ViewPage + Fragment,ViewPage所在的activity重建时的问题
- SpringBoot整合腾讯云COS
- 小米官网竖直导航栏html,手把手教你做小米商城顶部导航栏
- 计算机领域经典书籍推荐
- 线程的同步和异步理解
- 计算机组成原理实验报告JMPR,计算机组成原理实验四:组合逻辑控制器部件教学实验...
- Cousera吴恩达深度学习第二次编程作业
- CXF 客户端报错 No conduit initiator was found for the namespace http://schema
- 脚本及恶意网页攻击实验
- 智能家居改装方案学习笔记【双控灯改智能单控灯】2022.05.08
- BGP线路是什么意思?BGP三线的优点是什么?
热门文章
- linux日志本地存储和网络存储,文件系统和本地存储管理 1
- [转载] 陈皓:一些重要的算法
- 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值”的求解思路与算法示例
- LeetCode Algorithm 414. 第三大的数
- PAT (Basic Level) Practice (中文)1012 数字分类 (20 分)
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1079:计算分数加减表达式的值
- VS2017简单用法
- 【机器视觉】 reset_fuzzy_measure算子
- 【机器视觉】 endfor算子
- 【机器视觉】 assign_at算子