深入理解springboot

第五章 访问数据库
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)
斯塔

相关推荐

  1. 深入理解springboot

    2024-04-06 18:28:02       51 阅读
  2. 深入理解c++ 继承

    2024-04-06 18:28:02       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-06 18:28:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-06 18:28:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-06 18:28:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-06 18:28:02       18 阅读

热门阅读

  1. 【Datax分库分表导数解决方法】MySQL_to_Hive

    2024-04-06 18:28:02       48 阅读
  2. 蓝桥杯嵌入式总结

    2024-04-06 18:28:02       13 阅读
  3. JVM基础

    JVM基础

    2024-04-06 18:28:02      13 阅读