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中至关重要的两个对象.接下来,我们来做一个简短的说明: ...
随机推荐
- Python+Flask+MysqL的web建设技术过程
一.前言(个人学期总结) 个人总结一下这学期对于Python+Flask+MysqL的web建设技术过程的学习体会,Flask小辣椒框架相对于其他框架而言,更加稳定,不会有莫名其妙的错误,容错性强,运 ...
- springboot搭建的2种方式
一.搭建springboot项目有两种方式1.继承springboot项目 <parent> <groupId>org.springframework.boot</gro ...
- 【转】Javascript中的this
作者: 阮一峰 日期: 2010年4月30日 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ ...
- JavaWeb入门环境搭建
一.安装配置Tomcat 1.下载 2.配置环境变量 配置JAVA_HOME环境变量,路径为JDK的根目录 3.测试Tomcat 打开浏览器,在地址栏输入http://localhost:8080可以 ...
- Java多线程编程核心技术,第四章
1,ReentrantLock 2,object的wait(),wait(x),notify(),notifyAll(),分别等于Condition的await(),await(x,y),signal ...
- bzoj 3328 PYXFIB——单位根反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3328 单位根反演主要就是有 \( [k|n] = \frac{1}{k}\sum\limit ...
- RK3288 开机动画旋转
CPU:RK3288 系统:Android 5.1 如果开机动画与屏显示方向不一致,有两种方法可以更改开机动画方向. 一.RK3288默认的开机动画是由两张图片组合而成的,可以直接旋转两张图片的方向. ...
- Makefile中进行宏定义-***
实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解 ...
- C#操作 iis启用父目录
iis6实现: DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer&quo ...
- android 点击返回键 以及 加载activity 生命周期 记录。。。,一目了然
简叙 Activity 生命周期及android 返回按钮捕捉 @Override protected void onPostCreate(Bundle savedInstanceState) { ...