Bonjour
J'ai créé un servlet qui est censé récupérer des données dans une base de données sql server 2005 et les afficher ensuite.Mais lorsque je clique sur le bouton "afficher" de la page "index.html",j'ai le message d'erreur suivant:

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException

note The full stack traces of the exception and its root causes are available in the GlassFish v3 logs.
GlassFish v3
Voici la page "index.html":


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Find Employee Information</title>
    </head>
    <body>
        <h1>Find Employee Information</h1>
        <form name="FormAjout" action="EmployeeDetails" method="POST">
            <input type="text" name="id" value="" size="50" />
            <input type="submit" value="Envoyer" />
        </form>
    </body>
</html>
Et voici la classe servlet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
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 javax.swing.JOptionPane;
 
/**
 *
 * @author Blaugrana
 */
@WebServlet(name="EmployeeDetails", urlPatterns={"/EmployeeDetails"})
public class EmployeeDetails extends HttpServlet {
 
static int i;
Connection con;
PrintWriter out;
ResultSet rs;
 
 
    public void init()
    {
     i = 0;
     con = null;
     out = null;
     rs = null;
    }
 
    /** 
     * 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");
 
 
    } 
 
    // <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 {
         i++;
        out = response.getWriter();
 
        out.println("<B>You are no. " +i+" to visit this site.</B><BR><BR>");
       // PrintWriter out = response.getWriter();
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                         con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=CraySystems", "sa", "passer");
            //con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=CraySystems", "sa", "passer");
            PreparedStatement psmt = null;
            String query = null;
            query = "select id_client, nom, prenom from client where id_client=?";
            psmt = con.prepareStatement(query);
            psmt.setInt(1, Integer.parseInt(request.getParameter("id")));
            rs = psmt.executeQuery();
            out.println("<B><center>Client détails</center></B><BR><BR>");
            ResultSetMetaData rsmd = rs.getMetaData();
            int colcount = rsmd.getColumnCount();
            out.println("<table align = center border = 1 cellpadding = 2>");
            out.println("<tr>");
            for(int i =1; i <=colcount; i++)
            {
             out.println("<th>"+ rsmd.getColumnLabel(i)+"</th>");
            }
            out.println("</tr>");
            while(rs.next())
            {
             out.println("<tr>");
             out.println("<td>"+rs.getString("id_client")+"</td>");
              out.println("<td>"+rs.getString("nom")+"</td>");
               out.println("<td>"+rs.getString("prenom")+"</td>");
             out.println("</tr>");
            }
             out.println("</table>");
             out.println("</body>");
            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet EmployeeDetails</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet EmployeeDetails at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
            */
        } catch (ClassNotFoundException ex) {
           Logger.getLogger(EmployeeDetails.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(EmployeeDetails.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(EmployeeDetails.class.getName()).log(Level.SEVERE, null, ex);
            }
            out.close();
            try {
                rs.close();
            } catch (SQLException ex) {
                Logger.getLogger(EmployeeDetails.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
 
    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
 
}