Servlet code for calling Jasper file to create a report in PDF
843836Mar 8 2005 — edited Apr 13 2005Hi,
I am new to jsp and servlets. I need to create report in PDF format i have created it using iReport tool,
i have copied the corresponding jasper file into the location of the class files of the servlets,and set the class path for all jar files, i am using TOMCAT 5.0 server, this my servlet code, when i try to generate the report by calling form the JSP file generate button, it comes to the servlet and gives me the Servlet error, i have not made any modifications to the web.xml file.
I have class file JasperReportExport , in the class file
//Srvlet for Creating the report
package ncmr.controller;
import ncmr.model.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
//import JasperReport.*;
public class CourseResultsReportServlet extends HttpServlet {
private DataSource dataSource;
private static final String TASK_FILL = "fill";
public void init(ServletConfig config) throws ServletException {
try {
Context init = new InitialContext();
Context ctx = (Context) init.lookup("java:comp/env");
dataSource = (DataSource) ctx.lookup("jdbc/eExamsys");
}
catch (NamingException ex) {
System.err.println("Error: "+ex.toString());
throw new ServletException("Cannot retrieve java:comp/env/jdbc/eExamsys",ex);
}
}
protected void doProcess( HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String jdbcURL=null;
String sqlDriver=null;
String sqlUser=null;
String sqlPassword=null;
String errString=null;
Connection con = null;
/*javax.servlet.ServletContext context = getServletContext();
jdbcURL = context.getInitParameter("jdbcURL");
sqlDriver = context.getInitParameter("sqlDriver");
sqlUser = context.getInitParameter("sqlUser");
sqlPassword = context.getInitParameter("sqlPassword");*/
String action = "ViewAll";
try {
action = request.getParameter("actionType");
} catch (Exception e) {
}
if (action == null) action = "ViewAll";
try {
synchronized (dataSource) {
con = dataSource.getConnection();
}
// To select the data in the JSP page
if (action.trim().equals("ViewAll")) {
try{
CountryStatesBean objBeanst = new CountryStatesBean();
CountryBean objBeanc = new CountryBean();
ExamcenterBean objBeane = new ExamcenterBean();
CourseBean objBeancr = new CourseBean();
List lstExamCentres = objBeane.getExamcenters(con);
List lstCourses = objBeancr.getCourses(con);
List lstCountries = objBeanc.getCountries(con);
String lstAllStates = objBeanst.getStates(con);
request.setAttribute("lstCountries", lstCountries);
request.setAttribute("lstAllStates", lstAllStates);
request.setAttribute("lstCourses",lstCourses);
request.setAttribute("lstExamCentres",lstExamCentres);
RequestDispatcher dis = request.getRequestDispatcher("/WEB-INF/view/ReportCourseResults.jsp");
dis.forward(request, response);
}
catch(Exception me) {
errString=(me.toString()).replaceAll("java.lang.Exception:","");
request.setAttribute("errorDetails",errString);
RequestDispatcher dis = request.getRequestDispatcher("/error.jsp");
dis.forward(request, response);
}
}
// TO generate Report on click of generate button in JSP
if (action.trim().startsWith("Generate"))
{
try{
String countryCode = request.getParameter("Country");
//String taskName = "fill";
String filename = "\\classes\\Course_Results_Rpt.jasper";
//RequestDispatcher dis = request.getRequestDispatcher("/WEB-INF/view/batch.jsp");
//dis.forward(request, response);
//if (TASK_FILL.equals(taskName))
//{
Map parameters = new HashMap();
parameters.put("Country_Code", countryCode);
JasperReportExport obj = new JasperReportExport("fill", filename, parameters);
obj.Export();
JasperReportExport obj1 = new JasperReportExport("pdf", "Course_Results_Rpt.jrprint", "Course_Results_Rpt.pdf");
obj1.Export();
//Process p1;
//Runtime rn=Runtime.getRuntime();
//p1=rn.exec("C:\\thanmaya\\jasperreports-0.6.3\\ESYS_JAVA\\buildc.bat");
//}
}
catch(Exception me) {
errString=(me.toString()).replaceAll("java.lang.Exception:","");
request.setAttribute("errorDetails",errString);
RequestDispatcher dis = request.getRequestDispatcher("/error.jsp");
dis.forward(request, response);
}
}
}
catch (Exception ex){
if (ex instanceof SQLException) {
SQLException sqlex = (SQLException) ex;
System.err.println("SQL state: "+sqlex.getSQLState());
System.err.println("Error code: "+sqlex.getErrorCode());
}
}
finally {
try { con.close();
} catch (Exception ex) {}
}
}
protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request,response);
}
protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request,response);
}
}
JasperReportExport
package ncmr.controller;
import ncmr.model.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
//import JasperReport.*;
public class CourseResultsReportServlet extends HttpServlet {
private DataSource dataSource;
private static final String TASK_FILL = "fill";
public void init(ServletConfig config) throws ServletException {
try {
Context init = new InitialContext();
Context ctx = (Context) init.lookup("java:comp/env");
dataSource = (DataSource) ctx.lookup("jdbc/eExamsys");
}
catch (NamingException ex) {
System.err.println("Error: "+ex.toString());
throw new ServletException("Cannot retrieve java:comp/env/jdbc/eExamsys",ex);
}
}
protected void doProcess( HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String jdbcURL=null;
String sqlDriver=null;
String sqlUser=null;
String sqlPassword=null;
String errString=null;
Connection con = null;
/*javax.servlet.ServletContext context = getServletContext();
jdbcURL = context.getInitParameter("jdbcURL");
sqlDriver = context.getInitParameter("sqlDriver");
sqlUser = context.getInitParameter("sqlUser");
sqlPassword = context.getInitParameter("sqlPassword");*/
String action = "ViewAll";
try {
action = request.getParameter("actionType");
} catch (Exception e) {
}
if (action == null) action = "ViewAll";
try {
synchronized (dataSource) {
con = dataSource.getConnection();
}
if (action.trim().equals("ViewAll")) {
try{
CountryStatesBean objBeanst = new CountryStatesBean();
CountryBean objBeanc = new CountryBean();
ExamcenterBean objBeane = new ExamcenterBean();
CourseBean objBeancr = new CourseBean();
List lstExamCentres = objBeane.getExamcenters(con);
List lstCourses = objBeancr.getCourses(con);
List lstCountries = objBeanc.getCountries(con);
String lstAllStates = objBeanst.getStates(con);
request.setAttribute("lstCountries", lstCountries);
request.setAttribute("lstAllStates", lstAllStates);
request.setAttribute("lstCourses",lstCourses);
request.setAttribute("lstExamCentres",lstExamCentres);
RequestDispatcher dis = request.getRequestDispatcher("/WEB-INF/view/ReportCourseResults.jsp");
dis.forward(request, response);
}
catch(Exception me) {
errString=(me.toString()).replaceAll("java.lang.Exception:","");
request.setAttribute("errorDetails",errString);
RequestDispatcher dis = request.getRequestDispatcher("/error.jsp");
dis.forward(request, response);
}
}
if (action.trim().startsWith("Generate"))
{
try{
String countryCode = request.getParameter("Country");
//String taskName = "fill";
String filename = "\\classes\\Course_Results_Rpt.jasper";
//RequestDispatcher dis = request.getRequestDispatcher("/WEB-INF/view/batch.jsp");
//dis.forward(request, response);
//if (TASK_FILL.equals(taskName))
//{
Map parameters = new HashMap();
parameters.put("Country_Code", countryCode);
JasperReportExport obj = new JasperReportExport("fill", filename, parameters);
obj.Export();
JasperReportExport obj1 = new JasperReportExport("pdf", "Course_Results_Rpt.jrprint", "Course_Results_Rpt.pdf");
obj1.Export();
//Process p1;
//Runtime rn=Runtime.getRuntime();
//p1=rn.exec("C:\\thanmaya\\jasperreports-0.6.3\\ESYS_JAVA\\buildc.bat");
//}
}
catch(Exception me) {
errString=(me.toString()).replaceAll("java.lang.Exception:","");
request.setAttribute("errorDetails",errString);
RequestDispatcher dis = request.getRequestDispatcher("/error.jsp");
dis.forward(request, response);
}
}
}
catch (Exception ex){
if (ex instanceof SQLException) {
SQLException sqlex = (SQLException) ex;
System.err.println("SQL state: "+sqlex.getSQLState());
System.err.println("Error code: "+sqlex.getErrorCode());
}
}
finally {
try { con.close();
} catch (Exception ex) {}
}
}
protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request,response);
}
protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request,response);
}
}
The error is
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRException
ncmr.controller.CourseResultsReportServlet.doProcess(CourseResultsReportServlet.java:112)
ncmr.controller.CourseResultsReportServlet.doPost(CourseResultsReportServlet.java:161)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.0.28
Help me
Tan