在实际应用中,打印是一项常用的必备功能。在JSP的项目开发中,如何实现打印功能呢?方法有很多,当然实现的难易也不同。本文介绍两种简单的实现方法:第一种方法,将JSP的运行结果生成为Word文档或Excel文档,利用office自身的打印功能;第二种方法,通过DOM设定需要打印的页面部分,再通过JavaScript函数print()调用浏览器自带的打印功能。
以下通过实例进行说明。
一、 方法一的实例
以图1所示的效果为例。图1中显示了需要打印的数据格式和数据内容。
图1
步骤:
1.先通过Word文档建立图2所示的形式,将相应的word文档另存为“htm”或“html”网页文件。
图2
2.将上述网页文件后缀名改为.jsp。以编码方式打开文件后,看见很多代码,这些代码是由word自动生成的,与常规的html代码不太相同,我们无须太多关注。
3.在上述jsp文件中添加以下代码:
<%@ page contentType="application/msword;charset=GBK" %>
4.为了能够打印不同学生的数据,实际的准考证编号、姓名等等数据由数据库提供。也就是说,学生在网上报名参加比赛,填写自己的基本信息,最后由系统生成准考证号、考场、座位号。不管怎样,这些数据都保存的数据库中。由于篇幅所限,如何进行网上报名,填写考生基本信息,如何自动生成准考证号、考场、座位号,本实例不进行讨论。只着重讨论如何提取出数据,填写在相应的位置上。
设计如表1所示的数据表t_info。
字段名称 | 类型 | 长度 | 说明 | 备注 |
id | int | 4 | 自动增加,主键 | 记录号 |
name | char | 4 | 非空 | 姓名 |
studentid | char | 10 | 非空 | 学号 |
department | varchar | 12 | 非空 | 系别 |
grade | char | 4 | 非空 | 年级 |
major | varchar | 20 | 非空 | 专业 |
room | int | 2 |
| 考场 |
seat | int | 2 |
| 座位 |
exam_id | char | 11 |
| 准考证号 |
5.在上述jsp文件中,添加与数据库查询操作相关的代码。具体如下(2-31行所示):
6.将要打印的数据填写到具体的位置上。
(1)填写考试年份(172-175行)
(2)填写准考证号(223行)
(3)填写其他数据。
(4)填写代码,关闭与数据库的连接。
7.启动服务器,输入http://127.0.0.1:8080/xxx/demo11.jsp?ID=xx进行查看(这里假设前述JSP文件名为demo11.jsp,传入的ID值为记录号,由登录报名的考生实际决定),弹出如下窗口:
可以直接“打开”,也可以“保存”。
8.在打开第7步得到的word文档后,利用Word自带打印功能进行打印操作。
小结:此方法8个步骤,看起来十分繁琐,其实不然。实际上就是2个步骤:先定义Word文档并另存为html文件,然后改为JSP文件并填入JSP脚本片段。
通过Excel进行打印的做法类似,不再赘述。
二、 方法二的实例
以图3为例。打印页面中的表格。
图3
具体代码如下:
实际应用时,<table>的具体形式根据实际情况制定,24行、28行这些数据实际由数据库中读取。也就是说,在上述代码的基础上,添加实际的JSP脚本即可。
其他的控制打印的方法也很多,基本原理是一致的:设置格式、动态填入需打印的实际数据