|
|
|
JSP + выгрузка PDF через Jasper
|
|||
|---|---|---|---|
|
#18+
Задача в следующем - необходимо выгружать клиенту файл в формате pdf на основе запроса из БД. Наткнулся на Jasper и набросал класс. В eclipse класс отрабатывает как надо. Теперь хочу этот на базе этого класса создать jsp. Набросал следующий код: автор <%@ page language='java' contentType='Text/html' %> <%@ page import= " oracle.jdbc.*, java.lang.*, java.sql.Connection, java.sql.DriverManager, java.sql.PreparedStatement, java.sql.ResultSet, java.sql.SQLException, java.util.HashMap, net.sf.jasperreports.engine.JRException, net.sf.jasperreports.engine.JRResultSetDataSource, net.sf.jasperreports.engine.JasperCompileManager, net.sf.jasperreports.engine.JasperExportManager, net.sf.jasperreports.engine.JasperFillManager, net.sf.jasperreports.engine.JasperPrint, net.sf.jasperreports.engine.JasperReport" %> <% public static void rrr() throws SQLException { Connection conn = null; ResultSet resultSet = null; PreparedStatement statement = null; System.out.println("Starting"); try { Class.forName("oracle.jdbc.driver.OracleDriver"); String query = "select * from emp"; conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:my_DB", "test", "test"); statement = conn.prepareStatement(query); resultSet = statement.executeQuery(); JasperReport jasperReport = JasperCompileManager .compileReport("reports/classic.jrxml"); JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, new HashMap(), new JRResultSetDataSource( resultSet)); JasperExportManager.exportReportToPdfFile(jasperPrint, "reports/classic.pdf"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (JRException e) { e.printStackTrace(); } finally { try { statement.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } System.out.println("Done."); } %> <HTML> <HEAD> <TITLE> Test jsp page </TITLE> </HEAD> <BODY> <pre> <% rrr() %> </pre> </BODY> </HTML> Использую Tomcat 5.5. Для задания Classpath использую вкладку Configure>Java>Java Classpath, куда вписываю пути к требуемым jar файлам, например: авторC:\Program Files\Apache Software Foundation\Tomcat 5.5\bin\bootstrap.jar; c:\Jasper\dist\jasperreports-2.0.0.jar; c:\ora92_client\jdbc\lib\classes12.jar Закидываю файл в Apach ипри попытке доступа получаю следующее: авторorg.apache.jasper.JasperException: Unable to compile class for JSP Generated servlet error: Only a type can be imported. oracle.jdbc.driver.OracleDriver resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JRException resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JRResultSetDataSource resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JasperCompileManager resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JasperExportManager resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JasperFillManager resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JasperPrint resolves to a package Generated servlet error: Only a type can be imported. net.sf.jasperreports.engine.JasperReport resolves to a package На вид, проблемы с Classpath, но исправить их не могу. В общем то это и не особо волнует, хотя и неприятно. Волнует работоспособна ли jsp сама по себе? Мой classpath: "C:\Program Files\QuickTime\QTSystem\QTJava.zip";"c:\ora92_client\jdbc\lib\classes12.jar"; "c:\Jasper\dist\jasperreports-2.0.0.jar"; "c:\Program Files\Java\jre1.6.0_01\lib\" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 18:16:39 |
|
||
|
JSP + выгрузка PDF через Jasper
|
|||
|---|---|---|---|
|
#18+
А почему бы не прочитать в документации Tomcat-а, как там ищутся файлы. Твой CLASSPATH работать не будет (хотя если его задать кое-где в Tomcat-е то будет, но это не нужно - достаточно поместить куда надо jar-ы oт Jasper Reports и ODBC. Я бы мог указать прямо, куда вставлять, но нахожусь в недоумении, почему никто не хочет читать документацию. Кроме документации на сайте Tomcata (раздел Classloading) в интернете можно найти книжки по Tomcat-у 5 и 6 (по 5 лучше, но и по 6 полезна). Там смотреть темы Class loaders. Сам пример несовершенный - в JSP напихано много Java-кода. Это плохой стиль - желательно, чтобы в JSP были только теги разметки. Более пристойный пример - в виде сервлета - найдётся в книжке JasperReports for Java Developers, хотя это и не относится к ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 20:03:09 |
|
||
|
JSP + выгрузка PDF через Jasper
|
|||
|---|---|---|---|
|
#18+
Опечатку допустил - вместо ODBC имелся ввиду Oracle JDBC. В общем, скопировать куда надо classes12.jar и jasper-сколько-там.jar и никакого CLASSPATH не править. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 22:28:42 |
|
||
|
JSP + выгрузка PDF через Jasper
|
|||
|---|---|---|---|
|
#18+
Все очень просто. В директории Tomcat есть папка с твоими проектами, по умолчанию она "Root". В ней ты найдешь "WEB-INF". Это директория конфигурации корня всех твоих проектов. Все классы, которые ты используешь в своих JSP, JSF, Servlet проектах, ты обязан здесь прописать. Библиотеки классов(*.jar) нужно разместить в директории "lib". Попробуй. Удачи! Сколькораз вы читали "А сейчас можете откинутся на спинку вашего кресла..."? И вам это не надоело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 09:39:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34756887&tid=2144787]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 304ms |
| total: | 438ms |

| 0 / 0 |
