zoukankan      html  css  js  c++  java
  • Servlet (HttpServletResponse)对象

    1、setStatus(int status)方法:用于设置HTTP响应消息的状态码,并生成响应状态行。响应状态行中的状态描述信息直接与状态码相关,HTTP版本由服务器确定,因此只需要通过这个方法设置了状态码就可以实现状态行的发送。正常情况下,WEB服务器会默认产生一个状态码为200的状态行。

    2、sendError(int sc)方法:用于发送表示错误信息的状态码,比如404状态码表示找不到客户端请求的资源。

      

    public void sendError(int code)throws java.io.IOException    //只发送错误信息状态码
    
    public void sendError(int code,String massage)throws java.io.IOException    //可以发送状态码和一条提示说明的文本信息,文本信息将出现在发送给客户端的正文内容中

    3、响应状态码是一个三位的十进制数:

      (1)、static int SC_OK    代表状态码200。请求成功

      (2)、static int SC_FORBIDDEN  代表状态码403。服务器接收到请求,但是拒绝对请求进行处理

      (3)、static int SC_NOT_FOUND  代表状态码404。没有找到资源

      (4)、static int SC_CONFLICT    代表状态码409。请求的资源与当前状态冲突

      (5)、static int SC_MOVED_TEMPORARILY  代表状态码302。临时使用其他资源处理当前请求,但之后的请求还是使用原来的地址

      (6)、static int SC_INTERENAL_SERVER_ERROR  代表状态码500。服务器内部发生错误

      (7)、static int SC_HTTP_VERSION_NOT_SUPPORTED  代表状态码505。服务器不支持或拒绝支持请求行中给出的HTTP版本

      (8)、static int SC_BAD_REQUEST  代表状态码400。客户端发送的请求语法有错误

    4、发送响应消息头相关的方法:addHeader()、setHeader()、addIntHeader()、setIntHeader()用于设置各种头字段。后三种用于设置字符编码。

      (1)、void addHeader(String name,String value)  

          void setHeader(String name,String value)  这两个方法都是用来设置HTTP的响应头字段。name和value分别代表响应头字段的名称和响应头字段的值。addHeader()方法可以增加同名的响应头字段;setHeader()方法会覆盖同名的响应头字段。

      (2)、void addIntHeader(String name,String value)

          void setIntHeader(String name,String value)  这两个方法专门用于设置包含整数值的响应头。避免了使用上面两个方法时需要将int类型转换为string类型的麻烦。

      (3)、void setContentLength(int len)  用于设置响应信息的实体内容大小,单位为字节。对于HTTP,这个方法就是设置ContentLenth响应头字段的值。

      (4)、void setContentType(String type)  用于设置Servlet输出内容的MIME类型,对于HTTP就是设置Content-Type响应头字段的值。

      (5)、void setLocale(Locale loc)  用于设置响应消息的本地化消息,对于HTTP就是设置Content-Language响应头字段和Content-Type头字段中的字符集编码部分。

      (6)、void setCharacterEncoding(String charset)  用于设置输出内容使用的字符编码,对于HTTP就是设置Content-Type头字段中的字符编码部分。

    5、发送响应消息体相关的方法

      (1)、getOutputStream()方法:获取字节流输出对象为ServletOutputStream类型。输出二进制格式的响应正文就可使用这个方法。

      (2)、getWriter()方法:获取字符流输出对象为PrintWriter类型。输出内容全为字符文本的网页文档用此方法。

        PrintServlet.java

    package top.zhangzimu.servlet;
    
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class PrintServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String data = "Hello!";
            OutputStream out = response.getOutputStream();     //获取输出流对象
            out.write(data.getBytes());    //输出字符串消息
    
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request,response);
    
        }
    }

      web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0"
        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_3_0.xsd">
      <servlet>
        <servlet-name>PrintServlet</servlet-name>
        <servlet-class>top.zhangzimu.servlet.PrintServlet</servlet-class>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>PrintServlet</servlet-name>
        <url-pattern>/PrintServlet</url-pattern>
      </servlet-mapping>
    
    </web-app>

    修改PrintServlet.java中的代码

            String data = "Hello!";
            
            //OutputStream out = response.getOutputStream();
            PrintWriter print = response.getWriter();
            
            //out.write(data.getBytes());
            print.write(data);        

    在浏览器中运行与之前的效果一致。

    6、虽然这两个方法都可以发送响应消息体,但是他们之间互相排斥,不可以同时使用,否则会生 java.lang.IllegalStateException异常。(非法状态)

  • 相关阅读:
    算法15 《啊哈算法》第四章 盒子装扑克-DFS深度优先搜索 递归
    算法14 leetcode28 实现 strStr() kmp
    markdown一些有用笔记
    算法11 leetcode274 有效的字母异位词
    Quantity? Quality!
    算法 10 leetcode344. 反转字符串
    JavaWeb —— JDBC Driver驱动及连接问题
    Python —— 4 习题练习
    Python —— 变量的作用域
    JavaWeb —— 文件上传
  • 原文地址:https://www.cnblogs.com/zhangzimuzjq/p/9143853.html
Copyright © 2011-2022 走看看