tags:

views:

30

answers:

0

I am using Ireport 3.0.0 in Eclipse. I call a servlet to show the Ireport viewer, but it shows my report in JasperViewer itself. My code:

////////////////////////////////////////////////////
import java.io.IOException;

import java.sql.*;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

import java.io.File;
import net.sf.jasperreports.view.JasperViewer;

public class IReportController extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Connection con = null;
        JasperViewer jasperViewer = null;
        try
        {
            String drive="org.postgresql.Driver";
            String url="jdbc:postgresql://localhost:5432/person";
            String user="postgres";
            String pass="root";
            Class.forName(drive);
            con = DriverManager.getConnection(url,user,pass);
        }
        catch(Exception conn_exp)
        {
            System.out.print("DB Connection error : " +conn_exp);
        }

        try {
            Map parameters = new HashMap();
            Long pm_man_id = new Long(2);
            parameters.put("pm_man_id", pm_man_id);
            //String file = realPath(request) + "\\report\\report2.jasper";
            String file = realPath(request) + "\\report\\report2.jrxml";
            JasperDesign jasperDesign = JRXmlLoader.load(file);
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,con);


            jasperViewer = new JasperViewer(jasperPrint,false);
            jasperViewer.setVisible(true);
        }
        catch(java.awt.HeadlessException jah)
        {
            out.print("java.awt.HeadlessException : '"+jah+"'");
        }
        catch(Exception exp_view)
        {
            out.print("View Error : '" + exp_view +"'");
        }
    }
    public static String realPath(HttpServletRequest request)
    {
       request.getPortletSession().getPortletContext().getRealPath("");
        String realPath = request.getSession().getServletContext().getRealPath("");
        return realPath;
    }
}
///////////////////////////////////////////////////

But it only shows on the server. When a client calls it, it doesn't run in the client, but it runs in the server. Can you explain or resolve my problem?

related questions