一.配置servlet

在WebContent(以前的eclipse版本是WebRoot)文件夹下,有一个web.xml

修改web.xml ,加入以下代码

 <servlet>
<servlet-name>helloservlet</servlet-name>
<servlet-class>my.helloservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloservlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>

格式就是这样的:

<servlet>
<servlet-name>Servlet的名称(自己起的,不要重复)</servlet-name>
<servlet-class>Servlet的类路径(xx.xx.xx.xxservlet)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet的名称(与上面的一样)</servlet-name>
<url-pattern>/url名字(自己起的,不要重复,注意/,不能丢)</url-pattern>
</servlet-mapping>

这个配置是为了把输入的/url和创建的servlet绑定到一起,意思是我们访问 /url名字 实际上就是在访问这个helloservlet类

PS:MyEclipse(收费的)会在servlet创建好时自动帮你在web.xml中配置好,但是Eclipse并不会,所以需要我们自己配置

二.实现输入QQ号,查询头像的功能

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.text.*" %>
<%@ page import="java.util.*" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="get" action="download">
输入QQ号
<input type="text" name="qq"/><br/>
<input type="submit" value="查询">
</form>
</body>
</html>

这里action因为之前配置了web.xml,所以download就代表指向helloservlet.java这个文件

这里也可以写成action=helloservlet,是一样的

helloservlet.java ——doGet方法:

在D盘image文件夹下存放头像图片,通过获取参数,然后找到本地图片文件,循环输出给浏览器

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String qq=request.getParameter("qq");//取得参数
String filename=qq+".png"; //以文件格式下载
/*response.setHeader("Content-Disposition", "attachment;filename="+filename);
response.setContentType("application/octet-stream");*/ //图片png形式下载
response.setContentType("image/png"); response.setCharacterEncoding("UTF-8"); File DirFile=new File("d:/image");
File imageFile=new File(DirFile,filename);
FileInputStream filestream=new FileInputStream(imageFile); OutputStream streamOut=response.getOutputStream();
byte[] buf=new byte[4096];
while(true) //循环输出
{
int n=filestream.read(buf);
if(n<=0)
break; streamOut.write(buf,0,n);
streamOut.flush();
} filestream.close();
streamOut.close();
}

效果如图所示:

输入111,点击查询,返回一个png图片

Java Servlet实现下载文件的更多相关文章

  1. java 的在线下载文件 .pdf

    java  的在线下载文件  .pdf 1.下载资源的本地位置 2.设置响应头 3.下载代码 1 PeriodicalResource periodicalResource = periodicalR ...

  2. 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)

    1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...

  3. 《手把手教你》系列技巧篇(五十七)-java+ selenium自动化测试-下载文件-下篇(详细教程)

    1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...

  4. 使用Servlet实现下载文件的功能

    在前台有一个下载链接,比如 <a href="DownLoadServlet">下载</a> <br/> 使用Servlet实现下载: impo ...

  5. Java Web之下载文件

    下载的文件,不能随便的被访问,放在外面的文件夹肯定不行,url一敲就能访问了,所以我们要放在WEB-INF文件夹里面,WEB-INF文件夹只有Servlet才能访问,我们新建一个文件夹,叫downlo ...

  6. Java 从服务器下载文件到本地(页面、后台、配置都有)

    先来看实现效果: 有一个链接如下: 点击链接下载文件:  第一种方法:Servlet实现 一.HTML页面部分: 1.HTML页面中的一个链接 <a id="downloadTempl ...

  7. java+web+批量下载文件

    JavaWeb 文件下载功能 文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端. 1 ...

  8. 多线程爬虫Java调用wget下载文件,独立线程读取输出缓冲区

    写了个抓取appstore的,要抓取大量的app,本来是用httpclient,但是效果不理想,于是直接调用wget下载,但是由于标准输出.错误输出的原因会导致卡住,另外wget也会莫名的卡住. 所以 ...

  9. java 从网上下载文件的几种方式

    package com.github.pandafang.tool; import java.io.BufferedOutputStream; import java.io.File; import ...

随机推荐

  1. TF坐标变换

    一.什么是TF  二.TF使用方法 三.TF包内的指令工具 四.相关API 1.广播变换发布坐标之间的坐标关系   #include <ros/ros.h> #include <tf ...

  2. php多维数组

    一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组.依照这种方式,我们可以创建二维或者三维数组: 实例 <?php // A two-dimensional array: $cars ...

  3. EF实体模型的更新

    摘要 解决前期数据库优先添加的实体,然后数据库表结构发生变化后,导致代码操作EF插入更新数据失败问题 EF 数据库更新模型 相比大家在使用实体操作数据库的时候,都是采取数据库优先,手动添加实体模型.但 ...

  4. MS-coco数据集下载及使用(转)

    先做个标记,改天研究下. 几个链接: MS coco数据集介绍及下载 Microsoft COCO 数据集 COCO Dataset 数据特点 COCO 数据集的使用

  5. php输出json,需要嵌套数组和对象问题

    https://segmentfault.com/q/1010000009985295 $tmp = []; $tmp['id'] = 'aaa'; $tmp['name'] = 'bbb'; $tm ...

  6. C++ 字符串、string、char *、char[]、const char*的转换和区别

    1.字符串 字符串本质就是一串字符,在C++中大家想到字符串往往第一反应是std::string(后面简称string) 字符串得从C语言说起,string其实是个类,C语言是没有class的,所以C ...

  7. log4j的使用及与mybatis应用

    log4j 输出级别 fatal(致命信息)>error(错误信息)>warn(警告信息)>info(普通信息)>debug(调试信息)>all(所有) log4j.pr ...

  8. 02_Hibernate持久化配置

    一.hibernate对象持久化 Web开发的分层: 为了把数据访问细节和业务逻辑分开, 一般把数据访问作为单独的持久化层.DAO是数据访问对象,使用hibernate后,数据访问对象中操作的API将 ...

  9. How to ping and test for a specific port from Linux or Unix command line

    Use telnet command The syntax is:telnet {host} {port}telnet www.cyberciti.biz 80telnet 192.168.2.254 ...

  10. Spring Http Basic(基本)和Digest(摘要)验证

    Basic(基本)和Digest(摘要)验证都是web应用中很受欢迎的可选机制. Basic验证一般用来处理无状态的客户端,它们在每次请求都附带它们的证书. 很常见的用法是把它和基于表单的验证一起使用 ...