Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Простейшее веб приложение с использованием JasperReport

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

http://localhost:8080/testJP1/testjp1?name=Test1&surname=Test2&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 , так что пожалуйста поподробней.
276
01 октября 2010 года
Rebbit
1.1K / / 01.08.2005
Цитата: DanteJ
написал такой сервлет, но он падает на строке:
JasperReport js1 = JasperCompileManager.compileReport(context.getRealPath("/rep1.jrxml"));


Что значит падает?
Какой ексепшен? (пожалуйста в лог студию)

Без лога (гадая по звездам) могу припустить что проблема в том, что вы запускаете приложение не на JDK, а на JRE. (Подробности потом если угадал)

По Джасперу - вот вам прелесные статьи на легкодоступном языке
http://voituk.kiev.ua/intro-jasper-reports/

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог