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. idea里面Java文件显示一个x

    idea里面Java文件显示一个x,编译时过滤了,setting->builder->compiler->excludes

  2. 【LeetCode 38_字符串_算术运算】Count and Say

    string countAndSay(int n) { string res; ) return res; res = "; ) { int len = res.size(); int i, ...

  3. Date、DateFormat、SimpleDateFormat、Calendar

    package com.Date; import java.util.Date; /* * Date 表示特定的瞬间,精确到毫秒 * JDK1.0开始 * 构造方法(常用的方法,过时的不管): * D ...

  4. Alpha阶段第1周 Scrum立会报告+燃尽图 06

    作业要求与https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246相同 一.小组介绍 组长:刘莹莹 组员:朱珅莹 孙韦男 祝玮琦 王玉潘 周 ...

  5. vue.js 源代码学习笔记 ----- fillter-parse.js

    /* @flow */ export function parseFilters (exp: string): string { let inSingle = false let inDouble = ...

  6. MFGTool2批量操作

    /********************************************************************************* * MFGTool2批量操作 * ...

  7. java spring boot 出现 java.lang.UnsatisfiedLinkError

    java.lang.UnsatisfiedLinkError: E:\ruanjian\jdk\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a A ...

  8. [BZOJ4802]欧拉函数

    bzoj description 给出\(n\),求\(\varphi(n)\).\(n\le10^{18}\) sol \(Pollard\ Rho\),存个代码. code #include< ...

  9. DB2经常使用命令

    1.打开命令行窗体 #db2cmd 2.打开控制中心 # db2cmd db2cc 3.打开命令编辑器 db2cmd db2ce =====操作数据库命令=====   4.启动数据库实例 #db2s ...

  10. 【解决Jira】Chrome提示Java插件因过期而遭到阻止(JIRA上传截屏截图)

    最近经常被这个问题所困扰:用Chrome访问JIRA上传截屏截图时,地址栏下面弹出通知,提示JAVA插件已过期.但是由于公司要求统一开发环境和设置,不能更新到最新版,就像这样: 结果网页上的Java就 ...