深入理解springboot

news/2024/4/30 15:25:26

第五章 访问数据库
1.配置数据源
在applicaiton.properties中
spring.datasource.url=jdbc:mysql://localhost:3306/chapter5

第九章 springmvc
1.总体流程
http请求发送给控制器,控制器与业务层交互,业务层使用noSQL缓存,业务层与数据访问层交互,数据访问层和关系型数据库交互,将结果返回给控制器,控制器相应请求,返回视图。
2.细节流程
HTTP请求被DispatcherServlet接受,DispatcherServlet调用HandlerMapping,定位控制器的响应方法,找到方法后,然后调用HandleExecutionChain处理器执行链,
其中包含处理器和拦截器,处理器Handler是控制器的包装,然后DispatcherServlet使用HandlerAdapter运行HandlerExecutionChain,Handler处理过程中先通过模型层获得模型,然后放入数据,最后返回ModelAndView,最后去ViewResolver去定位视图资源,View将数据模型渲染展示。
3.通过application定制ViewResolver,ViewResolver只用来解析逻辑视图

  • spring.mvc.view.prefix=/WEB——INF/jsp
  • spring.mvc.view.suffix=.jsp
    返回视图的前缀和后缀,返回“user/details",那么就会找到"/WEB-INF/jsp/user/details.jsp"。
    4.@ResponseBody将数据转换为JSON数据集
    5.控制器获取前端传入的数据
    (1)无注解获取参数
    要求控制器参数名和http请求的参数名一致,并且参数允许为空。
    (2)使用@RequestParam获取参数
    @GetMapping
    public String requestParamTest(
    @RequestParam(“int_val”)Integer intVal,
    @RequestParam(“long_val”)long longVal,
    @RequestParam(value=“str_val”,required=false)String stringVal){}
    str对应的参数允许为空。
    6.传递数组
    springmvc支持用逗号分割的数组参数作为url参数自动匹配控制器参数
    http://localhost:8080/my/requestArray?intArr=1,2,3&longArr=4,5,6&strArr=str1,str2,str3
    rerquestArr(int[] intArr,long[] longArr,String[]stringArr).
    7.请求体中传递JSON,使用@RequestBody注解获得JSON参数
    要求JSON请求体中的属性名称和pojo对象的属性名称一致。
    8.通过URL传递参数
    REST风格中,通常使用URL传递参数
    @GetMapping(“/{id}”)
    public User get(@pathVariable(“id”) Long id){};
    9.获取格式化参数
    @DataTimeformat(iso=ISO.DATE) Date Date,
    @NumberFormat(pattern=“#,###.##”)Double number.

10.自定义参数转换规则
HTTP的请求包含在请求头,请求体和URL中,服务器中还包括上下文环境和Session,这里的消息转换是指请求体的转换。
如果是HTTP请求体参数@RequestBody,它就会调用HttpMessageConverter接口,里面有一个canRead()如果返回为true则读入。
11.WebDataBinder机制
WebDatabinder机制是解析HTTP请求上下文,然后在控制器调用之前转换参数并且提供验证的功能,为调用转换器作准备。
处理器会从HTTP请求中读取数据,然后通过三种接口来进行各类型的参数转换,这三个接口是Converrter,Formatter,GenericConverter,在springmvc
中对这三个接口都实现了注册机机制,在springmvc中已经注册了许多转换器,这样就可以实现大部分的请求体的类型转换了。当我们需要自定义的转换规则时候,就需要注册自己的转换器。
Converter是一个普通的转换器,Formatter是格式转换器,最后GenericConverter转换器则将HTTP参数转换为数组。
只需要写转换器,会有自动注册机制自动注册自定义的转换器。
11.一对一转换器(Converter)
12.GenericConverterr集合和数组转换器
13.通过Validator来进行数据验证
14.数据模型
如果在控制器的方法参数中使用ModelAndView,Model,ModeMap,springmvc会自动创建数据模型对象。
15.视图和视图解析器
视图是渲染数据模型展示给用户的组建,分为逻辑视图和非逻辑视图,逻辑视图是需要视图解析器进行进一步定位的。
除了JSON和JSP视图外,还有其他视图,Excel,PDF等,虽然视图具有多样性,但都是实现了View接口。
16.HandlerrExecutionChain中的拦截器
实现HandlerInterceptor接口
流程:preHandle方法,处理器,postHandle方法,视图处理,afterCompletion方法。
拦截器需要注册:实现WebMvcConfigurer接口,重写其中的addInterceptors方法
17.@ResponseBody
当使用这个标注后,处理器会去轮询HttpMessageConverter接口的实现类。因为MappingJackson2HttpMessageConverter这个实现类已经被注册了,那么就通过这个处理器将其转换为JSON。
18.重定向
重定向就是控制器将它接收到的请求转发给其他控制器。
使用:return “redirect:/user/show?id=”+user.getId();
重定向传递信息:使用RedirectAttributes
public String redirect(String userName,RedirectAttributes rs){
ra.addFlashAttributes(“user”,user);
return “redirect:/user/showUser”;}
19.HttpSession
@SessionAttributes用于类注解,会将Model中的属性保存到Session。
@SessionAttribute用于参数,从Session中取出数据,填充到控制器方法参数。
@SessionAttributes(name={“user”} ,typy=Long.class)会将名为user的数据和Long类型的数据保存到session
public String test(@SessionAttribute(“id”) Long id,Model model)
{model.addAttributes(“user”,user);
20.Http请求头参数获取
@RequestHeader(“id”)
第11章:rest风格
1.put需要将资源的所有属性全部提交,而patch只需要提交部分资源。
2.URI例子
GET /users/{userName}/{note}
POST /user/{userName}/{sex}/{note}
POST通常使用请求体提交
3.使用@RestController,将控制器的返回对象转换为JSON。
4.处理HTTP状态码,异常和响应头
@ResponseStatus(HttpStatus.CREATED)
斯塔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11522.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

WP Rocket v3.15.10最新版强大的WordPress缓存插件

WP Rocket v3.15.10是一款强大的WordPress缓存插件,它通过一系列优化措施来提高网站的速度和性能。 WP Rocket与免费缓存插件相比,提供了更丰富和高级的自定义设置功能。这些包括媒体优化、预加载、延迟加载和数据库优化等。特别是对于没有任何缓存技术…

java自动化学习-03-02java基础语法01

1、java基础语法 在JAVA中源文件名称必须和主类名称相同 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为 文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文…

一场人生的风险控制,商业社会识人指南

一、资料前言 本套社会识人资料,大小679.94M,共有37个文件。 二、资料目录 识人的终极目的:一整场人生的风险控制.pdf 信任的搭建:更多的时间与维度.pdf 没有搞不定的人!角色人格与全面人格.pdf 政治不正确的正确…

数据可视化-Python

师从黑马程序员 Json的应用 Json的概念 Json的作用 Json格式数据转化 Python数据和Json数据的相互转化 注:把字典列表变为字符串用dumps,把字符串还原回字典或列表用loads import json#准备列表,列表内每一个元素都是字典,将其转化为Json …

24 个Intellij IDEA好用插件

24 个Intellij IDEA好用插件 一. 安装插件 Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句,这也太智能了,还显示了每条语句使用频率。 原因是它学习了我的项目代码,总结出了我的代码偏好。 Key Promoter X 快捷键提示插件 …

vue项目引入微信sdk: npm install weixin-js-sdk --save报错

网上查到要用淘宝的镜像 同事告知旧 域名:https://registry.npm.taobao.org/已经不能再使用 使用 npm config set registry http://registry.npmmirror.com