Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSP + выгрузка PDF через Jasper / 5 сообщений из 5, страница 1 из 1
27.08.2007, 18:16:39
    #34756028
Ashitkin.Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSP + выгрузка PDF через Jasper
Задача в следующем - необходимо выгружать клиенту файл в формате 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\"
...
Рейтинг: 0 / 0
27.08.2007, 20:03:09
    #34756280
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSP + выгрузка PDF через Jasper
А почему бы не прочитать в документации Tomcat-а, как там ищутся файлы. Твой CLASSPATH работать не будет (хотя если его задать кое-где в Tomcat-е то будет, но это не нужно - достаточно поместить куда надо jar-ы oт Jasper Reports и ODBC. Я бы мог указать прямо, куда вставлять, но нахожусь в недоумении, почему никто не хочет читать документацию.

Кроме документации на сайте Tomcata (раздел Classloading) в интернете можно найти книжки по Tomcat-у 5 и 6 (по 5 лучше, но и по 6 полезна). Там смотреть темы Class loaders.

Сам пример несовершенный - в JSP напихано много Java-кода. Это плохой стиль - желательно, чтобы в JSP были только теги разметки. Более пристойный пример - в виде сервлета - найдётся в книжке JasperReports for Java Developers, хотя это и не относится к ошибке.
...
Рейтинг: 0 / 0
27.08.2007, 22:28:42
    #34756445
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSP + выгрузка PDF через Jasper
Опечатку допустил - вместо ODBC имелся ввиду Oracle JDBC. В общем, скопировать куда надо classes12.jar и jasper-сколько-там.jar и никакого CLASSPATH не править.
...
Рейтинг: 0 / 0
28.08.2007, 09:39:43
    #34756887
rogov_vasya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSP + выгрузка PDF через Jasper
Все очень просто. В директории Tomcat есть папка с твоими проектами, по умолчанию она "Root". В ней ты найдешь "WEB-INF". Это директория конфигурации корня всех твоих проектов. Все классы, которые ты используешь в своих JSP, JSF, Servlet проектах, ты обязан здесь прописать. Библиотеки классов(*.jar) нужно разместить в директории "lib".

Попробуй. Удачи!

Сколькораз вы читали "А сейчас можете откинутся на спинку вашего кресла..."? И вам это не надоело?
...
Рейтинг: 0 / 0
28.08.2007, 10:43:04
    #34757073
Ashitkin.Alex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSP + выгрузка PDF через Jasper
Спасибо. Все заработало, файл выгружается. Насчет того, чтобы вынести java код из тела страницы, это я согласен на 200%. Этим я щас и займусь. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSP + выгрузка PDF через Jasper / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]