HttpServletResponse概述、常见状态码、发送状态码的方法、设置缓存时间及文件下载

目录

一、HttpServletResponse概述

二、常见状态码

三、发送状态码、发送响应头的方法

发送状态码的方法:

发送响应头的方法:

四、发送响应消息体的方法及请求重定向

发送响应消息体的方法

请求重定向

五、设置缓存时间及设置定时刷新

设置缓存时间

设置定时刷新

六、文件下载


一、HttpServletResponse概述

● HttpServletResponse接口继承自ServletResponse接口
● 用于封装HTTP响应消息
● HTTP响应消息分为响应行,响应头,响应体三部分,所以HttpServletResponse中定义了向客户端发送响应状态码、响应消息头、响应消息体等方法

二、常见状态码

状态码说明
200成功
302重定向
304请求资源未改变,使用缓存
400请求错误,常见于请求参数错误
404请求资源未找到
405请求方式不支持
500服务器错误

三、发送状态码、发送响应头的方法

发送状态码的方法:

void setStatus(int status) ,设置响应消息的状态码,并生成响应状态行
void sendError(int sc) ,发送表示错误信息的状态码
void sendError(int sc,String message) ,设置表示错误的状态码外还向客户端发送一条错
误信息,其中包含message的内容

发送响应头的方法:

1、void addHeader(String name,String value) ,设置响应头指定名称字段的值,会覆盖掉原来该名称字段的值
2、void setHeader(String name,String value) ,与addHeader()方法功能相同,但是不会覆盖原来的值而是添加一个值
3、void setContentLength(int len) ,设置响应头的实体内容的大小,单位是字节
4、void setContentType(String type) ,设置响应内容的类型,即Content-Type的值,并且响应内容为文本类型时还能指定字符集编码,如text/html;charset=UTF-8

四、发送响应消息体的方法及请求重定向

发送响应消息体的方法

1、ServletOutputStream getOutputStream() ,用于获取字节输出流对象
2、PrintWriter getWriter() ,用于获取输出流对象
3、注意:在使用这些输出流时可能会出现乱码的情况,所以在使用输出流时可以使用
resp.setContentType("text/html;UTF-8"); 来设置字符集编码,用来解决乱码问题

请求重定向

● 请求重定向是指服务器接收到客户端请求后,可能由于某些条件限制,不能访问请求指定的资源,让客户端去访问另一个指定的资源
● HttpServletResponse定义了一个sendRedirect()方法,用于生成304响应状态码和Location响应
头,从而通知客户端重新访问Location响应头中指定的URL
● 方法: void sendRedirect(String location)
● location可以使用相对路径重定向到同一个Web服务器的其他Servlet,也可以绝对路径重定向到其他Web服务器
● 注意:重定向时会重新生成另一个HttpServletRequest对象,所以不能实现Servlet的共享数据,如果需要共享数据那么可以使用请求转发

五、设置缓存时间及设置定时刷新

设置缓存时间

● 对于不经常变化的数据,可以设置缓存时间减少频繁访问服务器,提高效率
● 使用 void setDateHeader(String name,long time) 方法来设置响应头
● 范例: resp.setDateHeader("Expires",System.currentTimeMills+1*60*60*1000) ,设置缓
存时间为1个小时

设置定时刷新

定时刷新是指设置经过某个时间后自动跳转到某个页面
使用 void setHeader(String name,String value) 方法
范例: resp.setHeader("Refresh","3;URL=/虚拟目录/demo.html");

六、文件下载

实现在浏览器中下载文件的功能,步骤如下:

1、创建字节输入流,关联读取的文件

2、设置响应消息头支持的类型

3、设置响应消息头以下载方式打开资源

4、通过响应对象获取字节输出流对象

5、循环读写

6、释放资源

范例:

@WebServlet("/ServletDownloadDemo")
public class ServletDownloadDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse
            resp) throws ServletException, IOException {
        //1. 创建字节输入流,关联读取的文件
        String realPath = getServletContext().getRealPath("/img/ServletLive.png");
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(realPath));

        //2. 设置响应消息头支持的类型
        //Content-Type是消息头名称,表示支持的类型
        //application/octet-stream是消息头参数,表示字节流
        resp.setHeader("Content-Type","application/octet-stream");

        //3. 设置响应消息头以下载方式打开资源
        //Content-Disposition是消息头名称,表示处理形式
        //attachment;filename=ServletLive.png是消息头参数,表示附件形式处理,
        filename表示文件名称
        resp.setHeader("Content-Disposition","attachment;filename=ServletLive.png");

        //4. 通过响应对象获得字节输出流对象
        ServletOutputStream outputStream = resp.getOutputStream();

        //5. 循环读写
        byte[] bytes = new byte[1024];
        int len;
        while((len = bis.read(bytes)) != -1){
            outputStream.write(bytes,0,len);
        }

        //6. 释放资源
        bis.close();
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse
            resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

 

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 常用的HttpServletResponse响应状态码包括: 1. 200 OK:请求成功,服务器正常返回请求的数据。 2. 201 Created:请求成功,服务器已经创建了新的资源。 3. 204 No Content:请求成功,但是服务器没有返回任何数据。 4. 301 Moved Permanently:请求的资源已经被永久移动到新的位置。 5. 302 Found:请求的资源已经被临时移动到新的位置。 6. 304 Not Modified:请求的资源未被修改,可以直接使用缓存数据。 7. 400 Bad Request:请求错误,服务器无法理解请求的格式。 8. 401 Unauthorized:未授权,需要用户进行身份验证。 9. 403 Forbidden:禁止访问,服务器拒绝请求。 10. 404 Not Found:请求的资源不存在。 11. 500 Internal Server Error:服务器内部错误,无法完成请求。 ### 回答2: HttpServletResponseJava Web中的一个重要的类,它负责向客户端浏览器发送Http响应。在HttpServletResponse中,常用的响应状态码有以下几种: 1.200 OK 200 OK表示服务器已成功处理请求,并返回了所请求的数据。200 OK是最常见状态码之一,通常表示服务器已经返回请求的结果。 2. 302 Found 302 Found表示请求的资源已经被临时移动到了另一个URL上,客户端需要重新发送请求到新的URL上。通常在重定向时使用。 3. 304 Not Modified 304 Not Modified表示请求的资源未被修改,客户端可以使用缓存中的数据。这种状态码可以减少数据传输的次数,提高网站的性能。 4. 400 Bad Request 400 Bad Request表示服务器无法理解请求的语法,通常是由于请求中包含了无效的参数或格式不正确的数据。 5. 401 Unauthorized 401 Unauthorized表示客户端请求的资源需要身份验证,但是客户端未提供有效的身份验证信息。通常在需要登录才能访问的页面中使用。 6. 403 Forbidden 403 Forbidden表示服务器拒绝客户端访问请求的资源,通常是因为权限不足或参数设置不正确。 7. 404 Not Found 404 Not Found表示客户请求的资源在服务器上不存在,通常是由于URL输入不正确或请求的资源已经被删除。 以上是HttpServletResponse常用的响应状态码,它们代表了服务器向客户端返回的响应信息。在开发网站时,熟悉这些状态码的含义,可以帮助开发人员更好地排除错误,提高开发效率。 ### 回答3: HTTPServletResponseJavaWeb中常用的一种响应方式,通过该方式可以对客户端的请求做出相应的回应。在使用过程中,通常需要使用到状态码,来告诉客户端请求的处理情况。下面,就介绍一下HTTPServletResponse常用的响应状态码。 1xx状态码:信息响应 100 Continue:客户端应继续发送请求。这个代表请求已经被接收,做出了响应。这有助于避免超时。 101 Switching Protocols:服务器已经从HTTP1.0升级到HTTP1.1。 2xx状态码:成功响应 200 OK:客户端请求已成功。 201 Created:客户端请求已成功,并且服务器已经创建了新的资源。 202 Accepted:请求已被接受,但尚未被处理完成。 204 No Content:请求成功处理,但没有任何数据返回。 3xx状态码重定向 301 Moved Permanently:请求的资源已经被永久转移至新URI,并且所有的将来请求应当使用新的URI。 302 Found:请求的资源临时从不同的URI响应,但应保持原有URI以后访问。该状态必须被缓存时间较短的默认期。 303 See Other:请求的资源临时从不同的URI响应并且响应是一个 GET 方法的响应。 304 Not Modified:请求的资源未被更新。这意味着客户端可以继续缓存完整的响应文档,不需要任何更改。 4xx状态码:客户端错误响应 400 Bad Request:请求有语法问题,服务器无法理解。 401 Unauthorized:客户端向服务器发送的请求需要认证信息。 403 Forbidden:客户端没有访问权限。 404 Not Found:在服务器上找不到请求的资源。 5xx状态码服务器错误响应 500 Internal Server Error:服务器发生严重错误。 503 Service Unavailable:服务器当前无法处理请求,由于临时过载或维护等原因。 以上就是HTTPServletResponse常用的响应状态码。掌握这些状态码能够帮助我们更好的理解JavaWeb开发中的相关知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值