i want to test my simple web app which i attempt to produce a report coming from my database(mysql). the webapp should produce a pdf file when i click generate report i get this error

Java Code:
java.lang.NullPointerException

	at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2265)
	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2278)
	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
	at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:53)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:200)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:376)
	at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfStream(JasperRunManager.java:163)
	at app.Servlet.jasperServlet.processRequest(jasperServlet.java:49)
	at app.Servlet.jasperServlet.doPost(jasperServlet.java:95)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
	at java.lang.Thread.run(Thread.java:662)
here is my code first is the xml file:

Java Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">


<jasperReport name="DbReport">

    <queryString>
        <![CDATA[SELECT * FROM students]]>
    </queryString>

    <field name="firstname" class="java.lang.String"/>
    <field name="lastname" class="java.lang.String"/>

    <pageHeader>
        <band height="30">
            <staticText>
                <reportElement x="0" y="0" width="69" height="24"/>
                <textElement verticalAlignment="Bottom"/>
                <text>
                    <![CDATA[First Name: ]]>
                </text>
            </staticText>
            <staticText>
                <reportElement x="140" y="0" width="79" height="24"/>
                <text>
                    <![CDATA[Last Name: ]]>
                </text>
            </staticText>
        </band>
    </pageHeader>

<detail>
<band height="30">
    <textField>
        <reportElement x="0" y="0" width="69" height="24"/>
        <textFieldExpression class="java.lang.String">
            <![CDATA[$F{firstname}]]>
        </textFieldExpression>
    </textField>
    <textField>
        <reportElement x="140" y="0" width="69" height="24"/>
        <textFieldExpression class="java.lang.String">
            <![CDATA[$F{lastname}]]>
        </textFieldExpression>
    </textField>
</band>
</detail>
</jasperReport>
then my JSP:

Java Code:
<%-- 
    Document   : index
    Created on : 02 27, 11, 2:10:48 PM
    Author     : kuroro15
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Jasper Demonstration!</h1>
        <form action="jasperServlet" method="post">
            <input type="submit" value="generate report">
        </form>
    </body>
</html>
last is my servlet:

Java Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package app.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import javax.servlet.ServletOutputStream;

import net.sf.jasperreports.engine.JasperRunManager;

@WebServlet(name = "jasperServlet", urlPatterns = {"/jasperServlet"})
public class jasperServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        //PrintWriter out = response.getWriter();
        try {

            Connection con;

            
            ServletOutputStream servletOutputStream = response.getOutputStream();
            InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/DbReport.jasper");
            
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String username = "root";
                String password = "admin";
                String url = "jdbc:mysql://localhost:3306/jaspertest";
                con = DriverManager.getConnection(url, username, password);

                
                JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, new HashMap(), con);
                con.close();
                response.setContentType("application/pdf");
                servletOutputStream.flush();
                servletOutputStream.close();
            } catch (Exception e) {
// display stack trace in the browser
                StringWriter stringWriter = new StringWriter();
                PrintWriter printWriter = new PrintWriter(stringWriter);
                e.printStackTrace(printWriter);
                response.setContentType("text/plain");
                response.getOutputStream().print(stringWriter.toString());
            }


        } 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>
}
thnx in advance