`
小峰子
  • 浏览: 105595 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

<转>PrintWriter 与 ServletOutputStream的区别

阅读更多

1. PrintWriter是以字符为单位,对所有的信息进行处理,而ServletOutputStream仅对二进制的资料进行处理。
2. PrintWriter在输出字符文本时内部需要将字符串转换成某种字符集编码的字节数组,使用他的好处就是不需要自己来完成从字符串到字节数组的转换。 转换的字符集编码是通过设置setContentTpye或setCharacterEncoding或setLocale等方法实现的;使用 ServletOutputStream对象直接从一个字节输入流中读取出来,然后再原封不动的输出到客服端。
3. 这两个方法相互排斥,只能调用其一,如果要用,则要在换方法之前调用flush(),将缓冲区数据冲掉。
4. PrintWriter自动清空缓冲区的功能被使能时(构造函数中autoFlush置为true),仅当println()方法被调用时才自动清缓冲区,而不是像PrintStream一样遇到一个换行符就清缓冲。 

两种方法的取舍:
使 用PrintWriter会占用一些系统开销,因为它是为处理字符流的输出输出功能。因此PrintWriter应该使用在确保有字符集转换的环境中。换 句话说,在你知道servlet返回的仅仅是二进制数据时候,应该使用ServletOutputStream,这样你可以消除字符转换开销,当 servlet容器不用处理字符集转换的时候。

附:写文件最佳组合  
  PrintWriter   out   =   new   PrintWriter(  
          new   BufferedWriter(  
                new   FileWriter(filename)))  
  PrintWriter   提供print系方法  
  BufferedWriter   提供缓冲,用以加速  
  FileWriter   用于写文件

分享到:
评论

相关推荐

    AIC的Java课程1-6章

    第3版 机械工业出版社&lt;br&gt; 教学内容和要求&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;Java 入门 高 中 易&lt;br&gt;变量和运算符 高 高 中&lt;br&gt;控制结构...br&gt;IO和串行化 高 中 难&lt;br&gt;知识点 重要程度 使用频度 难度&lt;br&gt;&lt;br&gt;第1章...

    网站登录页面代码实例(JSP+Servlet+JavaBean)

    out.println("&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr&gt;&lt;center&gt;&lt;font color=red size=12&gt;&lt;B&gt;"); try...{ UserBean user=new UserBean(); if(user.check(name,pword)) out.println("登陆成功"); else out.println("登陆失败"); }...

    使用ajax实现无刷新分页

    sbtext.append("&lt;p&gt;&lt;a href='javascript:doAjax(1)' &gt;首页&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href='javascript:doAjax("+(pagebean.getPageIndex()+1)+")'&gt;下一页&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href='javascript:doAjax("+pageCount+")'&gt;最后一页&lt;/...

    SimpleServlet.zip

    out.println("&lt;h1&gt;欢迎来到开心水果店购物&lt;/h1&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;hr&gt;"); out.println("&lt;form action=\""); out.println(response.encodeURL("cart")); out.println("\"method=\"POST\"&gt;"); out.println...

    网站登录页面实例

    out.println("&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr&gt;&lt;center&gt;&lt;font color=red size=12&gt;&lt;B&gt;"); try...{ UserBean user=new UserBean(); if(user.check(name,pword)) out.println("登陆成功"); else out.println("登陆失败"); }...

    网上书城 购物系统 jsp

    out.println(" &lt;HEAD&gt;&lt;TITLE&gt;A Servlet&lt;/TITLE&gt;&lt;/HEAD&gt;"); out.println(" &lt;BODY&gt;"); out.print(" This is "); out.print(this.getClass() + this.getServletConfig().getServletContext().getInitParameter...

    简单的servlet增,删,改,查

    &lt;td&gt;&lt;a href='addUser.jsp'&gt;添加&lt;/a&gt;&nbsp; &lt;a href='&lt;%=basePath%&gt;DelUserServlet?id=&lt;%=users.getId()%&gt;'&gt;删除&lt;/a&gt;&nbsp; &lt;a href='updateUser.jsp'&gt;更新&lt;/a&gt;&nbsp; &lt;a href="login.jsp"&gt;登陆&lt;/...

    医院管理系统.rar

    out.println(" &lt;HEAD&gt;&lt;TITLE&gt;A Servlet&lt;/TITLE&gt;&lt;/HEAD&gt;"); out.println(" &lt;BODY&gt;"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" &lt;/...

    基于JAVa的网上商城项目完整源码.zip

    out.println(" &lt;HEAD&gt;&lt;TITLE&gt;A Servlet&lt;/TITLE&gt;&lt;/HEAD&gt;"); out.println(" &lt;BODY&gt;"); out.print(" This is "); out.print(this.getClass() + this.getServletConfig().getServletContext().getInitParameter...

    jfreechart-1.0.4.jar jfreechart-1.0.4-swt.jar

    &lt;div align="cente"&gt;&lt;P&gt;&lt;font size="4" face="楷体_GB2312"&gt;&lt;strong&gt;&lt;font color="#0099ff"&gt;招生统计信息&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt; /p&gt; &lt;/div&gt; &lt;% //设置生成饼状图 int i=0; String[] area={"南京市","镇江市",...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    第1个上传组件commons-fileupload =============commons-fileupload ============... &lt;tr&gt;&lt;td align="center"&gt;&lt;input name="upload" type="submit" value="开始上传"/&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt;

    jsp网上投票系统myeclipse开发

    out.println(" &lt;HEAD&gt;&lt;TITLE&gt;add vote&lt;/TITLE&gt;&lt;/HEAD&gt;"); out.println(" &lt;BODY&gt;"); String title=request.getParameter("title"); String stile=request.getParameter("stile"); String startTime=request...

    Servlet查询数据库案例--Query(java源码)

    out.println("&lt;head&gt;&lt;title&gt;DB Query&lt;/title&gt;&lt;/head&gt;\n" + "&lt;body bgcolor=white&gt;&lt;h1&gt;DB Query&lt;/h1&gt;\n" + "&lt;form&gt;&lt;b&gt;Query: &lt;/b&gt;&lt;input name='q'&gt;" + "&lt;input type=submit&gt;&lt;/form&gt;"); // See if a ...

    Java_EE_Udemy36:阅读可用航班清单

    Java_EE_Udemy36 在FlightService中读取可用航班的列表: ... List&lt;Flight&gt; fList = (List&lt;Flight&gt;) fs.getFlights(); request.setAttribute("flight_list", fList); PrintWriter out = response.get

    java 实现多线程服务器

    * &lt;p&gt;Title: 多线程服务器&lt;/p&gt; * &lt;p&gt;Description: 本实例使用多线程实现多服务功能。&lt;/p&gt; * &lt;p&gt;Copyright: Copyright (c) 2003&lt;/p&gt; * &lt;p&gt;Filename: &lt;/p&gt; * @author 杜江 * @version 1.0 */ class moreServer ...

    tomcat环境变量配置

    out.println("&lt;/title&gt;&lt;/head&gt;&lt;body&gt;"); out.println("&lt;h1&gt;Hello,World!&lt;/h1&gt;"); out.println("&lt;/body&gt;&lt;/html&gt;"); } } 然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servl et....

    java练习题

    初学java的可以边学边练,效果盛佳!..."&gt; &lt;option value="qq"&gt;QQ&lt;/option&gt; &lt;option value="bmw"&gt;宝马&lt;/option&gt; &lt;option value="ff"&gt;法拉利&lt;/option&gt; &lt;/select&gt; &lt;div id="d1"&gt;&lt;/div&gt; &lt;/body&gt; &lt;/html&gt;

    通讯小程序

    clientOutputStreams = new ArrayList&lt;PrintWriter&gt;(); try{ ServerSocket serverSock = new ServerSocket(888); while(true){ Socket clientSocket = serverSock.accept(); PrintWriter writer = new ...

    java一个论坛的源码

    &lt;br&gt; */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. &lt;br&gt; * * This method is called ...

    Jsp文件上传下载(工具类源码)

    .println("&lt;p /&gt;&lt;a href=\"upload2.jsp\" target=\"_top\"&gt;返回&lt;/a&gt;"); return; } long now = System.currentTimeMillis(); // 根据系统时间生成上传后保存的文件名 String prefix = String.valueOf(now); /...

Global site tag (gtag.js) - Google Analytics