在服务端 代码中 设置响应头来 控制客户端浏览器的行为
先在 ide
中 创建 一个Serverlst
选择 继承 HttpServlet
后 的 实现方法 (也为HTTP
传递方式)
设置响应头
实现请求重定向(Servlet)
package cn.test.site;
import java.io.IOException;
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 Response_302
*/
@WebServlet(description = "HTTP status 302 Test", urlPatterns = { "/Response_302" })
public class Response_302 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Response_302() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException
{
// TODO Auto-generated method stub
response.setStatus(302);
//设置跳转响应头 Location(固定)
response.setHeader("Location", "/ROOT_test/other");
//设置添加内容
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @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);
}
}
当在浏览器 访问 URL地址
http://localhost:8080/ROOT_test/Response_302
时(get , ROOT_test
为web
项目名)
就可以看到 服务器 根据 serverlet Response
作出响应后发送到浏览器的状态码和响应头信息
如下图所示:
浏览器解析响应头 Location
(此为 固定响应头 ) 后
便主动 跳转到/ROOT_test/other
页面
设置Content-Encoding
响应头
告诉 浏览器 数据的压缩格式
response.setHeader("Content-Encoding", "gzip");
设置content-type响应头
指定回送数据类型
response.setHeader("content-type", "image/jpeg");
// 或 response.setContentType("image/jpeg");
//指定发送给浏览器的数据类型为"image/jpeg"
浏览器能接收(Accept)的数据类型有:
application/x-ms-application,
image/jpeg,
application/xaml+xml,
image/gif,
image/pjpeg,
application/x-ms-xbap,
application/vnd.ms-excel,
application/vnd.ms-powerpoint,
application/msword,
标准读取以上格式 , 并返回 给浏览器
例:
读取项目下 img
文件夹里面的图片
String path = "/img/bsd.jpg";
File file = new File(path);
// 读取图片,载入到文件 输入流 in 中
FileInputStream in = new FileInputStream(file);
//将文件流读取的内容转为 字节
byte buf[] = new byte[in.available()];
in.close();
// 得到返回内容 (网页) 的输出流
OutputStream out = response.getOutputStream();
//将 字节 全部写入 输出流中
out.flush();
out.write(buf);
out.close();
设置refresh响应头
让浏览器定时刷新 ,并转到某一页面
//设置 每隔 三秒 刷新一次
response.setHeader("refresh", "3");
//设置 三秒后跳转 到固定 url
response.setHeader("refresh" , "3;url='http://www.baidu.com'");
设置content-disposition响应头
让浏览器下载文件
response.setHeader("content-disposition", "attachment;filename=xxx.jpg");
在浏览器中访问该页面
就会弹出文件下载框