


Introduction to SrvletContext object and implementation code for file download
This article brings you an introduction to the SrvletContext object and the implementation code for file download. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
ServletContext object
Life cycle (it can be seen from the life cycle that this is a global object)
Created when the project is started
Destroyed when the project is closed
Concept: Represents the entire web application and can communicate with the program's container (server).
Get
1. Obtain through request object: request.getServletContext();
2. Obtain through HttpServlet: this.getServletContext();
Function
File under web: getRealPath("/file name");
Under web/WEB-INF: getRealPath("/WEB-INF/file name");
Under src: getRealPath("/WEB-INF/classes/file name");
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttribute(String name)
MIME type: A file data type defined during Internet communication
String getMimeType(String file): Judge the file based on its suffix name The type
format is: large type/small type
Get the MIME type (type of file)
Domain object (shares data for all users)
Get the real (server) path of the file
There is a way to implement file downloading There is a problem with Chinese garbled characters, so let’s start with a tool class
package cn.itcast.utils; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class DownLoadUtils { public static String getFileName(String agent, String filename) throws UnsupportedEncodingException { if (agent.contains("MSIE")) { // IE浏览器 filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐浏览器 BASE64Encoder base64Encoder = new BASE64Encoder(); filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?="; } else { // 其它浏览器 filename = URLEncoder.encode(filename, "utf-8"); } return filename; } }
The next step is the implementation of the servlet class:
@WebServlet(name = "DownloadServlet",urlPatterns = "/download3") public class DownloadServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1.获取文件名 String filename = request.getParameter("filename"); // 2.获取真实路径 // 2.1 获取ServletContext ServletContext servletContext = this.getServletContext(); // 2.2 根据文件存储的位置,选择路径,本人的路径是web下的upload下的文件 String realPath = servletContext.getRealPath("/upload/" + filename); // 3.设置响应头 // 3.1 设置content-type response.setHeader("content-type",servletContext.getMimeType(filename)); // 3.2 解决中文乱码 String agent = request.getHeader("user-agent"); filename = DownLoadUtils.getFileName(agent,filename); // 3.3 设置content-disposition response.setHeader("content-disposition","attachment;filename=" + filename); // 4.标准的IO流 FileInputStream fis = new FileInputStream(realPath); ServletOutputStream sos = response.getOutputStream(); byte[] b = new byte[1024 * 8]; int len = 0; while((len = fis.read(b)) != -1){ sos.write(b,0,len); } fis.close(); sos.close(); } }
The above is the detailed content of Introduction to SrvletContext object and implementation code for file download. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Java's classloading involves loading, linking, and initializing classes using a hierarchical system with Bootstrap, Extension, and Application classloaders. The parent delegation model ensures core classes are loaded first, affecting custom class loa

The article discusses implementing multi-level caching in Java using Caffeine and Guava Cache to enhance application performance. It covers setup, integration, and performance benefits, along with configuration and eviction policy management best pra

The article discusses using JPA for object-relational mapping with advanced features like caching and lazy loading. It covers setup, entity mapping, and best practices for optimizing performance while highlighting potential pitfalls.[159 characters]

The article discusses using Maven and Gradle for Java project management, build automation, and dependency resolution, comparing their approaches and optimization strategies.

The article discusses creating and using custom Java libraries (JAR files) with proper versioning and dependency management, using tools like Maven and Gradle.
