Web开发

创建Springboot应用:

Spring Initializr->

maven核心配置管理文件:pom.xml

<dependencies>下记录了一些第三方库

helloworld :

1.在com.example.demo(自己写的包一般都放在这里) 下创建一个controller软件包

2.在包下面建一个HelloController类

网址构成:http://域名/path

这里是本地8080接口所以就是http://localhost:8080/hello

@RestController:标记当前类是接受web请求的类
@RequestMapping:标记当前方法是用来处理哪个路径发来的请求

开发环境热部署:

能够无需重启SpringBoot即可重新编译

spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=srg/main/java
spring.devtools.restart.exclude=static/**

spring.devtools.restart.enabled=true: 启用热部署

spring.devtools.restart.additional-paths=srg/main/java:哪个文件夹下文件有变动需要进行热部署

spring.devtools.restart.exclude=static/**:哪个文件下的文件内容变动不使用热部署

这里是static静态文件夹下的所有文件

@Controller :请求页面和数据

@RestController:只是请求数据,会将返回的对象数据转换为JSON格式

HTTP请求Method有GET POST PUT DELETE等方式

不加method默认GET POST 请求都可以接受

网页只能实现get请求实现post请求使用调试工具APIpost7

调试:新建HTTP接口,输入网址,选择method发送

如果指定了method请求:只能接受指定的请求

@GetMapping(name = '/hello' )等价于
@RequestMapping(value = "/new",method = RequestMethod.GET)

查询字符串方式:在网址后加?

例如:localhost:8080/hello?name = zhangsan&****(多个参数)

(使用Query String接收参数)保证前后端参数相同

@RequestParam(value = "nickname") String name

用来映射使得前端必须传nickname这个参数否则报错

 post请求

 

from-data可以传文件

urlendoded只可以传参数(数据)

传json文件:raw-json-写json格式文件(字典)

 

指数据是来自请求体的并且使用json方式传递的不能使用QueryString传递

静态资源访问

默认静态资源存放位置:static

spring.mvc.static-path-pattern=/file/**

设置用什么路径进行访问静态资源

spring.web.resources.static-locations=classpath:/static

设置静态资源都在哪里 

前端访问静态资源:

 上传文件:

一般通过Form表单向后端传输文件

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
</head>
<body>

<form action="demo-form.php",method = "post",enctype = "mulipart/form-data">
First name: <input type="text" name="FirstName" value="Mickey"><br>
Last name: <input type="text" name="LastName" value="Mouse"><br>
file:<input type="file" name = "filename"><br>
<input type="submit" value="提交">
</form>

<p>点击"提交"按钮,表单数据将被发送到服务器上的“demo-form.php”。</p>

</body>
</html>

 提交-右键检查-网络

SpringBoot的tomcat限制了请求的文件大小,每个文件的配置最大为10Mb,单次请求的文件的总数不能大于10Mb

spring.servlet.multipart.max-request-size=10MB

表单可以传递多个文件,单次请求时最多可以上传文件大小的数量

spring.servlet.multipart.max-file-size=10MB

传的每一个文件单个文件的大小

可以更改两个默认值 

 上传文件代码

需要传两个参数这段代码

注意参数前后端的对应

package com.example.file.controller;

import org.apache.tomcat.util.http.parser.MediaType;
import org.springframework.http.MediaTypeFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;

@RestController
public class fileController
{
    private final ServletConfig servletConfig;
    //依赖注入
    public fileController(ServletConfig servletConfig)
    {
        this.servletConfig=servletConfig;
    }

    @PatchMapping("/upload")
    public String upload(String nickname, MultipartFile photo) throws IOException {
        System.out.println(nickname);
        //获取图片原始名称
        System.out.println(photo.getOriginalFilename());
        //取文件类型
        System.out.println(photo.getContentType());
        //servletConfig获得到运行的根目录下的某个地址
        String path=servletConfig.getServletContext().getRealPath("/upload/");
        System.out.println(path);
        saveFile(photo,path);
        return "上传成功";
    }

    private 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);
    }
}

 

访问上传的文件 

不加classpath表示网站运行的根目录 (与上面的相对应)

可以配置多个项

每次上传都会产生新的地址

访问:

SpringBoot实现文件下载功能 

通过HttpServletResponse对象,设置响应头,并把文件流写响应的输出流

 

isInLine=true在浏览器中打开
isInLine=False在本地下载打开
 @GetMapping("/download")
    public void download( MultipartFile file, boolean isInLine, HttpServletResponse response) throws IOException
    {
        String filename = file.getOriginalFilename();
        System.out.println("filename="+filename);
        System.out.println("isInLine"+isInLine);
        String path = servletConfig.getServletContext().getRealPath(("/upload/"));
        InputStream inputStream = new FileInputStream(path+filename);
        System.out.println(path+filename);

        MediaType mediaType = MediaTypeFactory.getMediaType(filename).get();
        response.reset();
        response.setContentType(mediaType.toString());
        if(isInLine)
        {
            //在线打开方式
            //响应头需要使用URL encoder
            response.setHeader("Content-Disposition","inline;filename="+ URLEncoder.encode(filename,"UTF-8"));
        }else {
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
            byte[] buffer = new byte[1024];
            int len = 0;
            OutputStream outputStream = response.getOutputStream();
            while((len = inputStream.read(buffer))>0)
            {
                outputStream.write(buffer,0,len);
            }
            inputStream.close();
        }

认证:

Session认证

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值