package com.rlovep.Http;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TestRespose
*/
@WebServlet("/TestRespose")
public class TestRespose extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public TestRespose() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* 更改响应行,主要是改状态码
*
*/
//response.setStatus(404);//错误代码,没有反应
//response.sendError(404);// 发送404的状态码+404的错误页面
/**
* 修改响应头:
*
*/
//修改服务器类型
//response.setHeader("server", "JBoss");
/**
* 修改实体内容
*/
//浏览器能直接看到的内容就是实体内容
//response.getWriter().println("hello peace");//字符内容,常用
//response.getOutputStream().write("hello world".getBytes());//字节内容。不能两个同时使用
/**
* 测试重定向:与转发不同
* 使用请求重定向:发送一个302状态吗+location的响应
*
*/
/*response.setStatus(302);//设置状态码
response.setHeader("location", "/HttpSer/adv.html");//设置重定向页面
*/ //简单写法
// response.sendRedirect("/HttpSer/adv.html");
/**
* 定时刷新
* 原理:浏览器解析refresh头,得到头之后重新请求当前资源
*
*/
//response.setHeader("refresh", "1");//每隔1秒刷新一次
//隔5秒后转到另外的资源
//response.setHeader("refresh", "5;url=/HttpSer/adv.html");
/**
* 设置响应实体内容编码
*/
//response.setCharacterEncoding("utf-8");
/**
* 1. 服务器发送给浏览器的数据类型和内容编码
*/
//response.setHeader("content-type", "text/html");//设置内容为html
//response.setContentType("text/html;charset=utf-8");//和上面代码等价。推荐使用此方法
//response.setContentType("text/xml");//设置内容为xml
response.setContentType("image/png");//设置内容为图片
//设置输出内容
//response.getOutputStream().write("<html><head><title>this is tilte</title></head><body>中国</body></html>".getBytes("utf-8"));
ServletContext servletContext = getServletContext();
String realPath = servletContext.getRealPath("/image/1.png");
File file = new File(realPath);//WebContent
InputStream resourceAsStream = servletContext.getResourceAsStream("/image/1.png");
/**
* 设置以下载方式打开文件
*/
//response.setHeader("Content-Disposition", "attachment; filename="+file.getName());
/**
* 发送图片
*/
/*FileInputStream in = new FileInputStream(file);
byte[] buf = new byte[1024];
int len = 0;
//把图片内容写出到浏览器
while( (len=in.read(buf))!=-1 ){
response.getOutputStream().write(buf, 0, len);
}*/
byte[] buf1 = new byte[1024];
int len1 = 0;
//把图片内容写出到浏览器
while( (len1=resourceAsStream.read(buf1))!=-1 ){
response.getOutputStream().write(buf1, 0, len1);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}