• 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. }

    运行结果也是一致的

  • 相关阅读:
    window下redis安装
    技术 | 基于NI PXI系统的智驾测试方案
    大型网站前端架构,深入每个网页本身,处理适配性和兼容性问题
    JAVA-GUI工具的编写-----简易框架篇
    STL技术——STL概述和入门
    C++异常处理
    pytorch view()和reshape() 详解
    【一等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「NUFE」解题思路
    YonBuilder开发之后端函数
    【TA-霜狼_may-《百人计划》】图形3.7.2 command buffer简
  • 原文地址:https://blog.csdn.net/weixin_60719453/article/details/126075941