Java Web 回顾总结(三) - java 实现HTTP 常见Response

本文介绍如何通过设置HTTP响应头来控制浏览器行为,包括重定向、压缩格式、内容类型、定时刷新及文件下载等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在服务端 代码中 设置响应头来 控制客户端浏览器的行为
先在 ide 中 创建 一个Serverlst
选择 继承 HttpServlet 后 的 实现方法 (也为HTTP 传递方式)
sd

设置响应头

实现请求重定向(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_testweb项目名)
就可以看到 服务器 根据 serverlet Response作出响应后发送到浏览器的状态码和响应头信息
如下图所示:
ds
  
浏览器解析响应头 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");

在浏览器中访问该页面
就会弹出文件下载框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值