【作业1】:今日知识点文字总结(RedirectAttributes的用途、@RequestBody和@ResponseBody两个注解的使用位置和作用、基于Servlet3.0标准规范的Multipart文件上传和下载的开发步骤、HandlerInterceptor的用法和用途)
解答:
- RedirectAttributes的用途:
RedirectAttributes是Spring mvc3.1版本之后的其中一个功能,专门用于重定向还能带参数跳转的工具类。有以下两种带参的方式:第一种,redirectAttributes.addAttribute(“param”,”value”),这种方法相当于在重定向链接地址追加传递的参数;第二种,redirectAttributes.addFlashAttribute(“param”,”value”),这种方法隐藏了参数,链接地址上不直接暴露,但能切只能在重定向的页面获取param参数值。这是因为参数值被放入session中,session在跳到页面后立马移除对象。若重定向在一个controller中就获取不到param属性,需要在controller中用(@RequestPrama(value = "prama")String prama)注解,采用传参的方式。
- @RequestBody和@ResponseBody两个注解的使用位置和作用:
@RequestBody使用在方法传入参数上,作用是从请求体request body中读取json,并转换成Book对象,而@ResponseBody使用在方法体上,作用是使服务器端网页停留在第一次请求访问的页面,不进行第二次跳转,作用等同于removesession,即会话的销毁。
理解不清楚参见:
@Responsebody注解表示该方法的返回的结果直接写入 HTTP 响应正文中,一般在异步获取数据时使用;
在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。例如,异步获取json数据,加上@Responsebody注解后,就会直接返回json数据。
@RequestBody注解则是将 HTTP 求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。
————————————————
版权声明:本文为CSDN博主「CG国斌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35246620/article/details/59620858
- 基于Servlet3.0标准规范的Multipart文件上传和下载的开发步骤:
主要配置步骤如下:
1、容器启动时,加载”文件上传配置参数”,
2、创建Multipart解析器Bean(Bean的名称必须为“multipartResolver”),
- HandlerInterceptor的用法和用途:
用途:HandlerInterceptor有以下方法:
1、preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
2、postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回ModelAndView,但未进行页面渲染),有机会修改ModelAndView (这个博主就基本不怎么用了);
3、afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染了页面);
用法:自定义一个HandIerInterceptor的实现类,实现类需要实现HandlerInterceptor接口,此时即拦截器就已经存在,第二步需要对拦截器进行注册,使用WebMvcConfigurer下的addInterceptors方法才能使拦截器生效。
【作业2】:MyBatis的一级缓存和二级缓存有什么区别?
解答:一级缓存和二级缓存都存在于同一个SqlSession生命周期中。不同的是,
- 一级缓存在同一个SqlSession中,MyBatis会把执行的方法和参数通过算法生成缓存的键值,将键值和结果存放在同一个Map中,若后续的键值一样,则直接从Map(一级缓存)中获取数据;其次,不同的SqlSession之间的缓存是相互隔离的,同一个SqlSession可以通过配置使得在查询前清空缓存,任何UPDATE、DELETE、INSERT语句都会清空缓存。
- 而二级缓存是以namespace为单位的,不同namespace下的操作互不影响;它更新时会以namespace为单位更新从而刷新缓存。
【作业3】:MyBatis的优势有哪些?
解答:MyBatis相对传统JDBC来说,利用sql映射简化了其繁琐的增删改查,同时通过缓冲池的连接作为缓存,缓解了以往多次重复调用相同数据的压力。