JavaWeb-008-ServletResponse详解

简介

  • Servlet API中定义的ServletResponse接口类用于创建响应消息。

  • HttpServletResponse是专用于HTTP协议的ServletResponse子接口,它用于封装HTTP响应消息。

  • 封装了响应信息,如果想给用户什么响应,就可以适当用这个接口的相关方法。
    1.getWrite():返回一个PrintWrite,可以用户打印信息到客户端上。
    2.setContentType(String type):设置响应类型,上面的getWrite就指向这里了
    3.更多的方法,后面学习(文件的下载可以使用方法getOutputStream())

测试代码

package mac.com;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

/*
 * 定义辅助 servlet 将响应发送到客户端的对象。servlet 容器创建 ServletResponse 对象,并
 * 将它作为参数传递给 servlet 的 service 方法。
 * 要发送 MIME 正文响应中的二进制数据,请使用 #getOutputStream 返回的 ServletOutputStream。
 * 要发送字符数据,请使用 #getWriter 返回的 PrintWriter 对象。要混合二进制数据和文本数据。
 * 例如要创建 multipart 响应,请使用 ServletOutputStream 并手动管理字符部分。
 * 可使用 #setCharacterEncoding 和 #setContentType 显式指定 MIME 正文响应的 charset,或使用 #setLocale 方法隐
 * 式指定它。显式指定优先于隐式指定。如果未指定 charset,则将使用 ISO-8859-1。
 * setCharacterEncoding、setContentType 或 setLocale 方法必须在调用 getWriter 之前,并
 * 且必须在提交采用要使用的字符编码的响应之前调用。
 */

/*
 * ServletResponse:
 *  封装了响应信息,如果想给用户什么响应,就可以适当用这个接口的相关方法。
 *  1.getWrite():返回一个PrintWrite,可以用户打印信息到客户端上。
 *  2.setContentType(String type):设置响应类型,上面的getWrite就指向这里了
 *  3.更多的方法,后面学习(文件的下载可以使用方法getOutputStream())
 */

/*
 * 还有一个子接口:HttpServletResponse
 * 涉及到的方法,都在后面讲。
 */
public class LoginServlet implements Servlet{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        
    }

    
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        
        /*
        * public void   setContentType(String type)
        * 设置将发送到客户端的响应的内容类型,如果该响应尚未提交。给定内容类型可能包含字符编码规范,
        * 例如 text/html;charset=UTF-8。如果在调用 getWriter 之前调用此方法,则只根据给定内容类型设置
        * 响应的字符编码。
        * 可重复调用此方法来更改内容类型和字符编码。如果在已提交响应之后调用此方法,则此方法没有任何效果。
        * 如果在已调用 getWriter 之后或者在已提交响应之后调用此方法,则该方法不会设置响应的字符编码。
        * 容器必须让客户端了解用于 servlet 响应的 writer 的内容类型和字符编码,如果协议提供了实现上述操作的方法。
        * 在使用 HTTP 的情况下,使用 Content-Type 头。
        * type  指定内容的 MIME 类型的 String
        */
        //1.设置响应类型
        res.setContentType("text/html;charset=UTF-8");  //html的,编码是UTF-8的
        //res.setContentType("application/msword");     //这是设置Word的,更多内容百度
        
        /*
        * public java.io.PrintWriter    getWriter() throws java.io.IOException
        * 返回可将字符文本发送到客户端的 PrintWriter 对象。
        * PrintWriter 使用 #getCharacterEncoding 返回的字符编码。
        * 如果未如 getCharacterEncoding 中所述指定响应的字符编码(即该方法只返回默认值 ISO-8859-1),
        * 则 getWriter 会将字符编码更新到 ISO-8859-1。
        * 对 PrintWriter 调用 flush() 将提交响应。
        * 可调用此方法或 #getOutputStream 编写正文,而不是两种方法都调用。
        * return    可将字符数据返回到客户端的 PrintWriter 对象。
        * Throws    UnsupportedEncodingException: 
        *   如果无法使用 getCharacterEncoding 返回的字符编码
        * Throws    IllegalStateException: 
        *   如果已对此响应对象调用 getOutputStream 方法
        * Throws    java.io.IOException: 
        *   如果发生输入或输出异常
        */
        //2.获取Write,给客户端写信息
        PrintWriter out = res.getWriter();  
        out.println("收到了");     //客户端请求之后,会得到这个响应,写在跳转的页面上  
    }
}

效果

微信公众号:JavaWeb架构师


其它


  • 源码下载
关注下方公众号,回复:javaweb_course.code
  • 欢迎加入交流群:451826376

  • 更多信息:www.itcourse.top

完整教程PDF版本下载

你可能感兴趣的:(JavaWeb-008-ServletResponse详解)