servlet输出PDF到请求端
大部分时候会从HttpServletResponse取得PrintWriter实例,使用println()方法对浏览器进行字符输出,但是有时候需要对浏览器进行字节输出,这就需要用到getOutputStream()方法来取得ServletOutputStream实例。它是OutputStream的子类。下面用例子说明,浏览器请求返回pdf类型的文件。
package com.sunyongxing.servlet; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/pdf.do") public class PdfServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String password = request.getParameter("password"); if ("123456".equals(password)) { response.setContentType("application/pdf"); InputStream in = getServletContext().getResourceAsStream( "/WEB-INF/1.pdf"); OutputStream out = response.getOutputStream(); byte[] b = new byte[1024]; int length = -1; while ((length = in.read(b)) != -1) { System.out.println(length); out.write(b, 0, length); } in.close(); out.close(); } } }
当请求pdf.do的servlet,密码符合时就会返回pdf文件,红色标记的第一行是设置返回的类型,这里设置的是pdf类型,当浏览器不知道是什么类型时。通常会弹出另存为的提示。第二行是取得读取文件的类,第三行是取得输出的类,最后通过io操作对浏览器进行写出响应。
浙公网安备 33010602011771号