我们最先要讨论的功能是:如何将信息返还给客户端?
HttpServletResponse对象就是负责此功能的。
但是,HttpServletResponse对象本甚只产生一个空的HTTP响应。
传回自定义的内容需要使用getwriter()或者OutPrintStream()方法,以获取输出流来写入相应内容。
这两个方法分别返回合适的对象来传送文本或者二进制内容给客户端。
在一个指定的HttpServletResponse对象中,只能使用这两个方法之一。如果同时使用会导致异常抛出。
1. 传递文本流
printWriter out =response.getWriter(); out.println("<h>输出文本信息</h>");
2. 传递二进制文件
以下是一个产生图像和发送字节的一段代码示例:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("image/jpeg"); //创建图像 int width=200; int height =30; BufferedImage image =new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //得到画图上下文 Graphics2D g =(Graphics2D)image.getGraphics(); //填充背景 g.setColor(Color.gray); g.fillRect(0, 0, width, height); //画字符串 g.setColor(Color.BLACK); g.setFont(new Font("Dialog",Font.PLAIN,14)); g.drawRect(0, 0, width, height);
//画边框
g.setColor(Color.BLACK);
g.drawRect(0, 0, width-1, height-1);
//隐藏内容
g.dispose();
//发回图片
ServletOutputStream sos = resp.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
}
可以看到JPEG格式的图像在每次请求时被动态地创建在页面上