设为首页 加入收藏

TOP

day12-SpringMVC文件上传(一)
2023-07-25 21:43:25 】 浏览:61
Tags:day12-SpringMVC 文件上

SpringMVC文件上传

1.基本介绍

  1. SpringMVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。spring 用 Jacarta Commons FileUpload 技术实现了一个 MultipartResolver 的实现类:CommonsMultipartResovler

  2. SpringMVC 上下文默认没有装配 MultipartResolver ,因此默认情况下不能处理文件的上传工作。如果要使用 Spring 文件上传功能,要先在上下文(容器文件)中配置 MultipartResolver

    <!--配置文件上传解析器-->
    <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" 
          id="multipartResolver">
    </bean>
    

2.应用实例

(1)引入 SpringMVC 文件上传需要的 jar 包

image-20230217200556207

(2)创建 fileUpload.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
<form action="<%=request.getContextPath()%>/fileUpload"
      method="post" enctype="multipart/form-data">
    文件介绍:<input type="text" name="introduce"/><br/>
    选择文件:<input type="file" name="file"/><br/>
    <input type="submit" value="上传文件"/>
</form>
</body>
</html>

(3)web.xml 文件中配置过滤器,处理中文乱码问题(这里使用 spring 提供的过滤器)

<!--使用spring提供的过滤器处理中文-->
<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <!--大小写都支持-->
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

(4)MyCharacterFilter.java

package com.li.web.filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @author 李
 * @version 1.0
 * 编写过滤器处理中文乱码问题
 */
public class MyCharacterFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest servletRequest, 
                         ServletResponse servletResponse, 
                         FilterChain filterChain) throws IOException, ServletException {
        //加入对编码的处理
        servletRequest.setCharacterEncoding("utf-8");
        //放行请求
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {}
}

(5)在 spring 的容器文件中,配置文件上传解析器

<!--配置文件上传解析器-->
<!--这里是按照接口名字获取bean,因此 id要写为 multipartResolver(接口)-->
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
      id="multipartResolver">
</bean>

(6)创建 FileUploadHandler.java

package com.li.web.fileupload;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

/**
 * @author 李
 * @version 1.0
 * 处理文件上传的 handler
 */
@Controller
public class FileUploadHandler {
    //编写方法,处理文件上传的请求
    @RequestMapping(value = "/fileUpload"
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于静态代码块和匿名代码块以及.. 下一篇工具类-获取控制台输入

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目