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

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

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

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