• SpringMVC获得请求头和文件上传


    目录

    获得请求头

    @RequestHeader

     @CookieValue

    文件上传 

    单文件上传步骤

     多文件上传实现

    法一:写下多个参数

     法二:数组接收


    获得请求头

    @RequestHeader

    使用@RequestHeader可以获得请求头信息,相当于web阶段学习的requestgetHeader(name)

    @RequestHeader注解的属性如下:

    • value:请求头的名称
    • required:是否必须携带此请求头,(写true必须携带请求头参数才可以访问)

    下列代码是,把请求头名为User-Agent的请求数据赋值给headerValue,然后

    访问之后, F12打开网络查看。

     @CookieValue

    使用@CookieValue可以获得指定的Cookie的值

    @CookieValue注解的属性如下:

    • value:指定cookie的名称
    • required:是否必须携带此cookie
    1. //配置类,使用注解把这个类放到容器中
    2. @Controller
    3. @RequestMapping(value="/user")
    4. public class userController {
    5. @RequestMapping("/quick21")
    6. @ResponseBody
    7. public void save21(@CookieValue(value = "JSEEEIONID")String jsessionId ) throws Exception {
    8. System.out.println(jsessionId);
    9. }
    10. }

    这样就可以获得cookie的值,cookie也是键值对的形式

    文件上传 

    文件上传客服端三要素

    • 表单项type="file"
    • 表单的提交方式是post
    • 表单的enctyoe属性是多部分表单形式,以及enctype="multipart/form-data"

    单文件上传步骤

    ①导入fileupload和io坐标

    1. <dependency>
    2. <groupId>commons-fileuploadgroupId>
    3. <artifactId>commons-fileuploadartifactId>
    4. <version>1.2.2version>
    5. dependency>
    6. <dependency>
    7. <groupId>commons-iogroupId>
    8. <artifactId>commons-ioartifactId>
    9. <version>2.4version>
    10. dependency>

    ②配置文件上传解析器

    在spring-mvc.xml中

    1. <bean id="MultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    2. <property name="maxUploadSize" value="5242800"/>
    3. <property name="maxUploadSizePerFile" value="5242800"/>
    4. <property name="defaultEncoding" value="UTF-8"/>
    5. bean>

    ③编写文件上传代码

     upload.jsp中代码

    1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
    2. <%
    3. String path = request.getContextPath();
    4. String basepath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    5. %>
    6. <html>
    7. <head>
    8. <base href="<%=basepath %>"/>
    9. <meta charset="utf-8"/>
    10. <title>Insert title heretitle>
    11. head>
    12. <body>
    13. <form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
    14. 名称<input type="text" name="username"><br/>
    15. 文件<input type="file" name="uploadFile"><br/>
    16. <input type="submit" value="提交">
    17. form>
    18. body>
    19. html>

    方法中参数要和jsp中的name值对应

    1. //配置类,使用注解把这个类放到容器中
    2. @Controller
    3. @RequestMapping(value="/user")
    4. public class userController {
    5. @RequestMapping("/quick22")
    6. @ResponseBody
    7. public void save22(String usernam, MultipartFile uploadFile) throws Exception{
    8. System.out.println(usernam);
    9. //获得上传文件的名称
    10. String originalFilename = uploadFile.getOriginalFilename();
    11. uploadFile.transferTo(new File("C:\\upload\\"+originalFilename));
    12. }
    13. }

     运行访问后

     多文件上传实现

    多文件上传只需要多加参数即可

    法一:写下多个参数

    1. <form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">
    2. 名称<input type="text" name="username"><br/>
    3. 文件1<input type="file" name="uploadFile"><br/>
    4. 文件2<input type="file" name="uploadFile2"><br/>
    5. <input type="submit" value="提交">
    6. form>
    1. //配置类,使用注解把这个类放到容器中
    2. @Controller
    3. @RequestMapping(value="/user")
    4. public class userController {
    5. @RequestMapping("/quick22")
    6. @ResponseBody
    7. public void save22(String usernam, MultipartFile uploadFile,MultipartFile uploadFile2) throws Exception{
    8. System.out.println(usernam);
    9. //获得上传文件的名称
    10. String originalFilename = uploadFile.getOriginalFilename();
    11. uploadFile.transferTo(new File("C:\\upload\\"+originalFilename));
    12. String originalFilename2 = uploadFile2.getOriginalFilename();
    13. uploadFile2.transferTo(new File("C:\\upload\\"+originalFilename2));
    14. }
    15. }

    运行访问后: 

     法二:数组接收

    jsp中name的值都一致

    1. <form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">
    2. 名称<input type="text" name="username"><br/>
    3. 文件1<input type="file" name="uploadFile"><br/>
    4. 文件2<input type="file" name="uploadFile"><br/>
    5. <input type="submit" value="提交">
    6. form>

    1. //配置类,使用注解把这个类放到容器中
    2. @Controller
    3. @RequestMapping(value="/user")
    4. public class userController {
    5. @RequestMapping("/quick23")
    6. @ResponseBody
    7. public void save23(String username, MultipartFile[] uploadFile) throws Exception{
    8. System.out.println(username);
    9. //获得上传文件的名称
    10. for (MultipartFile multipartFile : uploadFile) {
    11. String originalFilename = multipartFile.getOriginalFilename();
    12. multipartFile.transferTo(new File("C:\\upload\\"+originalFilename));
    13. }
    14. }
    15. }

    运行结果也是一致的

  • 相关阅读:
    基于小程序的教学辅助微信小程序设计+ssm(lw+演示+源码+运行)
    Cerebral Cortex:从任务态和静息态脑功能连接预测儿童数学技能
    电脑硬件——CPU
    球场输了?卡塔尔背地里可能赢麻了!
    什么年代了,还在用FastQC?试试Falco吧
    APP或小程序突然打开显示连接网络失败,内容一片空白的原因是,SSL证书到期啦,续签即可
    Python精髓之括号家族:方括号、花括号和圆括号,你真的会用吗?
    Git使用经验总结2-配置用户名邮箱
    DIN论文精读
    jQuery笔记
  • 原文地址:https://blog.csdn.net/weixin_60719453/article/details/126075941