English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ejemplo de implementación de subida y descarga de archivos en el marco SpringMVC

Importar los paquetes necesarios en el entorno javaEE de eclipse:

Configuración del archivo web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" version="2.5">
   <!-- Configuración del DispatcherServlet de SpringMVC -->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- Configuración de HiddenHttpMethodFilter: Convertir solicitudes POST en solicitudes DELETE, PUT -->
   <filter>
     <filter-name>HiddenHttpMethodFilter</filter-name>
     <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
   </filter>
   <filter-mapping>
     <filter-name>HiddenHttpMethodFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app> 

Configuración del archivo de configuración de bean de Spring: springmvc.xml;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  <!-- Configuración de escaneo automático de paquetes -->
  <context:component-scan base-package="com.atguigu.springmvc"></context:component-scan>
  <!-- Configuración del analizador de vistas -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/></property>
    <property name="suffix" value=".jsp"></property>
  </bean>
  <!-- 
    default-servlet-handler se definirá en el contexto de SpringMVC como un DefaultServletHttpRequestHandler;
    Evaluará las solicitudes que entran en DispatcherServlet, si encuentra solicitudes que no han sido mapeadas, transferirá esa solicitud al Servlet predeterminado del servidor WEB de la aplicación 
    El Servlet maneja. Si no es una solicitud de recursos estáticos, se procesa por el DispatcherServlet
    El nombre del Servlet predeterminado del servidor WEB de la aplicación generalmente es default.
    Si el nombre del Servlet predeterminado del servidor WEB utilizado no es default,则需要通过 default-servlet-El atributo name se especifica explícitamente
  -->
  <mvc:default-servlet-handler/>
  <!-- Generalmente se configura esta <mvc:annotation-driven ></mvc:annotation-driven>,
  Debido a que... la implementación de requestmapping no es posible, se utiliza esta, lo que asegura que la solicitud requestmapping se implemente necesariamente
  -->
  <mvc:annotation-driven ></mvc:annotation-driven> 
  <!-- Configurar MultipartResolver, es decir, configurar las propiedades de carga de archivos-->
   <bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- Codificación de caracteres predeterminada -->
    <property name="defaultEncoding" value="UTF-8></property> 
    <!-- Tamaño del archivo subido, tamaño máximo de carga-->
    <property name="maxUploadSize" value="1024000"></property>
   </bean>
 </beans> 

 Método de la clase handler: implementar métodos de carga y descarga de archivos

 @Controller
public class SpringMVCTest {
  @Autowired
  private EmployeeDao employeeDao;
  //Implementar la descarga de archivos
  //Es necesario mencionar que la carga y descarga de archivos no requiere otra configuración
  @RequestMapping("testResponseEntity")
  public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
    byte[] body=null;
    ServletContext servletContext=session.getServletContext();
    ///archivos/abc.txt: la dirección del archivo a descargar
    InputStream in=servletContext.getResourceAsStream("/archivos/abc.txt");
    body=new byte[in.available()];
    in.read(body);
    HttpHeaders headers=new HttpHeaders();
    //el nombre de la cabecera de respuesta y el valor de la cabecera de respuesta
    headers.add("Content-Disposición", "attachment;filename=abc.txt");
    HttpStatus statusCode=HttpStatus.OK;
    ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body, headers, statusCode);
    return response;
  } 
  //carga de archivos,
     @RequestMapping("/testFileUpload)
     public String testFileUpload(@RequestParam("desc") String desc,
      @RequestParam("file") MultipartFile file) throws IOException{
      System.out.println("desc:"+desc);
      System.out.println("OriginalFilename"+file.getOriginalFilename());
      System.out.println("InputStream"+file.getInputStream());
      return "éxito";
   }
 } 

página jsp: index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html
<head
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Inserte el título aquí</title>
</head>
<body
  <center> 
  <!-- formulario de carga de archivos -->
   <form action="testFileUpload" method="post" enctype="multipart/form-data">
    File:<input type="file" name="file"/>
    Desc:<input type="text" name="desc"/>
    <input type="submit" value="Enviar"/>
   </form>
   <br><br>
  <!-- Descarga de archivos -->
  <a href="testResponseEntity" rel="external nofollow" >Test ResponseEntity</a>
  </center>
</body>
</html> 

success.jsp página: muestra que el archivo se ha subido con éxito

 <%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html
<head
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Inserte el título aquí</title>
</head>
<body
  <h3>Página de éxito</h3>
</body>
</html>

Esto es todo el contenido de este artículo, espero que sea útil para su aprendizaje y que todos nos apoyen en el tutorial de alarido.

Declaración: El contenido de este artículo se ha obtenido de la red, pertenece a los propietarios originales, el contenido ha sido contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará