Servlet: doGet() exécuté au lieu de processRequest() ?
Bonjour à tous.
J'ai un problème au niveau d'une servlet et j'ai du mal à comprendre les méthodes doGet() et doPost(). Par ailleurs, je n'ai pas trouvé de réponse à mon problème sur le Web, alors je m'en remets à vous.
J'ai donc une Servlet, qui exécute bien la méthode processRequest() ou la méthode doPost() dans le cas où l'on utilise le formulaire de la page. J'ai ensuite voulu tester la méthode doGet() (pour récupérer des paramètres situés dans des liens sur la page), mais depuis elle est exécuté directement au lieu de processRequest().
Voici la Servlet en question:
Code:
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
| 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.SQLException;
import java.sql.Statement;
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;
@WebServlet(urlPatterns = {"/Directorio"})
public class Directorio extends HttpServlet {
private Statement statement = null;
private Connection conexion = null;
private ResultSet resultado = null;
private PrintWriter out;
private String DBUser = "root";
private String DBPass = "";
private String DBC = "com.mysql.jdbc.Driver";
private String ConnDB = "jdbc:mysql://127.0.0.1:3306/diputaciondb";
//private String ConnDB = "jdbc:mysql://172.16.61.172:3306/DB1";
private String query = "";
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException, ClassNotFoundException {
response.setContentType("text/html;charset=UTF-8");
out = response.getWriter();
try {
query = "select * from USUARIOS;";
tablaDirectorio(query);
} finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
out = response.getWriter();
out.println("WORKING?");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String param = request.getParameter("directorio-buscar");
out = response.getWriter();
if (param.length()!=0) {
query = "select * from USUARIOS where NOMBRE LIKE '%"+param+"%' or APELLIDOS LIKE '%"+param+"%' or TELEFONO LIKE '%"+param+"%';";
try {
tablaDirectorio(query);
//out.println("3"+param+"--"+query);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Directorio.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(Directorio.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
protected void tablaDirectorio(String query) throws ClassNotFoundException, SQLException {
out.println("<div id='directorio-opciones'>");
out.println("<form action='/Diputacion/busquedaDirectorio.jsp' method='post'>");
out.println("<input type='text' maxlength='20' size='45' name='directorio-buscar'>");
out.println("<input type='button' name='directorio-buscarBoton' value='Buscar en el directorio'>");
out.println("</form><br></div>");
out.println("<center><table class='directorio-table' cellspacing='0'>");
out.println("<tr><th scope='col'>Nombre</th><th scope='col'>Apellido</th><th scope='col'>Teléfono</th><th width=24></th><th width=24></th></tr>");
Class.forName(DBC);
conexion = DriverManager.getConnection(ConnDB, DBUser, DBPass);
statement = (Statement) conexion.createStatement();
resultado = statement.executeQuery(query);
while (resultado.next()) {
out.println("<tr><td>"+resultado.getString("NOMBRE")+"</td><td>"+resultado.getString("APELLIDOS")+"</td><td>"+resultado.getString("TELEFONO")+"</td>");
out.println("<td><a href='busquedaDirectorio.jsp?edit="+resultado.getString("DNI")+"'><img src='img/Modify.png' alt='Modificar usuario' width=14 height=14></a></td><td><a href='busquedaDirectorio.jsp?delete="+resultado.getString("DNI")+"'><img src='img/Erase.png' alt='Eliminar usuario' width=14 height=14></a></td></tr>");
}
resultado.close();
statement.close();
out.println("</table></center>");
}
protected void eliminarUsuario(String DNI) throws SQLException, ClassNotFoundException{
Class.forName(DBC);
Connection conn = DriverManager.getConnection(ConnDB, DBUser, DBPass);
query = "delete from USUARIOS where DNI = ?";
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setInt(1, 3);
preparedStmt.execute();
conn.close();
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
} |
Quelqu'un a une idée ou une indication ? Merci d'avance pour votre aide.