HttpServletResponse接口

HttpServletResponse接口


HttpServletResponse接口是ServletResponse的子接口,HttpServlet类的重载service()方法及doGet()和doPost()等方法都有一个HttpServletResponse类型参数:

protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException

HttpServletResponse 接口提供了与 HTTP 协议相关的一些方法,Servlet 可通过这些方法来设置HTTP响应头或向客户端写Cookie。

addHeader(String name, String value):向HTTP响应头中加入一项内容。

sendError(int sc):向客户端发送一个代表特定错误的HTTP响应状态代码。

sendError(int sc, String msg):向客户端发送一个代表特定错误的HTTP响应状态代码,并且发送具体的错误消息。

setHeader(String name, String value):设置HTTP响应头中的一项内容。如果在响应头中已经存在这项内容,那么原先所做的设置将被覆盖。

setStatus(int sc):设置HTTP响应的状态代码。

addCookie(Cookie cookie):向HTTP响应中加入一个Cookie。

在HTTPServletResponse接口中定义了一些代表HTTP响应状态代码的静态常量,如下所示。

HTTPServletResponse. SC_BAD_REQUEST:对应的响应状态代码为400。

HTTPServletResponse. SC_FOUND:对应的响应状态代码为302。

HTTPServletResponse. SC_METHOD_NOT_ALLOWED:对应的响应状态代码为405。

HTTPServletResponse. SC_NON_AUTHORITATIVE_INFORMATION:对应的响应状态代码为203。

HTTPServletResponse. SC_FORBIDDEN:对应的响应状态代码为403。

HTTPServletResponse. SC_NOT_FOUND:对应的响应状态代码为404。

HTTPServletResponse. SC_OK:对应的响应状态代码为200。

例程4-4的HelloServlet类的doGet()方法先得到username请求参数,对其进行中文字符编码转换,然后判断username参数是否为null。如果满足条件,就直接返回一个代表特定错误的 403 响应状态代码;否则,就通过 HttpServletResponse 对象的getWriter()方法得到一个PrintWriter对象,然后通过PrintWriter对象来输出一个HTML文档。

例程4-4  HelloServlet.java

public class HelloServlet extends HttpServlet {
     
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//获得username请求参数
String username=request.getParameter("username");
    /*字符编码转换。
HTTP请求的默认字符编码为ISO-8859-1,如果请求中包含中文,
需要把它转换为GB2312中文编码。*/
    if(username!=null)
username=new String(username.getBytes("ISO-8859-1"),"GB2312");
    if(username==null){
     
//仅仅为了演示response.sendError()的用法。
response.sendError(response.SC_FORBIDDEN);
return;
}
    //设置HTTP响应的正文的MIME类型及字符编码
response.setContentType("text/html;charset=GB2312");
    /*输出HTML文档*/
PrintWriter out = response.getWriter();
out.println("<html><head><title>HelloServlet</TITLE></head>");
out.println("<body>");
out.println("你好: "+username);
out.println("</body></html>");
    System.out.println("before close():"+response.isCommitted()); //false
out.close(); //关闭PrintWriter
System.out.println("after close():"+response.isCommitted());  //true
}
}

Tips

为了节省篇幅,本书列出的部分类的源代码省略了开头的 package 语句和import语句。在本书附赠光盘中提供了范例的完整源代码。

以上HelloServlet类利用HttpServletResponse对象的setContentType()方法来设置响应正文的MIME类型及字符编码。“text/html”表示响应正文为HTML文档,“GB2312”表示响应正文采用中文字符编码。以下3种方式是等价的,都能设置HTTP响应正文的MIME类型及字符编码:

//方式一
response.setContentType("text/html;charset=GB2312");
//方式二
response.setContentType("text/html");
response.setCharacterEncoding("GB2312");
//方式三
response.setHeader("Content-type","text/html;charset=GB2312");

HelloServlet类的service()方法最后调用PrintWriter对象的close()方法关闭底层输出流,该方法在关闭输出流之前会先把缓冲区内的数据提交到客户端。因此在调用PrintWriter 对象的 close()方法之前,response.isCommitted()方法返回 false;而在调用PrintWriter对象的close()方法之后,response.isCommitted()方法返回true。HelloServlet类的service()方法中的“System.out.println(…)”语句把内容打印到Tomcat服务器所在的控制台。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100461.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pstools使用教程

    pstools使用教程pstools是sysinternals开发的一个功能强大的nt/2k远程管理工具包。官方网址为http://www.sysinternals.com/下载地址为http://www.sysinternals.com/files/Pstools.zipPstools主要包含以下程序:(1)psexecpsexec是一个远程执行工具…

    2025年5月22日
    1
  • 计算机网络各协议总结_计算机网络实验总结

    计算机网络各协议总结_计算机网络实验总结计算机网络协议全面总结一、OSI七层协议物理层:很久很久以前,那时候还没有现在的外星人超级电脑,或者华为的P30。比较调皮的小明想要把自己机器上写好的一些个人游戏心得(如何玩好王者农药)发给小红(校花),希望博得芳心。小明个人比较勤,游戏总结心得总结的比较详细(大概有100M)。但是到底怎么才能从自己的机器上传给小红的机器呢,进过一番打听,他发现远在太平洋另一端的科学家已经发明了一种技术物…

    2022年10月3日
    0
  • SQL语句大全大全(经典珍藏版)

    SQL语句大全大全(经典珍藏版)SQL语句大全–语句功能–数据操作SELECT–从数据库表中检索数据行和列INSERT–向数据库表添加新数据行DELETE–从数据库表中删除数据行UPDATE–更新数据库表中的数据-数据定义CREATETABLE–创建一个数据库表DROPTABLE–从数据库中删除表ALTERTABLE–修改数据库表结构CREATEVIEW

    2022年5月19日
    44
  • 协同过滤推荐算法研究

    针对电子商务发展的需求,本文通过对协同过滤推荐算法的文献综述,提出传统过滤算法无法适用于用户多兴趣下的推荐问题进行了剖析,提出了一种基于用户多兴趣的协同过滤推荐改进算法,分析了基于用户多兴趣的协同过滤推荐算法的电子商务系统。
      一、引言
      电子商务迅猛发展的时代已经到来,网上购物的交易方式正在改变着传统的商业模式。2007年,电子商务的交易额达到了8900亿人民币。面对如此众多的商品,无疑会大大增加用户发现满意商品的困难。于是个性化推荐系统逐渐成为电子商务领域中的一项重要

    2022年4月8日
    40
  • idea怎么远程debug_idea 多线程调试

    idea怎么远程debug_idea 多线程调试1,远程DEBUG的必要性由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还是不少的,首先,日志的分析是一项比较耗时的工作;其次,现有的日志记录不一定能反映出问题,你可能需要多次重复这个过程(分析日志->猜测问题->加日志->部署->获取日志)来慢慢逼近问题。倘若是测试环境,我们还多了一项可..

    2022年9月11日
    0
  • Centos7安装配置Apache+PHP+Mysql+phpmyadmin

    Centos7安装配置Apache+PHP+Mysql+phpmyadminCentos7安装配置Apache+PHP+Mysql+phpmyadmin

    2022年4月23日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号