why does it show nullpointerexception at the time of dispatching?
 
import is ok
public class SubModelActionServlet extends HttpServlet {
        Connection conn=null;
        Statement stmt=null;
        ResultSet res=null;
        InitialContext ic=null;
        RequestDispatcher rd=null;
    protected void processRequest(HttpServletRequest request,
HttpServletResponse response)     throws ServletException, IOException
{
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
conn=(Connection)request.getSession().getAttribute("connection");
        if(conn==null)
        {
            try
            {
                ic= new InitialContext();
                DataSource
ds=(DataSource)ic.lookup("jdbc/proformaInvoice");
                conn=ds.getConnection();
                request.getSession().setAttribute("connection",conn);
            }catch(NamingException ne){}
            catch(SQLException se){}
            catch(Exception e){}
        }
        int action
=Integer.parseInt(request.getParameter("hidAction"));
        switch(action)
        {
            case 1:
                    createSubModel(request,response);
rd=getServletContext().getRequestDispatcher("/SubModelView.jsp");
                    break;
            case 2:
rd=getServletContext().getRequestDispatcher("/SubModelView.jsp");break;
            case 3:
rd=getServletContext().getRequestDispatcher("/SubModelView.jsp");break;
        }
        try{rd.forward(request,response);}
        catch(Exception e){out.write(e)}      //here it shows null
pointer exception. why?
//from second page, it successfully dispatch
    }
    private void createSubModel(HttpServletRequest
request,HttpServletResponse response)
    {
        String query="";
        Vector<ConcreteSubModelDTO> vSubModel=new
Vector<ConcreteSubModelDTO>();
        int mIndex=Integer.parseInt(request.getParameter("cmbModel"));
        int SIndex=0;
        PreparedStatement pstmt=null;
        String subModel=request.getParameter("txtSubModel");
        query="select max(\"SIndex\") from \"SubModelMaster\" ";
            try
            {
                stmt=conn.createStatement();
                res=stmt.executeQuery(query);
                while(res.next())
                {
                    SIndex=res.getInt(1);
                }
                SIndex++;
            }
            catch(SQLException se){}
    }
    protected void doGet(HttpServletRequest request,
HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    protected void doPost(HttpServletRequest request,
HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }