2021-08-19 学习笔记

RedirectAttributes的用途:
RedirectAttributes是一个接口,用于重定向之间传递数据,它继承了Model既对Model
做了扩展,扩展了addFlashAttribute()…等方法,addFlashAttribute()的值暂时会在request中;

@ResponseBody的用途:
@ResponseBody作用在方法上,用于将Controller方法返回的集合,对象在响应的时候转换成json格式;

@RequestBody的用途:
@RequestBody作用在参数上,用于从请求体中获取json并转换成对象;

@RequestMapping(path =  "/input.do",produces = "text/html;charset=utf-8")
	//@RsponseBody:转换成json格式 
	@ResponseBody
	//@RequestBody:从请求体中获取json并转换成book对象
	public String excuteBookList(@RequestBody Book book) {
		
		System.out.println(book.toString());
		return book.toString();
	}

基于Servlet3.0标准规范的Multipart文件上传和下载的开发步骤:
(一) 文件上传:
1.在Tomcat启动时,在核心控制器配置类中加载文件上传配置参数,其中会设置一个暂时的文件保存路径

@Override
	protected void customizeRegistration(Dynamic registration) {
		MultipartConfigElement configElement = new MultipartConfigElement("d:/tmp/temp", 1024*1024*2, 1024*1024*2, 2);
		registration.setMultipartConfig(configElement);
	}

2.在springmvc配置类中注入视图解析器MultipartResolver并加载

@Bean
	public MultipartResolver multipartResolver() {
		return new StandardServletMultipartResolver();
	}

3.上传的文件被视图解析器处理成MultipartFile对象并注入,调用MultipartFile对象的transferTo()方法将文件转存到本地

@RequestMapping(path =  "/upload.do",produces = "text/html;charset=utf-8")
	public void fileUpload(String title,String desc,@RequestPart MultipartFile myfile) {
		System.out.println(title);
		System.out.println(desc);
		
		System.out.println(myfile.getName());
		System.out.println(myfile.getOriginalFilename());
		System.out.println(myfile.getContentType());
		System.out.println(myfile.getSize());
		
		try {
			myfile.transferTo(new File("d:/tmp/temp/test/"+myfile.getOriginalFilename()));
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

(二) 文件下载:
1.用ResponseEntity<byte[]>封装一个字节数组,准备需要下载的文件路径
2.准备需要下载的文件对象,将文件对象转换为字节流
3.读取文件中的字节数据并准备一个字节数组作为储存空间,将字节流写入储存空间中
4.设置响应头
5.返回响应实体对象(字节数组,响应头,状态码)

	@RequestMapping("/down/{fname}")
	//代表返回一个字节数组用ResponseEntity封装
	public ResponseEntity<byte[]> downLoad(@PathVariable("fname") String fileName){	
		//需要下载的文件路径
		String path = "D:\\tmp\\img\\"+fileName;
		
		//下载的文件对象
		File file = new File(path);
		
		
		//读取文件中的字节数据
		byte[] buff = null;
		
		try (FileInputStream fis = new FileInputStream(file)) {
			//通过下载文件的大小设置一个存储空间
			buff = new byte[fis.available()];
			fis.read(buff);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//设置响应头
		HttpHeaders headers = new HttpHeaders();
		headers.setContentDispositionFormData("attachment", fileName);
		headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
		
		//返回响应实体对象包含(字节数组,响应头,状态码,ok表示200)
		return new ResponseEntity<byte[]>(buff,headers,HttpStatus.OK);

Mybatis一级缓存和二级缓存的区别:
一级缓存存在于同一个SqlSeesion生命周期中,在第一次查找时会生成键值,在后续做相同
查找时会直接从一级缓存中获取数据
二级缓存存在于同一个SqlSessionFactory中,二级缓存用在查询频率很高的场合

Mybatis的优势:
Mybatis相对与JDBC来说解决了JDBC代码的冗余,并且Mybatis自带连接池,效率更高,Mybatis开启二级缓存后在查询的时候不用像JDBC一样去遍历结果集,在做相同查询的时候Mybatis的效率更高;对于SQL语句,Mybatis使用SQL映射,支持实体类和数据库字段的映射,并且Mybatis更加便于管理SQL语句

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值