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中关于下载的更多相关文章

  1. JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

    JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...

  2. [转]JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案

    时间 2014-04-14 14:33:44  CSDN博客 原文  http://blog.csdn.net/xby1993/article/details/23677375 主题 ServletJ ...

  3. servlet上传下载(任何格式的都可以)

    jar不能低于此版本,JDK1.6以上,否则户报错 <dependency> <groupId>commons-fileupload</groupId> <a ...

  4. [转]servlet中的service, doGet, doPost方法的区别和联系

    原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...

  5. servlet中的相对路径和绝对路径 及/, ./, ../的区别

    ./ 当前目录../ 父级目录/ 根目录资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就 ...

  6. JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)

    链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...

  7. servlet中的过滤器 国际化

    1. 过滤器 基本概念 过滤器是需要在xml中配置的. 为什么需用到过滤器? 项目开发中,经常会涉及到重复代码的实现! 注册 ----à Servlet [1. 设置编码] ----à  JSP 修改 ...

  8. Servlet中路径信息总结

    ./ 当前目录 ../ 父级目录 / 根目录 资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路 ...

  9. 【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据

    在上一节的程序中,我们可以看到HttpServletRequest, HttpServletResponse这两个对象.可以说,这是JavaWeb中至关重要的两个对象.接下来,我们来做一个简短的说明: ...

随机推荐

  1. 抽象工厂 C++实现

    抽象工厂(Abstract Factory) 抽象工厂是为了提供一系列相关或相互依赖对象的接口.对象创建型模式的一种. 客户Client 抽象工厂接口AbstractFactory 抽象工厂的实现类C ...

  2. C# 解决datatable写入文件内存溢出问题

    1.程序生成目标平台设为x64 2.文件写入后主动回收内存

  3. SendMessage wMsg常量值参考

    namespace Core.WinAPI { /// <summary> /// wMsg参数常量值: /// </summary> public static class ...

  4. nginx: [emerg] "fastcgi_pass" directive is duplicate in /etc/nginx/sites-enabled/default:57

    /************************************************************************************************ * ...

  5. mysql下,保存时间时具体时间丢失,只保存了日期的问题

    将日志信息记入数据库时增加了一个时间字段,发现存入数据库时只保留了日期,而没有时分秒信息. 我这边环境是(SRPINGMVC+Mybatis,mysql版本5.6.28以上),java层使用类型为ja ...

  6. 片段的findFragmentById

    class类名 名字 = calss类名 getFragmentManager().findFragmentById(R.id.布局id) 因为需要获取到片段的管理者,才可以去寻找到相应的布局.

  7. Python 修饰符, 装饰符

    1, 看到@时候, 程序已经开始执行了. 所以@实际上是立即执行的 2, @后面的跟着函数名, 该函数(f1)是之前定义过的.  再后面跟着一个函数(f2), f2是f1的入口. 那么执行顺序是,  ...

  8. FastAdmin 开发时如何与官方同步升级

    FastAdmin 开发时如何与官方同步升级 使用 FastAdmin 开发时为了与官方同步升级,推荐使用 git 管理代码. 官网上提供的完整包是为了方便第一次使用的人快速测试. 我一般是给官方的 ...

  9. 【转】inittab文件

    原文网址:http://blog.csdn.net/shuaishuai80/article/details/6202482 一.inittab文件背景(1)init进程的作用   使用uboot下载 ...

  10. curl查询公网出口IP

    liuzhizhi@lzz-rmbp|logs # curl ipinfo.io { "ip": "114.110.1.38", "hostname& ...