java springboot入门----(4)SpringBoot整合web开发

目录

4.1返回json数据

4.1.2自定义转换器

4.2静态配置访问

4.3文件上传


 

4.1返回json数据

JSON是目前主流的前后端数据传输方式,spring MVC中使用消息转换器,HttpMessageConverter对JSON的转换提供了很好的支持,在Spring Boot中更近一步,对相关配置做了更近一步的简化,默认情况下,当开发者新创建一个spring boot项目后,添加Web依赖。

   <dependency> 
   <groupId>org.springframework.boot</groupId>
   <artifactId> spring-boot-starter-web</artifactId>
   </dependency>

这个依赖中默认加入jackson-databind作为JSON触发器,此时不需要添加额外的JSON处理器就能返回一段JSON。创建一个BOOK实体:

package org.sang.chapter07;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; 

public class Book {
	@JsonFormat
	private String name="aa";
	private String author="bb";
	@JsonIgnore
	private Float price=30f;
	@JsonFormat(pattern ="yyyy-MM-dd")
	private Date publicationDte;
	
	public void setName(String aname)
	{
		this.name =aname;
	}
	public void setAuthor(String aauthor)
	{
		this.author =aauthor;
	}
	public void setPrice(Float aprice)
	{
		this.price =aprice;
	}
	public void setDate(Date adate)
	{
		this.publicationDte =adate;
	}
	public String getName()
	{
		return name;
	}
	public String getAuthor()
	{
		return author;
	}
}

然后创建BookControoler,返回对象即可:

package org.sang.chapter07;



import java.util.Date;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BookController {
	@GetMapping("/book")
	public Book book()
	{
		Book book = new Book();
		book.setAuthor("罗贯中");
		book.setName("三国演义");
		book.setPrice(30f);
		book.setDate(new Date());
		System.out.print(book.getName());
		System.out.print(book.getAuthor());
		return book;
	}
}

4.1.2自定义转换器

常见的JSON处理器除了 jack-databind 之外,还有Gson和fastjson。这里针对常见用法分别举例

<dependency> 
<groupId>org.springframework.boot</groupId>
<artifactId> spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>

 

package org.sang.chapter07;

import java.lang.reflect.Modifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.GsonHttpMessageConverter;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@Configuration
public class GsonConfig {
	@Bean
	GsonHttpMessageConverter gsonHttpMessageConverter()
	{
		GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
	        GsonBuilder builder = new GsonBuilder();
		builder.setDateFormat("yyyy-MM-dd");
		builder.excludeFieldsWithModifiers(Modifier.PROTECTED);
		Gson gson = builder.create();
		converter.setGson(gson);
		return converter;
	}
}

 

2.使用fastjson*(我没有手动尝试,我是个弱鸡)

2. 使用fastjson
fastjson 是阿里巴巴的一个开源JSON 解析框架, 是目前JSON 解析速度最快的开源框架,该

框架也可以集成到Spring Boot 中。不同于Gson, fastjson 继承完成之后并不能立马使用, 需要开
发者提供相应的HttpMessageConverter 后才能使用,集成fastjson 的步骤如下。
首先除去j ackson-databind 依赖,引入fastjson 依赖:

 

 

4.2静态配置访问

在SpringMVC 中,对于静态资源都需要开发者手动配置静态资源过滤。Spring Boot 中对此也
提供了自动化配置,可以简化静态资源过滤配置。

在WebMvcAutoConfiguration 类中有一个静态内部类WebMvcAutoConfigurationAdapter , 实现
了4. 1 节提到的WebMvcConf1gurer 接口。WebMvcConfigurer 接口中有一个方法addResourceHandlers,
是用来配置静态资源过滤的。方法在WebMvcAutoConfigurationAdapter 类中得到了实现,部分核
心代码如下:

    Spring Boot 在这里进行了默认的静态资源过滤配置,其中staticPathPattern 默认定义在
WebMvcProperties 中,定义内容如下:

如果开发者使用IntelliJ IDEA 创建Spring Boot 项目, 就会默认创建出classpath:/static/ 目录,
静态资源一般放在这个目录下即可。

4.2.2 自定义策略

4.3文件上传

首先创建一个Spring Boot 项目并添加spring-boot-starter-web 依赖。
然后在resources 目录下的static 目录中创建一个upload.html 文件,内容如下:

<! DOCTYPE html>
 <html lang="en" >
 <head>
 <meta charset="UTF-8">
 <title>Title</title>
 </head>
 <body>
 <form action="/upload" method="post" enctype="multipart/form-data">
 <input type="file" name="uploadFile" value="请选择文件">
 <input type="submit" value="上传">
 </form>
</body>
</html>

这是一个很简单的文件上传页面,上传接口是/upload , 注意请求方法是post , enctype 是
multipart/form - data 。
接着创建文件上传处理接口,代码如下:

package org.sang.chapter07;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.springframework.web.bind.annotation.PostMapping;

@RestController
public class FileUploadController {
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd/");
	@PostMapping("/upload")
	public String upload(MultipartFile uploadFile,HttpServletRequest req)
	{
		String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
		String format = sdf.format(new Date());
		File folder = new File(realPath + format);
		if(!folder.isDirectory())
		{
			folder.mkdirs();
		}
		String oldName = uploadFile.getOriginalFilename();
		String newName = UUID.randomUUID().toString()+
				oldName.subSequence(oldName.lastIndexOf("."), oldName.length());
		try {
			uploadFile.transferTo(new File(folder,newName));
			String filePath =req.getScheme() +"://"+req.getServerName()+":"
					+req.getServerPort()+"/uploadFile/"+format+newName;
					return filePath;
		}catch(IOException e)
		{
			e.printStackTrace();
		}
		
				
		return "上传失败";
	}
}

4.3.2多文件上传

多文件上传和单文件上传基本一致, 首先修改HTML 文件,代码如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值