servlet中关于下载
package com.huawei.response;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Administrator
* 测试Response
*/
public class TestResponse01 extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 6682298499488718112L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//业务逻辑
//this.testAddOrSetHeader(req, resp);
//this.testWriteSomething(req, resp);
this.testOutputStream(req, resp);
}
protected void testAddOrSetHeader(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
//写一个头信息到 浏览器中
//可以为同一个名字的键添加多个值
resp.addHeader("test-test", "sxt-sxt");
resp.addHeader("test-test", "sxt-sxt1");
//修改同名的值 或是添加头信息
resp.setHeader("cdsxt", "cdsxt");
resp.setHeader("cdsxt", "cdsxt1");
//对setHeader的封装
resp.setDateHeader("now", new Date().getTime());
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
resp.setDateHeader("now", new Date().getTime());
}
protected void testWriteSomething(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
//得到输出器
//告诉浏览器应该怎样去处理当前这一段内容
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
// writer.write("<h1>TestResponse!!!!</h1>");
writer.write("<!DOCTYPE html>");
writer.write("<html>");
writer.write("<head>");
writer.write("<title>Test Response</title>");
writer.write("<script>alert('this is a test response')</script>");
writer.write("</head>");
writer.write("<body>");
if(req.getParameter("name")!=null){
writer.write("<h1 style=\"color:green;\">name have value</h1>");
}else{
writer.write("<h1 style=\"color:red;\">name is null</h1>");
}
writer.write("<img src=\"1.jpg\">");
writer.write("</body>");
writer.write("</html>");
}
/**
* 测试输出流
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void testOutputStream(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
resp.setContentType("image/jpeg");
//文件下载的头
//关于名字乱码的问题 名字的编码格式 只支持一种 ISO8859-1 需要的注意的是 得到字符串byte数组的时候 要指定GBK(兼容IE)编码
resp.setHeader("Content-Disposition", "attachment; filename=\""+new String("测试测测侧擦擦大苏打.jpg".getBytes("GBK"),"ISO8859-1")+"\"");
//得到输出流
OutputStream out = resp.getOutputStream();
//得到文件的输入流
InputStream in = this.getClass().getClassLoader().getResourceAsStream("1.jpg");
byte []bytes = new byte[1024*8];
int len = 0;
while((len = in.read(bytes))!=-1){
out.write(bytes, 0, len);
}
out.flush();
in.close();
out.close();
}
}
servlet中关于下载的更多相关文章
- JSP+Servlet中使用jspsmartupload.jar进行图片上传下载
JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...
- [转]JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案
时间 2014-04-14 14:33:44 CSDN博客 原文 http://blog.csdn.net/xby1993/article/details/23677375 主题 ServletJ ...
- servlet上传下载(任何格式的都可以)
jar不能低于此版本,JDK1.6以上,否则户报错 <dependency> <groupId>commons-fileupload</groupId> <a ...
- [转]servlet中的service, doGet, doPost方法的区别和联系
原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...
- servlet中的相对路径和绝对路径 及/, ./, ../的区别
./ 当前目录../ 父级目录/ 根目录资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就 ...
- JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)
链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...
- servlet中的过滤器 国际化
1. 过滤器 基本概念 过滤器是需要在xml中配置的. 为什么需用到过滤器? 项目开发中,经常会涉及到重复代码的实现! 注册 ----à Servlet [1. 设置编码] ----à JSP 修改 ...
- Servlet中路径信息总结
./ 当前目录 ../ 父级目录 / 根目录 资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路 ...
- 【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据
在上一节的程序中,我们可以看到HttpServletRequest, HttpServletResponse这两个对象.可以说,这是JavaWeb中至关重要的两个对象.接下来,我们来做一个简短的说明: ...
随机推荐
- POJ 1961 循环节
和POJ 2406 几乎一样.前者是求 该字符串的最小的循环节.也就是最大的循环次数.后者是求该字符串的每个前缀的循环节的最大循环次数.(如果有的话).而且必须大于1.才可以输出.就是POJ 2406 ...
- 201621123005《Java程序设计》第六次学习总结
201621123005<java程序设计>第六周学习总结 1.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对 ...
- vue.js 源代码学习笔记 ----- codegenEvents.js
/* @flow */ const fnExpRE = /^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/ const simplePathRE = / ...
- Ubuntu下的计算器
今天计算乘法时居然给算错了,好囧. 于是开始使用ubuntu自带的计算器:gcalctool 使用方法: 在终端直接输入命令gcalctool即可.
- springboot整合mybatis增删改查(三):mybatis逆向工程
上一篇已经把项目基本框架完善,接下来就是利用Mybatis Generator逆向工程进行mybatis的整合. 我们在创建项目开始的时候已经勾选web,mybatis,sql等,但是这些依赖还是不够 ...
- [LOJ2541]「PKUWC2018」猎人杀
loj description 有\(n\)个猎人,每个猎人有一个仇恨度\(w_i\),每个猎人死后会开一枪打死一个还活着的猎人,打中每个猎人的概率与他的仇恨度成正比. 现在你开了第一枪,打死每个猎人 ...
- HP-Mercury SiteScope安装及监控Weblogic操作
1.Mercury SiteScope简介Mercury SiteScope是一款无代理监测解决方案,可确保分布式IT基础架构——如服务器.操作系统.网络设备.网络服务.应用和应用组件的可用性和性能. ...
- linux(centOs)下memcached安装
1.libevent安装.为啥先安装它?因为不先装,memcached这座房子就没打地基: yum install libevent-devel 敲回车后出现: Loaded plugins: fas ...
- Ubuntu14.04安装有道词典(openyoudao)
1. Openyoudao介绍 Openyoudao是有道字典在linux下的客户端,在取词翻译的基础上,对查询到的信息进行有效的整合.目前已经发布了0.4版本,新增了google翻译功能,可提供72 ...
- 02 - Unit011:Spring AOP
Spring AOP 面向切面(儿)编程(横切编程) Spring 核心功能之一 Spring 利用AspectJ 实现. 底层是利用 反射的动态代理机制实现的 其好处: 在不改变原有功能情况下, 为 ...