SpringBoot快速入门笔记(2)

一、文件上传

//文件上传控制器
@RestController
public class FileUploadController {
    @PostMapping("/upload")
//    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    public String up(String name, MultipartFile photo, HttpServletRequest request) throws IOException {
        System.out.println(name);
        System.out.println(photo.getOriginalFilename());
        System.out.println(photo.getContentType());
//        System.out.println(System.getProperty("user.dir"));

        //前面路径动态获取,后面upload不存在要自己获取
        String path= request.getServletContext().getRealPath("/xiaxiede/");
        System.out.println(path);
        saveFile(photo,path);
        return "上传成功";
    }
    public void saveFile(MultipartFile photo,String path) throws IOException {
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdir();
        }
        File file = new File(path+photo.getOriginalFilename());
        photo.transferTo(file);

    }
}

这里是引用
在这里插入图片描述
如果出现报错,可能是文件过大,只需要在application.properties里面添加spring.servlet.multipart.max-file-size=XXMB(XX:任意数字)

二、拦截器

1、简要

SpringBoot定义了HandlerInterceptor接口来实现自定义拦截器的功能

这个接口定义了preHandle、postHandle、afterCompletion三种方法,实现接口时,记得重写父类方法
在这里插入图片描述

2、LoginInterceptor

新建一个拦截器包,试验在访问控制器之前会执行一遍拦截器

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("LoginInterceptor");
        return true;
    }
}

新建一个config包,以下是WebConfig代码,将addPathPatterns去掉就是全部拦截,无论访问啥都会执行一遍拦截器的东西

@Configuration
//加configuration 项目会自动运行这部分
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        registry.addInterceptor( new LoginInterceptor()); 全部拦截
        //可以添加路径设置拦截路径 再去访问别的,发现控制台没有loginInterceptor了
        registry.addInterceptor( new LoginInterceptor()).addPathPatterns("/user/**");

    }
}

随便访问一个控制器,例如hello,注意看控制台
在这里插入图片描述

三、RestFul风格接口

只是一种软件架构风格

1、特点

①一个URL代表一种资源
②GET获取资源、POST新建资源、PUT更新资源、DELETE删除资源
③通过操作资源的形式实现服务器请求操作
④资源形式是JSON或HTML
⑤从客户端到服务端每个请求要包含必要的信息

2、UserController

新建控制器

@RestController
public class UserController {
    @ApiOperation("获取用户id")//配合swagger进入swagger-ui.html查看注释
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable int id){
        System.out.println(id);
        return "根据id获取用户信息";
    }
    @PostMapping("/user")
    public String save(User user){return "添加用户";}
    @PutMapping("/user")
    public String update(User user){return "更新用户";}
    @DeleteMapping("/user/{id}")
    public String deleteById(@PathVariable int id){
        System.out.println(id);
        return "根据id删除用户";
    }
}

四、Swagger

方便前后端交互

pom.xml中添加依赖:

<!--		添加swagger2相关功能-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.9.2</version>
		</dependency>
<!--		添加swagger-ui相关功能-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.9.2</version>
		</dependency>

在config包下新建SwaggerConfig类:

@Configuration //告诉spring容器 这是一个配置类
@EnableSwagger2 //启用swagger2功能
public class SwaggerConfig {
//    配置swagger2相关的bean
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com"))//com包下所有API都交给swagger2管理
                .paths(PathSelectors.any()).build();
    }
//    主要是API文档页面显示信息
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("演示项目API")
                .description("演示项目")
                .version("1.0")
                .build();
    }
//实际开发这个只用配置一次
}

浏览器输入localhost/swagger-ui.html
在这里插入图片描述

可以看到项目中的控制器:
由于我们在UserController下的getUserById方法前添加了 @ApiOperation("获取用户id")注释,因此页面如下:

这里是引用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值