使用Servlet和JSP,如何读取一个pdf文档到页面上
来源:互联网 发布:推荐几个淘宝男装店铺 编辑:程序博客网 时间:2024/06/03 21:53
步骤如下
- 创建一个JSP,提供一个简易的登录功能,这个JSP的action指向了一个Servlet。
<form action="./check.do" method="get"> 用户名:<input type="text" name="username"/><br> 密码:<input type="password" name="password"/><br> <input type="submit" value="提交"/></form>
对于Servlet而言,它的作用有三点,其一是获取表单数据,其二是调用业务逻辑,其三是分发请求
- Servlet的代码如下:
package com.hardstudy.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("/check.do")public class CheckServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String password=request.getParameter("password"); if(username.trim().equals("zhangyue") && password.trim().equals("123")){// response.setContentType("text/plain"); response.setContentType("application/pdf");// InputStream inputStream = getServletContext().getResourceAsStream("/WEB-INF/hello.txt"); InputStream inputStream = getServletContext().getResourceAsStream("/WEB-INF/work.pdf"); OutputStream outputStream = response.getOutputStream(); writeObject(inputStream,outputStream); } else{ response.setContentType("text/html;charset=utf-8");// response.getOutputStream().print("张玥大傻逼!!!"); response.getWriter().print("登录失败!!!"); request.setCharacterEncoding("UTF-8"); request.getRequestDispatcher("check.jsp").forward(request, response); } } private void writeObject(InputStream is, OutputStream os){ byte[] buffer = new byte[1024]; int length = 0; try { while(-1!=(length=is.read(buffer))){ os.write(buffer, 0, length); } os.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ if(os!=null){ try { os.close(); os = null; } catch (IOException e) { e.printStackTrace(); }finally{ try { is.close(); is = null; } catch (IOException e) { e.printStackTrace(); } } } } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }}
其中核心的代码有以下几部分:
- 将响应格式设置为application/pdf格式:
response.setContentType("application/pdf");
- 根据上下文对象获取输入流(此处的路径是一个令人疑惑的地方):
getServletContext().getResourceAsStream("/WEB-INF/work.pdf");
- 根据响应对象获取输出流对象,此处的输出流为ServletOutputStream,是OutputStream的子类:
ServletOutputStream outputStream = response.getOutputStream();
然后调用一个方法,这个方法就是一个纯的对Java流的操作,将输入流输出流进行交互。最后的结果会在浏览器上显示出pdf文件。
注意:可能会出现以下问题:其一,pdf的路径不正确,获取不到输入流。其二,有的浏览器不支持pdf格式文件,需要下载后显示。
最后在浏览器显示的结果
0 0
- 使用Servlet和JSP,如何读取一个pdf文档到页面上
- 如何提取PDF文档中的一个页面
- JSP读取blob到页面上
- 在jsp页面上直接打开pdf文档
- jsp页面显示PDF文档
- .Net中,如何在页面上显示PDF文档
- .Net中如何在页面上显示PDF文档
- servlet和jsp学习指南pdf
- JSP页面提交到Servlet
- servlet跳转到jsp页面
- jsp页面转发到servlet
- JSP页面内嵌PDF文档
- JSP页面内嵌PDF文档
- JSP页面内嵌PDF文档
- JSP读取PDF文件页面输出
- servlet使用request跳转到jsp页面指定的框架
- 如何使用ABBYY FineReader 14添加文本到PDF文档
- 在一个jsp页面使用include动态包含servlet
- INF中的服务安装段落无效 解决
- android常用内容
- mysql基本语法
- POJ - 1985 Cow Marathon 奶牛马拉松 计算树的直径
- 深入浅出mysql值开发篇一
- 使用Servlet和JSP,如何读取一个pdf文档到页面上
- python中的property函数
- IntelliJ IDEA使用技巧汇总
- 关于Pixhawk中 .mk 文件的解读(一)
- Leetcode-Reorder List
- Jquery给基本控件的取值、赋值
- redis 锁机制实现防穿透
- [DP 决策单调性 || 贪心] UER #7 A.短路
- KNN