Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простейшее веб приложение с использованием JasperR, Web Application JasperReport 
:(
    Опции темы
DanteJ
Дата 27.9.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.9.2010

Репутация: нет
Всего: нет



Доброго дня всем.
Мне необходимо создать веб приложение которое получив от скажем get запроса параметры, вставит эти параметры в необходимый темплейт.
Например, такие 3 запроса:
http://localhost:8080/testJP1/testjp1?name...p;surname=Test2
для него будет использован темплейт1. И соответствующие значение в темплейте заменятся на значения параметров запроса.

http://localhost:8080/testJP1/testjp1?name...t2&dir=home
для него будет использован темплейт2. И соответствующие значение в темплейте заменятся на значения параметров запроса.

Ну и еще вариант для запроса 3 соответственно темплейт3.

Что я делаю:
1) Создал в IReport jrxml, пока что без каких -то заменяемых мест. 

Код

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="rep1" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch">
            <staticText>
                <reportElement x="133" y="45" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[test1234567]]></text>
            </staticText>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>



В нетбеансе создал веб приложение и туда добавил все jar из jasperreport из папки dist, lib.

написал такой сервлет, но он падает на строке:
JasperReport js1 = JasperCompileManager.compileReport(context.getRealPath("/rep1.jrxml"));

проверял при помощи System.out.
Причем файл /rep1.jrxml лежит в корне приложения.
код сервлета: 

Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ars.testjp;

import java.io.*;
import java.lang.System;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;



/**
 *
 * @author Ruslan
 */
public class testjp1 extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        try {

            try{

                System.out.println("rrr");
                ServletContext context = this.getServletConfig().getServletContext();
System.out.println("rrr2");
                JasperReport js1 = JasperCompileManager.compileReport(context.getRealPath("/rep1.jrxml"));
                System.out.println("rrr3");
            }
            catch (JRException ex) {
                ex.printStackTrace();
       }

            
        } finally { 
            out.close();
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}



Также хотелось бы потом пример jrxml в котором потом можно будет сделать замену на необходимое значение из значения параметра get запроса.
З.Ы.
Я новичок в Java , так что пожалуйста поподробней.
PM MAIL   Вверх
DanteJ
Дата 27.9.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.9.2010

Репутация: нет
Всего: нет



Ошибку я не вижу.
Думаю что падает на этом шаге так как в System.out пишет
rrr
rrr2

а "rrr3" не пишет.
Также если подскажите как это можно посмотреть всмысле ошибку, я посмотрю.

System.out.println("rrr");
ServletContext context = this.getServletConfig().getServletContext();
System.out.println("rrr2");
JasperReport js1 = JasperCompileManager.compileReport(context.getRealPath("/rep1.jrxml"));
System.out.println("rrr3");


При помощи нетбеанса создаю war file и кидаю его в томкат. Запускаю томкат и приложение деплоится. потом кидаю в папку это приложения в корень rep1.jrxml и запускаю сервлет. В броузере ничего не видно.
Консоль томката, которая запускаетя при старте добавляет
rrr
rrr2

Ошибку никакую не пишет

Может это вам поможет разобраться
PM MAIL   Вверх
XoJIoD
Дата 28.9.2010, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



1. Раз не выводит rrr3 значит падает в 53 строчке.
попробуйте 
вместо
Код

...
            catch (JRException ex) {
                ex.printStackTrace();
       }
...


Код

...
        catch (Throwable e) {
            e.printStackTrace(System.out);
        }
...

2. Вместо System.out.println("rrr"); прикрутили бы какой-нибудь логер.
3. И ресурс наверно лучше бы брать MyServlet.class.getResourceAsStream(name)
4. И названии класса можно сделать с большой буквы ))
5. Можно еще в дебаге пройтись по этому коду...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.