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 用于写文件
分享到:
相关推荐
第3版 机械工业出版社<br> 教学内容和要求<br>知识点 重要程度 使用频度 难度<br>Java 入门 高 中 易<br>变量和运算符 高 高 中<br>控制结构...br>IO和串行化 高 中 难<br>知识点 重要程度 使用频度 难度<br><br>第1章...
out.println("<br><br><br><hr><center><font color=red size=12><B>"); try...{ UserBean user=new UserBean(); if(user.check(name,pword)) out.println("登陆成功"); else out.println("登陆失败"); }...
sbtext.append("<p><a href='javascript:doAjax(1)' >首页</a></p> <p><a href='javascript:doAjax("+(pagebean.getPageIndex()+1)+")'>下一页</a></p> <p><a href='javascript:doAjax("+pageCount+")'>最后一页</...
out.println("<h1>欢迎来到开心水果店购物</h1></td></tr></table><hr>"); out.println("<form action=\""); out.println(response.encodeURL("cart")); out.println("\"method=\"POST\">"); out.println...
out.println("<br><br><br><hr><center><font color=red size=12><B>"); try...{ UserBean user=new UserBean(); if(user.check(name,pword)) out.println("登陆成功"); else out.println("登陆失败"); }...
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass() + this.getServletConfig().getServletContext().getInitParameter...
<td><a href='addUser.jsp'>添加</a> <a href='<%=basePath%>DelUserServlet?id=<%=users.getId()%>'>删除</a> <a href='updateUser.jsp'>更新</a> <a href="login.jsp">登陆</...
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" </...
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass() + this.getServletConfig().getServletContext().getInitParameter...
<div align="cente"><P><font size="4" face="楷体_GB2312"><strong><font color="#0099ff">招生统计信息</font></strong></font>< /p> </div> <% //设置生成饼状图 int i=0; String[] area={"南京市","镇江市",...
第1个上传组件commons-fileupload =============commons-fileupload ============... <tr><td align="center"><input name="upload" type="submit" value="开始上传"/></td></tr> </table> </form> </body> </html>
out.println(" <HEAD><TITLE>add vote</TITLE></HEAD>"); out.println(" <BODY>"); String title=request.getParameter("title"); String stile=request.getParameter("stile"); String startTime=request...
out.println("<head><title>DB Query</title></head>\n" + "<body bgcolor=white><h1>DB Query</h1>\n" + "<form><b>Query: </b><input name='q'>" + "<input type=submit></form>"); // See if a ...
Java_EE_Udemy36 在FlightService中读取可用航班的列表: ... List<Flight> fList = (List<Flight>) fs.getFlights(); request.setAttribute("flight_list", fList); PrintWriter out = response.get
* <p>Title: 多线程服务器</p> * <p>Description: 本实例使用多线程实现多服务功能。</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: </p> * @author 杜江 * @version 1.0 */ class moreServer ...
out.println("</title></head><body>"); out.println("<h1>Hello,World!</h1>"); out.println("</body></html>"); } } 然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servl et....
初学java的可以边学边练,效果盛佳!..."> <option value="qq">QQ</option> <option value="bmw">宝马</option> <option value="ff">法拉利</option> </select> <div id="d1"></div> </body> </html>
clientOutputStreams = new ArrayList<PrintWriter>(); try{ ServerSocket serverSock = new ServerSocket(888); while(true){ Socket clientSocket = serverSock.accept(); PrintWriter writer = new ...
<br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called ...
.println("<p /><a href=\"upload2.jsp\" target=\"_top\">返回</a>"); return; } long now = System.currentTimeMillis(); // 根据系统时间生成上传后保存的文件名 String prefix = String.valueOf(now); /...