response.getWriter().write()和 response.getWriter().print()的区别 以及 PrintWriter对象 和 out对象 的区别

2023-11-11

感谢原文作者:krismile__qh
原文链接:https://blog.csdn.net/krismile__qh/article/details/89926001

一、response.getWriter().write()和

response.getWriter().print()的区别
response.getWriter()返回的是PrintWriter,这是一个打印输出流

response.getWriter().write()response.getWriter().print()是响应给客户端的东西,如果不用ajax接收将数据放在合适的位置,就会在浏览器上生成一个新的页面来显示内容

print

response.getWriter().print(),不仅可以打印输出文本格式的(包括html标签)还可以将一个对象以默认的编码方式转换为二进制字节输出

writer

response.getWriter().writer(),只能打印输出文本格式的(包括html标签)不可以打印对象
客户端演示代码:

<head>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){     
            $("#button1").click(function(){             
                $.get("AJAXServer",null,function(data){                 
                    alert(data);                
                    $("#info").html(data);            
                });            
            });    
        })
    </script>
</head>
<body>
    <input type="button" id="button1" value="点我获取服务器响应信息" onclick="a()";/>
</body>

输出对象服务器端代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {              
    Person person = new Person();              
    person.setName("sjl");             
    response.getWrier().print(person);
}

运行结果

server.Person@5bd5ab 
//如果使用response.getWriter().writer(),则代码会报错

总结:

(1)、write()仅支持输出字符类型数据,字符、字符数组、字符串等
(2)、print()可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出

二、response.getWriter()获得的PrintWriter对象和out对象的区别

(1)、outresponse.getWriter的类不一样,一个是JspWriter,另一个是java.io.PrintWriter

(2)、执行原理不同:

JspWriter相当于一个带缓存功能的printWriter,它不是直接将数据输出到页面,而是将数据刷新到response的缓冲区后再输出response.getWriter直接输出数据(response.print()),所以(out.print)只能在其后输出。

(3)、out为jsp的内置对象,刷新jsp页面,自动初始化获得out对象,所以使用out对象是需要刷新页面的
response.getWriter()响应信息直接输出到网页上,当响应结束时它自动被关闭,与jsp页面无关,无需刷新页面
形象的比喻:当我们调用response.getWriter()这个对象同时获得了网页的画笔,这时你就可以通过这个画笔在网页上画任何你想要显示的东西。

(4)、outprint()方法和println()方法在缓冲区溢出并且没有自动刷新时候会产生ioexception
response.getWrite()方法的printprintln中都是抑制ioexception异常的,不会有

javascript ioexception out.println("");

方法并不能也页面布局换行,只能领html代码换行,要实现页面布局换行可以:out.println("</br>");

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

response.getWriter().write()和 response.getWriter().print()的区别 以及 PrintWriter对象 和 out对象 的区别 的相关文章

随机推荐

  • 微信停止为苹果服务器,艰难选择!微信和支付宝如果停止在苹果手机上使用,会选择谁?...

    再次艰难选择 微信和支付宝如果停止在苹果手机上使用 会选择谁 文 帆辰科技 支付宝和微信支付如果停止在苹果手机上使用你会同意吗 同不同意并不会对微信和支付宝的决策取到作用 不过我们可以来谈谈苹果手机如果不能使用微信和支付宝你还会不会使用 苹
  • 火力全开!华为云发布三大新品,提供一站式数据库智能服务

    摘要 当传统数据库搭上智能的便车 会怎样 为期三天的 2018 华为全联接大会已经圆满结束 但惊喜还在继续 智能 见未来 当印象中机房一排排摆满设备的传统数据库搭上智能的便车 又会演绎出一幅怎样的画卷 不妨看看本届 HC 大会上华为云数据库
  • 新浪微博 [异常问题] 414 Request-URL Too Large

    新浪微博 异常问题 414 Request URL Too Large 浏览器上打开新浪微博 或则日志是返回结果提示 414 Request URL Too Large原因 因同IP访问微博页面过多 IP被微博限制访问解决方法 1 更改本机
  • servlet实现的三种方式

    摘要 本次讲解的内容是关于Servlet实现的三种方式 1 通过继承Servlet接口来实现构造自己的Servlet类 由于提供的Servlet是一个接口 所以我们需要重写 覆盖 Servlet接口的所有方法 代码实现 servlet方法的
  • python图像分析_Python图像处理

    作者 Garima Singh 编译 VK 来源 Git Connected 以前照相从来没有那么容易 现在你只需要一部手机 拍照是免费的 如果我们不考虑手机的费用的话 就在上一代人之前 业余艺术家和真正的艺术家如果拍照非常昂贵 并且每张照
  • MySQL-内连接、外连接和全连接

    连接过程 连接过程首先要确定第一个表 称为驱动表 驱动表上查询的每一条记录分别需要到被驱动表上查找符合过滤条件的记录 因此驱动表只需要访问一次 被驱动表可能需要访问多次 内连接 对于内连接的两个表 驱动表中的记录在被驱动表中找不到匹配的记录
  • php echo换行

  • 前端终于要破局了!

    正文 前段时间 掘金热帖 放心 前端死不了 在前端圈疯传 百度前端大佬表明 前端技术是依托于互联网行业的 只要行业还在 它就会有用武之地 就会有价值 总的来说 技能跟上发展 前端就不会死 谁掌握得更深 应用得更好 谁就更容易脱颖而出 为此
  • Spark报Total size of serialized results of 12189 tasks is bigger than spark.driver.maxResultSize

    一 异常信息 Total size of serialized results of 12189 tasks is bigger than spark driver maxResultSize 1024M Total size of ser
  • [万能解决问题]MATLAB has encountered an internal problem and needs to close.

    1 错误的描述及解决办法 使用Matlab和C 混合编程时 即编写完mex文件 调用时 经常会提示下面的错误 触发上述错误的情况 1 如果一进入mexFunction函数就报错 即不会命中函数中设置的任何断点 也会报错 那么说明 你忘记了将
  • Keil5的仿真调试

    Keil5基本的仿真调试操作 首先点击魔法棒 然后输入你板子上所用的晶振 然后进入debug 然后选择 Use Simulator 然后点击OK 然后点击调试按钮 然后就会出现调试页面 我这里是已经把汇编窗口给挪到右侧了 你第一次打开可能是
  • 红黑树详解

    1 红黑树的概念 红黑树 是一种二叉搜索树 但在每个结点上增加一个存储位表示结点的颜色 可以是Red或 Black 通过对任何一条从根到叶子的路径上各个结点着色方式的限制 红黑树确保没有一条路径会比其他路径长出俩倍 因而是接近平衡的 红黑树
  • 【C】数组的地址

    目录 一维数组 二维数组 数组的地址和数组首元素地址相同 只有在sizeof 和 的情况下 取出的是整个数组的地址 其他情况下都是首元素地址 一维数组 sizeof 有 无 二维数组 sizeof 有 无 注意 这里二维数组的一个元素中是两
  • Docker高级——网络配置

    Docker网络 默认网络 安装 Docker 以后 会默认创建三种网络 可以通过 docker network ls 查看 root test docker network ls NETWORK ID NAME DRIVER SCOPE
  • html自定义列表第三层嵌套,搜索引擎优化一般不抓取三层以上的表格嵌套

    一 DIV CSS的网页制作对 SEO 的优势 由于国外都流行用DIV CSS来制作网页 这点与大多国内的企业站点用TABLE不同 所以想谈一下DIV CSS的网页制作对 SEO 的优势有哪些 这些都是比较于TABLE而言的 DIV CSS
  • Python爬虫实战:2020最新京东商品数据爬虫保姆式教程(小白也能懂)!

    Python爬虫 基于Scrapy爬取京东商品数据并保存到mysql且下载图片 一 项目准备 二 网页及代码分析 三 完整代码 一 项目准备 创建scrapy京东项目 scrapy startproject Jingdong cd Jing
  • QT setWindowFlags函数

    Qt Widget 是一个窗口或部件 有父窗口就是部件 没有就是窗口 Qt Window 是一个窗口 有窗口边框和标题 Qt Dialog 是一个对话框窗口 Qt Sheet 是一个窗口或部件Macintosh表单 Qt Drawer 是一
  • 小程序 function(res)与(res) =>的区别

    前者不可使用 this setData cameraImg res tempImagePath 后者可以使用 this setData cameraImg res tempImagePath 如果在一个对象的方法里面
  • acadacad经典工作空间.cuix_自定义还原CAD“经典”绘图空间?(适用2021~~2015版本)...

    你已选中了添加链接的内容 本文由小8整理首发 版权归本公众号所有 如有侵 请自行删除 在位编辑器 软件安装 应用技巧 图库资料 视频教程 很多小伙伴经常问怎样切换 经典空间 的问题了 从CAD2015版本开始 官方已经取消 AutoCAD
  • response.getWriter().write()和 response.getWriter().print()的区别 以及 PrintWriter对象 和 out对象 的区别

    感谢原文作者 krismile qh 原文链接 https blog csdn net krismile qh article details 89926001 一 response getWriter write 和 response g