ServletResponse
* 服务器对浏览器做出的响应,将需要发送给浏览器的所有数据全部存放在此对象上。
* 发送数据,使用流操作,将所需要的数据,存放在指定的流中,数据将显示到浏览器中
* 字符流
  * response.getWriter();
* 字节流
  * response.getOutputStream();
* 当使用getOutputStream时,不能使用getWriter
  * getOutputStream() has already been called for this response
* 当使用getWriter时,不能使用getOutputStream
  * getWriter() has already been called for this response
* 总结:两个流同时只能使用一个
* 字节流:getOutputStream,一般在程序中使用具有拷贝功能等
  * 发送中文
    * 不能使用out.print(data) 发送中文数据 
    * 异常信息:java.io.CharConversionException Not an ISO 8859-1 character: 中
    *需要使用out.write(data.getBytes("UTF-8"));发送中文数据
* 字符流:getWriter,一般在程序中发送数据内容
  * 发送中文
    * out.println("中文");
    * 乱码【****】
    * response.setContentType("text/html;charset=utf-8");
    * 通知tomcat和浏览器发送数据的编码
  * 注意:
    * 设置编码时,必须放置在需要输出语句之前,建议放置在doGet或doPost第一行
    *实例:cn.itcast.response.FormServlet

请求和响应的图解

当使用getOutputStream时,不能使用getWriter 会报非法异常

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//当使用getOutputStream时,不能使用getWriter
// * getOutputStream() has already been called for this response
//当使用getWriter时,不能使用getOutputStream
// * getWriter() has already been called for this response
//总结:两个流同时只能使用一个 //字节流
ServletOutputStream out = response.getOutputStream();
out.print("abc"); //字符流
PrintWriter writer = response.getWriter();
writer.print("123"); }

response 发送中文乱码解决方法

  1. 确定发送数据的编码
  2. 通知tomcat和浏览器发送数据的编码两者统一 uTF-8
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //确定发送数据的编码,通知tomcat和浏览器发送数据的编码,两者统一 uTF-8
response.setContentType("text/html;charset=utf-8"); //将在http响应头中添加,content-type:text/html;charset=utf-8 //使用字节流 发送中文数据
ServletOutputStream out = response.getOutputStream();
String data = "中文";
// * 发送数据
out.write(data.getBytes("UTF-8")); }

  使用字符流:

	public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置响应浏览器的字符编码 : 通知tomcat和浏览器,当前servlet发送的数据的编码
response.setContentType("text/html;charset=UTF-8"); //发送中文数据 --“中文”
String data = "中文";
//字节流
ServletOutputStream out = response.getOutputStream();
//out.print(data); 不能发送中文数据 java.io.CharConversionException Not an ISO 8859-1 character: 中
out.write(data.getBytes("UTF-8")); }

  使用response向浏览器发送一个表单:

public class FormServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //将表单书发送给浏览器
// * 确定发送数据的编码
response.setContentType("text/html;charset=UTF-8");
// * 获得字符流
PrintWriter out = response.getWriter();
// * 发送数据
out.println("<form action=\"#\" method=\"post\">");
out.println("名称:<input type='text' name='username' value='凤姐'> <br/>");
out.println("密码:<input type='password' name='userpwd'> <br/>");
out.println("<input type='submit' value='提交' />");
out.println(" </form>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//当使用getOutputStream时,不能使用getWriter
// * getOutputStream() has already been called for this response
//当使用getWriter时,不能使用getOutputStream
// * getWriter() has already been called for this response
//总结:两个流同时只能使用一个

//字节流
ServletOutputStream out = response.getOutputStream();
out.print("abc");

//字符流
// PrintWriter writer = response.getWriter();
// writer.print("123");

}

response中文乱码问题:

response 使用字节流发送数据:

ServletResponse的一些知识点的更多相关文章

  1. Servlet&JSP中的知识点

    先sun提出的是Servlet体系,这个体系使得使用JAVA的程序员也能开发基于B/S架构的WEB应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种WEB应用方案.随着 ...

  2. 剑指Offer——知识点储备-J2EE基础

    剑指Offer--知识点储备-J2EE基础 9.2 jdk 1.8的新特性(核心是Lambda 表达式) 参考链接:http://www.bubuko.com/infodetail-690646.ht ...

  3. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  4. Java面试知识点总结及解析

    声明:有人说, 有些面试题很变态,个人认为其实是因为我们基础不扎实或者没有深入.本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目 ,知识面很广 ,而且这位前辈对于每个 ...

  5. Elementui实战知识点随记

    1. Elementui实战知识点随记 1.1. 表单验证 对于复杂数据,类似于对象里面包含数组,每个数组又包含多个对象,表单验证我查看了网上很多资料都说Elementui不支持,实际上,经过我官网的 ...

  6. web后台知识点整理

    五.JEE 适用于创建server端的大型的软件服务系统 1. JEE : JAVA  PLATFORM  ENTERPRISE  DEDITON 2.是一个规范集.技术集.框架集(API集) 一种技 ...

  7. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  8. ASP.NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

  9. UWP开发必备以及常用知识点总结

    一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...

随机推荐

  1. [技术]浅谈OI中矩阵快速幂的用法

    前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...

  2. CentOS Linux 新建oracle数据库实例并连接

    CentOS Linux 新建oracle数据库实例 安装好oracle之后,首先想到的那就是自己建一个库来看看效果喽. 创建的过程如下文章所说,http://blog.chinaunix.net/u ...

  3. 我的Chrome

    插件: CaretTab - New Tab Clock and Date 完全就是为了好看

  4. request.getParameter()与request.setAttribute()的区别 (转载)

    request.getParameter()与request.setAttribute()的区别 request.getParameter(),request.setAttribute()区别如下: ...

  5. TCP/IP、Http、Socket的区别与关系

    --TCP/IP.Http.Socket的区别与关系 --------------------------------------2014/05/14 网络由下往上分为 物理层.数据链路层.网络层.传 ...

  6. while补充,字符串和数字的内置方法

    一.while循环的补充 while True: name=input('please input your name: ') password=input('please input your pa ...

  7. php 单引号,双引号,反引号区别

    PHP中单引号,双引号,反引号具有不同的含义,最大的几项区别如下: 一.单引号中,任何变量($var).特殊转义字符(如"\t \r \n"等)不会被解析,因此PHP的解析速度更快 ...

  8. vs2010等宽字体设置

    VS2010自带的字体非等宽,不同行的代码采用同样的缩进空格时,可能左侧未对齐. 这个里有一款字体很帮,字体名字叫Fixedsys Excelsior 3.01,下载地址:http://www.fix ...

  9. How to make sure your machine is always online without sleep

    1. Create a "NeverOff" power plan: Control Panle->System and Security->Power Options ...

  10. jsp中一些重要的问题

    jsp [1] 简介 > HTML - HTML擅长显示一个静态的网页,但是不能调用Java程序. > Servlet - Servlet擅长调用Java程序和后台进行交互,但是它不擅长显 ...