1、响应体设置文本

PrintWriter writer=response.getWriter();

获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。

关于设置中文乱码问题:

response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过response的setCharacterEncoding(String charset)设置response的编码;

但我们发现客户端还是不能正常显示文字

原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,

1)我们可以手动修改浏览器的编码是UTF-8

2)我们还可以在代码中指定浏览器解析页面的编码方式,通过response的setContentType(String type)方法指定页面解析时的编码是UTF-8,response.setContentType("text/html;charset=UTF-8");

图解原因:

具体代码:

在实际开发中,通常使用封装后的response.setContentType("text/html;charset=UTF-8");

以上就可以解决页面输出中文乱码问题。

2、响应体设置字节

ServletOutputStream out=response.getOutputStream();

获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,再由Tomcat服务器将字节内容组成Http响应返回给浏览器。

案例:页面输出图片a.jpg

 package com.itheima.context;

 import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ByteServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//使用response获得字节输出流
ServletOutputStream out=response.getOutputStream();
//获得服务器上的图片
String realPath=this.getServletContext().getRealPath("a.jpg");
InputStream in=new FileInputStream(realPath); int len=0;
byte[] buffer=new byte[1024];
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
} in.close();
out.close();
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

运行程序,客户端页面显示图片a

Servlet学习(五)——通过response设置响应体及中文乱码问题的更多相关文章

  1. 通过response设置响应体

    (1)响应体设置文本 PrintWriter getWriter() 获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将res ...

  2. node.js学习4--------------------- 根据不同路径来响应内容,以及中文乱码的解决

    /** * http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器 */ // 导包 const http=require("http"); //创建 ...

  3. JMeter学习笔记(十八)——返回的响应数据出现中文乱码_解决方案

    一.问题描述 使用jmeter过程中遇到了请求返回的响应数据出现中文乱码 二.原因分析 当没有对响应数据or响应页面设置支持解析中文的编码时,JMeter则会以默认的ISO-8859-1格式解析,而其 ...

  4. Jmeter运行后,查看结果树中的响应数据出现中文乱码。

    参考:https://blog.csdn.net/qq_15228737/article/details/82597482 https://baike.baidu.com/item/UTF-8/481 ...

  5. response重定向的网址中有中文乱码的解决办法

    在servlet都是使用response对象来重定向到另一个页面:response.sendRedirect("--").现在遇到一个问题,网页的地址是带中文的,当执行到跳转命令的 ...

  6. Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码

    先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.h ...

  7. 运行servlet跳转页面变成了下载界面,或者中文乱码

    1.是这个地方的问题,敲错了Setvlet不能识别HTML文件,所以变成了下载.2.这个也是防止中文乱码 //设置响应内容类型response.setContentType("text/ht ...

  8. Servlet学习五——流的分发

    在上一节中有提到,流的传输,可以考虑Stream,但如果需要同时分发流和其它信息,,就需要再考虑其它方式了. 在coding中,服务端查询结果都是以gson进行传输,当需要传输一个语音并且同时需要传输 ...

  9. jsp/servlet学习五之jsp表达式语言初窥

    EL表达式是jsp中最常用的表达式之一.EL表达式以${开头,并以}结束,例如${1+1}.el表达式可以返回任意类型的值,如果el表达式的结果是一个带属性的对象,则可以利用[]或者.运算来访问该属性 ...

随机推荐

  1. BZOJ 4516 后缀数组+ST+set

    写了一半 没了啊啊啊 重新写的 思路: 先不考虑后缀自动机 (我不会啊) 那这道题只能用后缀数组了 先把原串倒一下 后缀->前缀 相当于每回在前面加了一个字母 求不同的子串个数 首先 正常的求子 ...

  2. Excel里的多列求和(相邻或相隔皆适用)

    最近,需要这个知识点,看到网上各种繁多复杂的资料,自己梳理个思路. 不多说,直接上干货! 简述:将L列.M列和N列,相加放到O列.(当然这里是相邻的列).同时,也可以求相隔几列的某些列相加.

  3. 在vue中使用less

    首先vue环境搭建成功 第一步: 安装 less 和less-loader 安装less依赖:npm install less less-loader --save 第二步: 修改webpack.ba ...

  4. Android 高大上的侧滑菜单DrawerLayout,解决了不能全屏滑动的问题

    DrawerLayout预览 DrawerLayout主要功能就是 实现侧滑菜单效果的功能,并且可以通过增加一些设置来实现高大上的效果,那么就请看动态图:   注意左上角那个图标,有木有很好玩,哈哈. ...

  5. 动态修改SeekBar的颜色

    方法一 1. 需求:需要改变其默认颜色,样式 2.滑竿样式 seekbar.xml <?xml version="1.0" encoding="utf-8" ...

  6. windows下git server搭建

    使用gitblit1.8搭建 首先要安装JDK 然后下载gitblit,这里给一个CSDN下载 https://download.csdn.net/download/nietzsche0/104826 ...

  7. DDD中 与Dto搭配的AutoMapper插件,摘自《NET企业级应用架构设计》

    AutoMapper插件 实现了 DTO与Model的互相映射.

  8. 使用Eclipse将项目上传至远程GitLab

    一.先将项目提交至本地仓库 1.  右击项目——Team——Share Project… 2.在弹出框中,选择Git——Next 3.在弹出框中进行如下步骤操作 4.至此,我们已经成功创建了本地GIT ...

  9. [剑指offer] 5. 用两个栈实现队列+[剑指offer]30. 包含min函数的栈(等同于leetcode155) +[剑指offer]31.栈的压入、弹出序列 (队列 栈)

    c++里面stack,queue的pop都是没有返回值的, vector的pop_back()也没有返回值. 思路: 队列是先进先出 , 在stack2里逆序放置stack1的元素,然后stack2. ...

  10. [terry笔记]GoldenGate_迁移同步_主库零停机

    ogg根据scn同步数据,源库零停机时间 本次实验与上次的区别:更加注重细节,几乎包含所有步骤,把我越到的坑都作出了说明.并且同步是由10g向11g进行同步,更加符合升级迁移需求. 如下是主要步骤: ...