建子包response,在该包下建PrintServlet,使用getOutputStream()获取输出流对象。
public class PrintServlet extends HttpServlet {
private static final long serialVersionUID = -4828923743699125782L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data = "itcast by OutputStream";
// 获取字节输出流对象
OutputStream out = response.getOutputStream();
out.write(data.getBytes());// 输出信息
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
http://localhost:8080/chapter04/PrintServlet
对doGet()方法稍作修改,使用getWriter()方法发送消息体
String data = "itcast by PrintWriter";
// 获取字节输出流对象
//OutputStream out = response.getOutputStrea
//out.write(data.getBytes());// 输出信息
// 使用getWriter()方法发送消息体
PrintWriter print = response.getWriter();
print.write(data); // 输出信息
注意: getOutputStream()和getWriter()不能同时使用,我猜因为响应时同时输出字节流与字符流,那么浏览器不好解析,因为不管什么流,传输时肯定是机器语言,也就是0或1.
分析源代码可知,源代码防止了同时使用,通过debug,分析如下:
当执行到response.getWriter()时,继续调试,如下