package cn.itcast.day06.web.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 实现防盗链功能
// 获得 referer 头 用于说明来访者来自哪里
String referer = request.getHeader("referer");
if(referer==null || !referer.startsWith("http://localhost")) {
// 是盗链者
response.sendRedirect("/day06/index.jsp");
return ;
}
// 解决response中文乱码问题
response.setContentType("text/html;charset=utf-8"); // 设置消息体的编码
// 通过 http 协议 发送的http响应消息头 不能出现中文 中文必须要经过url编码
String filename = URLEncoder.encode("美女.jpg", "utf-8");
// 通知浏览器以下载的方式读取资源
response.setHeader("content-disposition", "attachment;filename="+filename);
// 读取图片数据 发给ie浏览器
String webPath = "/download/美女.jpg"; // 相当于当前web应用的path
ServletContext servletContext = super.getServletContext();
InputStream in = servletContext.getResourceAsStream(webPath);
OutputStream out = response.getOutputStream();
int len;
byte[] buffer = new byte[1024];
while((len=in.read(buffer))!=-1)
out.write(buffer, 0, len);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
分享到:
相关推荐
javaweb文件上传与下载
这个"javaweb文件上传与下载模块源代码"提供了一个实现这些功能的基础框架,对于初学者和Java程序员来说,这是一个很好的学习资源。下面将详细讲解其中涉及的关键知识点。 1. **Servlet和HTTP协议**: - 在Java ...
在JavaWeb批量文件下载器的设计和实现中,主要涉及到以下几个核心知识点: 1. **Servlet与JSP**:JavaWeb应用的基础框架,Servlet用于处理HTTP请求,JSP则用于动态生成HTML响应。在这个下载器中,Servlet接收用户的...
在JavaWeb开发中,文件上传和下载是常见的功能需求,特别是在构建交互性强的Web应用时。本源代码示例提供了一个简单的实现,帮助开发者理解如何处理这些操作。下面将详细解释涉及的技术点。 1. **文件上传** - **...
在JavaWeb开发中,文件上传是一项常见的功能,用于接收用户通过网页上传的文件,例如图片、文档等。这里我们关注的是一个自定义的Util工具类,它特别针对Excel2007格式进行了优化,同时也兼容其他版本的Excel处理。...
本帮助文档全面介绍了JavaWeb开发中的核心概念和实践技巧,特别是强调了采用三层架构的设计模式。 首先,JavaWeb的核心技术包括Servlet、JSP(JavaServer Pages)和JavaBean。Servlet是Java语言编写的应用程序,它...
在JavaWeb开发中,文件的上传和下载是常见的功能需求,尤其在构建企业级应用时。这个"javaWeb实现文件的上传和下载(可以返回上一级目录)"项目,旨在提供一个用户友好的交互式文件管理系统,允许用户不仅能够上传和...
在IT行业中,JavaWeb开发是构建企业级应用的重要技术栈,涵盖了从前端界面到后端服务的全方位开发工作。这份"JavaWeb开发文档集合"显然是一份宝贵的资源,包含了多种核心技术的指南,可以帮助开发者深入理解和掌握...
了解如何配置Tomcat服务器、部署WAR文件、管理应用以及日志查看,对于JavaWeb开发者来说是基础技能。 这些技术的综合运用使得JavaWeb开发者能够创建功能丰富、交互性强的Web应用。在阅读提供的“JavaWeb帮助文档Api...
第三步,JavaWeb项目部署:部署JavaWeb应用通常涉及将项目打包成WAR(Web ARchive)文件,然后将其放在应用服务器的webapps目录下。Tomcat会自动解压并启动应用。部署过程还包括配置服务器端的环境变量、虚拟主机和...
附件中的"web.doc"文件可能是作者自己编写的关于JavaWeb的详细文档,包含了可能的实战经验、代码示例或者对上述概念的深入解释。下载并阅读该文档,将有助于进一步理解和掌握JavaWeb开发的关键技术。 总之,JavaWeb...
javaweb 程序填空题
【JavaWeb开发帮助文档合集】是一份涵盖了多种与JavaWeb相关的技术资源的集合,旨在为开发者提供全面的参考资料。这个压缩包包含了HTML、JavaEE、API等多个领域的指南和手册,帮助开发者深入理解和掌握相关技术。 1...
JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar ...JavaWeb12-文件上传.rar JavaWeb13-过滤器与监听器.rar
Spring formwork.chm是Spring框架的帮助文档,Spring是JavaWeb中最受欢迎的框架之一,它提供了依赖注入、AOP(面向切面编程)、MVC等特性,有助于简化企业级应用的开发。 JSTL中文帮助文档CHM.chm介绍了JavaServer ...
JavaWeb学习教程文档是一套全面且深入的教育资源,旨在引导初学者逐步掌握Web开发的核心技术。这个教程首先从最基础的前端技术讲起,包括HTML5、CSS和JavaScript,然后过渡到后端的XML和Servlet等内容,使得学习者...
文件上传和下载是 Web 应用程序中非常常见的功能,它们广泛应用于各个领域,例如文件共享、图片上传、文档下载等。 标题中的“JavaWeb中上传和下载文件实例代码”介绍了 JavaWeb 中文件上传和下载的实例代码,供...
在JavaWeb应用中,处理Excel文件的上传与下载是一项常见的需求。这主要涉及到客户端与服务器之间的数据交互,以及对Excel文件的读写操作。这里,我们重点探讨如何使用Java技术来实现这一功能。 首先,Excel文件的...
JavaWeb技术是构建互联网应用程序的重要框架,它将Java语言与Web技术相结合,为开发者提供了强大的..."javaweb书籍.pdf"这个文件可能包含了黄勇老师关于JavaWeb架构的详细讲解,对于初学者和进阶者都是宝贵的参考资料。