本系列博客汇总在这里:请求对象 request 和响应对象 response 汇总


目录


HttpServletResponse

  1. request 是请求对象,而 response 是响应对象。

  2. HttpServletResponse 功能介绍

  3. response 对象的功能分为以下四种:
    (1)设置响应头信息:addHeader(“reFresh”, “5;URL=xxxx”);
    (2)发送状态码:sendError(404);
    (3)设置响应正文:getWriter().print(“fdsfdsa”);
    (4)重定向:sendRedirect(“path”);

  4. 设置状态码及其他方法
    (1)response.setContentType(“text/html;charset=utf-8”):设置响应类型为 html,编码为 utf-8,处理相应页面文本显示的乱码;
    (2) response.setCharacterEncoding(“utf-8”):如果响应类型为文本,那么就需要设置文本的编码类型,然后浏览器使用这个编码来解读文本。注意,如果没有设置 contentType,那么浏览器会认为 contentType 为 text/html,如果没设置编码,那么默认为 ISO-8859-1编码。所以以上两点在使用 response 返回结果之前必须设置。
    (3)response.setStatus(200):设置状态码;
    (4)response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat 会跳转到固定的错误页面去,但可以显示错误信息。

  5. 设置响应头信息
    (1)response.setHeader(“contentType”, “text/html;charset=utf-8”):与 setContentType() 方法的功能相同。setContentType() 方法属于便捷方法;
    刷新(定时重定向):
    (2)response.setHeader(“Refresh”,“5; URL=http://www.baidu.com”):5 秒后自动跳转到百度主页。
    请求对象 request 和响应对象 response(9)_ HttpServletResponse_xml

  6. 以上操作,完整源码
    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.wyx.servlet.HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    </web-app>

    1.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>请求转发</title>

    </head>

    <body>
    <h1>请求转发html页面</h1>
    <form action="/reqresp_demo4/hello" method="post">
    姓名:<input name="name" type="text"><br>
    年龄:<input name="age" type="text"><br>
    简介:<textarea rows="10" cols="20" name="introduce"></textarea>
    <br>

    <input type="submit" value="提交">
    </form>
    <hr>
    <h1>请求转发servlet</h1>
    <form action="/reqresp_demo4/hello1" method="post">
    姓名:<input name="name" type="text"><br>
    年龄:<input name="age" type="text"><br>
    简介:<textarea rows="10" cols="20" name="introduce"></textarea>
    <br>

    <input type="submit" value="提交">
    </form>
    </body>
    </html>

    HelloServlet

    package com.wyx.servlet;

    import java.io.IOException;
    import java.util.Enumeration;

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

    public class HelloServlet extends HttpServlet
    {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {

    // response.setHeader("reFresh", "3;URL=/reqresp_demo5/1.html");
    // response.setStatus(404);
    // response.setStatus(404, "页面找不到");
    // response.sendError(404);
    // response.sendError(500, "后台错误");
    // response.getWriter().print("<h1>success</h1>");

    // 处理response相应的中文乱码问题
    /*response.setContentType("text/html;charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().print("<h1>成功</h1>");*/

    // 重定向,又叫客户端的跳转,显著特征是地址栏发生变化
    // response.sendRedirect("/reqresp_demo5/1.html");
    response.sendRedirect("http://www.baidu.com");

    /**
    * forward和redirect的区别 forward:是服务器端的跳转,地址栏不发生变化 redirect:客户端的跳转,地址栏发生变化
    */
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
    {
    doGet(req, resp);
    }
    }

    工程文件下载

如有错误,欢迎指正!