05.HttpServletResponse

HttpServletResponse

这里写图片描述

ServletResponse

辅助Servlet将响应发送到客户端的对象。由servlet容器创建ServletResponse对象,并将它作为参数传递给servlet的service方法。

常用方法:

  • void serCharacterEncoding(String s):设置将发送到客户端的响应的字符编码。

  • void setContentType(String s):设置将发送到客户端的响应的内容类型。给定内容类型可能包含字符编码,例如:”text/html;charset=UTF-8”。

  • void setContentLength(int len):设置响应内容的正文的长度。

  • ServletOutputStream getOutputStream():返回适用于二进制数据的响应流。

  • PrintWriter getWriter():返回适用于文本数据的响应流。

HttpServletResponse

常用常量:

  • SC_CONTINUE 状态码(100):指示客户端可以继续

  • SC_OK 状态码(200):指示请求正常成功

  • SC_SEE_OTHER 状态码(303):指示可在另一个URI之下找到该请求的响应

  • SC_NOT_FOUND 状态码(404):请求的资源不可用

  • SC_INTERNAL_SERVER_ERROR 状态码(500):指示HTTP服务器内存在错误使服务器无法完成请求。

新增常用方法介绍:

  • void addCookie(Cookie cooike):将指定的cookie添加到响应(可加多个)。

  • void addHeader(String name, String value):用给定名称和值添加响应头。此方法允许响应头有多个值。

  • String encodeURL(String URL):通过将回话ID包含在指定的URL中并对该URL进行编码。如果不需要编码,则返回原来的URL。

  • String encodeRedirectURL(String URL):对指定URL进行编码,以便在sendRedirect方法中使用它。如果不需要编码,则返回原来的URL(可判断是否需要将ID加入URL)。

  • void sendError(int i, String s):使用指定状态将错误响应发送到客户端。

  • void sendError(int i):使用指定状态代码并清除缓冲区将错误响应发送到客户端。

  • void setStatus(int i):设置此响应的状态码。用于设置没有错误时的返回状态码(例如状态代码SC_OK或者SC_MOVED_TEMPORARILY)

  • void sendRedirect(String s):使用指定重定向位置URL将临时重定向响应发送到客户端。(例如:client向Servlet1发送一个请求,Servlet1并不能完成请求,但是把能处理请求的Servlet2的URL发送个client,则客户端向Servlet2发送请求,Servlet2处理请求)。

代码示例

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <a href="servlet1">sendRedirect()(重定向)测试</a><br/>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ResponseDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <servlet>
        <servlet-name>s1</servlet-name>
        <servlet-class>com.li.servlet.response.Servlet1</servlet-class>
  </servlet>
  <servlet-mapping>
        <servlet-name>s1</servlet-name>
        <url-pattern>/servlet1</url-pattern>
  </servlet-mapping>

  <servlet>
        <servlet-name>s2</servlet-name>
        <servlet-class>com.li.servlet.response.Servlet2</servlet-class>
  </servlet>
  <servlet-mapping>
        <servlet-name>s2</servlet-name>
        <url-pattern>/servlet2</url-pattern>
  </servlet-mapping>

</web-app>

Servlet1.java

package com.li.servlet.response;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet1 extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Servlet1 doGet");

        /*重定向给服务s2*/
        resp.sendRedirect("servlet2");
    }
}

Servlet2.java

package com.li.servlet.response;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet2 extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("Servlet2");
        System.out.println("Servlet2 doGet");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值