2013-04-26 4 views
5

Non riesco ad accedere al mio servlet che chiamo con un modulo. Ho controllato l'arborescenza, web.xml e il modulo, ma non riesco a vedere alcun problema. Uso Eclipse con un "progetto dinamico web".Tomcat dà 404 quando chiamo il mio servlet

c'è la mia arborescence:

enter image description here

mio web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
<display-name>Z-ProjetJ2EE</display-name> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 
<servlet> 
    <description></description> 
    <servlet-name>CommandeServlet</servlet-name> 
    <servlet-class>controleur.CommandeServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>CommandeServlet</servlet-name> 
    <url-pattern>/urlCommandeServ</url-pattern> 
</servlet-mapping> 
</web-app> 

La mia forma (ho provato l'URL completo, ma non ha le opere):

<form action="/urlCommandeServ" method="post"> 

E il mio servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String cat = request.getParameter("categorie"); 
    Float prix = Float.parseFloat(request.getParameter("prix")); 
    response.sendRedirect("CreerCommande?cat=" + cat+"&prix="+prix); 

Non ho avuto alcun errore in eclissi e la cartella di registro in tomcat è vuota. Potresti aiutarmi ?

EDIT:

C'è il mio errore:

Error 404

Io sono d'accordo per le risposte circa il mio errore sul response.sendRedirect, ma questo non è il vero soggetto del mio errore :) Anche se cancella tutto il mio codice su doPost, ho questo errore, invece di una pagina bianca.

risposta

3

Cambia la tua <form> html

<form action="urlCommandeServ" method="post"> 

Quando stai invio a /urlCommandeServ che stai chiedendo Tomcat (o il vostro server web) per cercare un'applicazione web chiamato urlCommandeServ che non c'è e quindi si ottiene un 404.

+0

Ahahah è sempre così, solo un taglio, grazie! – toshiro92

4

Quando si esegue il reindirizzamento è necessario includere .jsp.

response.sendRedirect("CreerCommande.jsp?cat=" + cat+"&prix="+prix); 

invece di:

response.sendRedirect("CreerCommande?cat=" + cat+"&prix="+prix); 

aggiungere anche il vostro contextpath all'URL nella forma.

<form action="<%=request.getContextPath()%>/urlCommandeServ" method="post"> 
+0

Il reindirizzamento funzionerà anche se abbiamo .jsp o meno. Ho provato in un altro progetto e non ci sono incidenze sul reindirizzamento – toshiro92

+0

Questa linea non è il problema, anche se cancello questa linea o la cambi alla tua soluzione, ho ancora l'errore 404 e la cartella dei registri in Tomcat è vuota quindi .. – toshiro92

+0

@ toshiro92 Vedi aggiornamento. –

0

Perché non usi RequestDispatcher?

RequestDispatcher dispatcher = request.getRequestDispatcher("yourPage.jsp"); 
if (dispatcher != null){ 
    dispatcher.forward(request, response); 
} 
+0

Suppongo che stia provando a fare un 'POST-REDIRECT-GET' –

+0

@SotiriosDelimanolis Sto considerando che l'OP sta imparando lo sviluppo di JSP/Servlet e pensa che lui/lei dovrebbe sempre fare il reindirizzamento per tutto. –

+1

@LuiggiMendoza Senza dubbio l'OP sta facendo alcuni tentativi ed errori. Immagino che debba capire lo scopo di ogni tipo di invio. Rodrigo, se aggiungi qualche dettaglio sul perché farebbe un 'avanti', potrebbe essere più utile a lui. –

0

See: SO Link

"Se questo codice funziona nel vostro J2SE mi è necessario avere un file JAR da qualche parte contenente la classe com.mysql.jdbc.Driver (il cosiddetto driver JDBC). Questo JAR deve essere visibile in Tomcat. Quindi, suggerirei di collocare mysql-jdbc.jar nella posizione fisica nella directory/WEB-INF/lib del tuo progetto. "