Newsgroup: it.comp.java
Titolo: servlet

salve a tutti mi sto cimentando con le servlet in java, per motivi
scolatici. Però non riesco a compiere un passo iniziale, vi spiego il
problema. Ho una semplicissima form in html con il bottone submit. Dopo
aver cliccato il bottone dovrebbe comparire a video il riusltato del
file .java che viene richiamato con la pressione del bottone. La cosa
che non mi è chiara è come si collegano le 2 cose.
questo è il file html:
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
<html xmlns = "
http://www.w3.org/1999/xhtml
">
<head>
   <title>Handling an HTTP Post Request with Data</title>
</head>
<body>
   <form action = "prova" method = "get">
      <p><label>
         Type your first name and press the Submit button
         <br /><input type = "text" name = "firstname" />
         <input type = "submit" value = "Submit" />
      </label></p>
   </form>
</body>
</html>
questo è il file java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class prova extends HttpServlet {
   // process "get" request from client
   protected void doGet( HttpServletRequest request,
      			 HttpServletResponse response )
         throws ServletException, IOException
   {
      String firstName = request.getParameter( "firstname" );
      response.setContentType( "text/html" );
      PrintWriter out = response.getWriter();
      // send XHTML page to client
      // start XHTML document
      out.println( "<?xml version = \"1.0\"?>" );
      out.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " +
         "XHTML 1.0 Strict//EN\" \"
http://www.w3.org
" +
         "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" );
      out.println(
         "<html xmlns = \"
http://www.w3.org/1999/xhtml\
">" );
      // head section of document
      out.println( "<head>" );
      out.println(
         "<title>Processing post requests with data</title>" );
      out.println( "</head>" );
      // body section of document
      out.println( "<body>" );
      out.println( "<h1>Hello " + firstName + ",<br />" );
      out.println( "Welcome to Servlets 2006!</h1>" );
      out.println( "</body>" );
      // end XHTML document
      out.println( "</html>" );
      out.close();  // close stream to complete the page
   }

La servlet, in questo caso, è la classe java a cui viene passato la
richiesta http (request).
La servlet può elaborare la richiesta (o delegare l'elaborazione ad
un'altra classa java), può costruirse la risposta http (response) e
inviarla a video.
Una servlet è una normale classe java che estende la classe
HttpServlet, implementandone i metodi doGet, doPost. Infatti il form
può essere (principalmente) inviato con questi due modi: GET e POST.
Banalmente, se il form è inviato attraverso la get, il controllo
passerà al metodo doGet, se invece si usa il POST il controllo
passerà al metodo doPost.
Innanzitutto vedo un'imprecisione nel tuo codice: non devi scrivere
   <form action = "nome_con_cui_richiami_la_servlet" method = "get">
ma
<form action = "/nome_con_cui_richiami_la_servlet" method = "get">
Ci deve essere poi un file xml  (in JBoss è web.xml) in cui si
registrano le servlet. Quindi controlla che siano presenti le seguenti
informazioni, altrimenti inseriscile:
<servlet>
     <servle-name>nome_che_dai_tu_alla_servlet</servle-namet>
     <servle-class>package_name.servlet_class_name</servle-class>
</servlet>
<servlet-mapping>
   <servle-name>nome_che_dai_tu_alla_servlet</servle-name>
   <url-pattern>/nome_con_cui_richiami_la_servlet</url-pattern>
</servlet-mapping>
Ciao,
Emanuele