导出数据库中的表为PDF格式(freemark+jdbc+springMVC)

来源:互联网 发布:lte中mr优化案例 编辑:程序博客网 时间:2024/06/07 00:55
导出数据库中的表为PDF格式(freemark+jdbc+springMVC)一、点击页面左侧菜单栏超链接到数据库中查询所有表    1、ftl页面    <li><a href="${basePath}/user/index.shtml"><i class="fa fa-home"></i> <span>表</span></a></li>2、controller中@RequestMapping("user")    public class UserCoreController extends BaseController {    @RequestMapping(value="index",method=RequestMethod.GET)    public ModelAndView userIndex(ModelMap map) {        List list = new DBoperator().findAllTable();//调用数据库操作类查询数据库所有表        List<Tables> tables = new ArrayList();      //把查询出来的list保存到类型为Tables的List中        for (int i = 0; i < list.size(); i++) {            Tables table = new Tables();            table.setTableName(list.get(i).toString());            tables.add(table);        }        map.put("tables", tables);        return new ModelAndView("user/index");    }}   3、查询出的数据显示到ftl页面中:    <h1 align="center">导出报表为PDF文档</h1>    <table class="table table-striped table-hover table-bordered" id="editable-sample">           <thead>                <tr>                    <th>tableName</th><tr>           </thead>           <tbody>                <#list tables as tb>                     <tr class="">                        <td><a href='ExportPDFServlet?tableName=${tb.tableName?default('未设置')}'>${tb.tableName?default('未设置')}</a></td>                    </tr>                </#list>           </tbody>     </table> 二、点击每一个表名字,把该表导出为PDF格式    1、pom.xml中添加依赖包       <!--PDF生成jar包 -->        <dependency>            <groupId>com.itextpdf</groupId>            <artifactId>itextpdf</artifactId>            <version>5.5.6</version>        </dependency>        <dependency>            <groupId>com.itextpdf.tool</groupId>            <artifactId>xmlworker</artifactId>            <version>5.5.6</version>        </dependency>        <dependency>            <groupId>com.itextpdf</groupId>            <artifactId>itext-asian</artifactId>            <version>5.2.0</version>        </dependency>    2、web.xml中配置href要请求类的路径   <servlet>  <servlet-name>ExportPDFServlet</servlet-name>  <servlet-class>com.sojson.user.ExportPDFServlet</servlet-class>   </servlet>   <servlet-mapping>  <servlet-name>ExportPDFServlet</servlet-name>  <url-pattern>/ExportPDFServlet</url-pattern>   </servlet-mapping>        3、生成PDF的工具类 package com.sojson.common.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;/** * * * @author Administrator Apr 7, 2017 9:55:31 AM * @version 1.0 */public class DBoperator {    public Connection getConnection() {        Connection con = null;        String user = "root";        String password = "aA123456";        try {            Class.forName("com.mysql.jdbc.Driver"); // 注册数据库驱动            String url = "jdbc:mysql://127.0.0.1:3306/settlement_system"; // settlement_system数据库名            con = DriverManager.getConnection(url, user, password);        } catch (Exception ex) {            ex.printStackTrace();        }        return con;    }    // (3)在DBoperator类中编写findAllTable()方法,查询出数据库中的表名称,关键代码如下所示:    public List findAllTable() {        Connection con = null; // 声明Connection对象        Statement st = null; // 声明Statement对象        ResultSet rs = null; // 声明ResultSet对象        List list = new ArrayList(); // 声明List对象        try {            con = getConnection(); // 获取数据库连接            st = con.createStatement(); // 创建st对象            rs = st.executeQuery("show tables");// 执行SQL语句            while (rs.next()) { // 遍历结果集                list.add(rs.getString(1)); // 将表名称加入list列表            }            rs.close(); // 关闭rs            st.close(); // 关闭st            con.close(); // 关闭conn        } catch (Exception e) {            e.printStackTrace();        } finally {            con = null;        }        return list; // 返回list列表    }    // (4)在DBoperator类中编写getResultSet()方法,用于跟据表名称查询表中信息,并获取查询结果集,关键代码如下所示:    public ResultSet getResultSet(String tableName) {        Connection con = null; // 声明Connection对象        Statement st = null; // 声明Statement对象        ResultSet rs = null; // 声明Resultset对象        try {            con = getConnection(); // 获取数据库连接            st = con.createStatement(); // 创建st对象            rs = st.executeQuery("SELECT * FROM " + tableName);// 执行SQL语句        } catch (Exception e) {            e.printStackTrace();        }        return rs; // 返回rs对象    }    // (5)在DBoperator类中编写freeCon()方法,用于释放数据库连接,关键代码如下所示:    public void freeCon(ResultSet rs) {        Connection con = null;        try {            Statement st = rs.getStatement(); // 获取st对象            con = st.getConnection(); // 获取con对象            rs.close(); // 关闭rs对象            st.close(); // 关闭st对象            con.close(); // 关闭con对象        } catch (SQLException ex) {            ex.printStackTrace();        } finally {            con = null;        }    }}          

0 0
原创粉丝点击