Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Servlet] Chiamare una servlet da un form action

    Salve,

    sto seguendo la guida presente in questo sito su Tomcat.
    Purtroppo l'esempio riportato nel capitolo 14 è incompleto e lo devo completare io, ma ho dei problemi
    La web application è molto semplice: dato un form in cui si scrive la sezione delle news che si vuole visitare richiama una servlet che a sua volta richiama le relative JSP.
    Penso che il problema sia la chiamata della Servlet dall'action del form oppure il mappaggio nel file web.xml

    index.html - Ecco il file HTML con il form:
    Codice PHP:
    <html>
        <
    head>
            <
    title>Titolo</title>
        </
    head>

        <
    body>
        <
    div align="center">
            <
    form name="Login" action="MainUrl">
            
    Categoria: <input name="categoria" type="text" />

            <
    input id="Submit" type="submit" value="Show" />
            </
    form>
        </
    div>
    </
    body>
    </
    html
    Main.java - Ecco la Servlet che processa la richiesta e rimanda ad altre pagine in JSP:
    Codice PHP:
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.IOException;

    public class 
    Main extends HttpServlet {

      public 
    void doGet (HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException
        
    {
          
    String categoria request.getParameter("categoria");
          
    String jspPage "";

          if ( 
    categoria.equals("politica") )
          {
            
    jspPage "pages/politica.jsp";
          }
          else if ( 
    categoria.equals("finanza") )
          {
            
    jspPage "pages/finanza.jsp";
          }
          else if ( 
    categoria.equals("sport") )
          {
            
    jspPage "pages/sport.jsp";
          }
            else
            
    jspPage "pages/error.jsp";

            
    request.getRequestDispatcherjspPage ).forward(request,response);
        }


    Le pagine JSP non le riporto perchè semplici file html con estensione .jsp

    Ecco il file web.xml (dove credo sia il problema):
    Codice PHP:
    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE Web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/Web-app_2_3.dtd">

    <Web-app>

      <servlet>
        <servlet-name>MainServlet</servlet-name>
        <servlet-class>classes.Main</servlet-class>
      </servlet>

      <servlet-mapping>
        <servlet-name>MainServlet</servlet-name>
        <url-pattern>/MainUrl</url-pattern>
      </servlet-mapping>
     
      <session-config>
        <session-timeout>30</session-timeout>
      </session-config>
     
    </Web-app>
    Questa è la struttura dei miei files:
    Codice PHP:
    SimpleNews2
    |
    |
    __pages
    |    |__politica.jsp
    |    |__finanza.jsp 
    |    |__sport.jsp
    |    |__errore.jsp
    |
    |
    __WEB-INF
    |   |__classes
    |   |   |__Main.class
    |   |
    __web.xml
    |
    |
    __index.html 
    Qual'è secondo voi il problema?

    Grazie in anticipo,
    Matteo

    PS: spero di non avervi tediato con tutto sto codice
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  2. #2
    ciao,

    in effetti usi

    Codice PHP:
    <servlet-class>classes.Main</servlet-class> 
    anziché

    Codice PHP:
    <servlet-class>Main</servlet-class> 
    ciao
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  3. #3
    Hai ragione.
    questo errore l'avevo corretto ma niente. Il messaggio di errore del browser è il seguente:
    Codice PHP:
    HTTP Status 404 - /SimpleNews2/MainUrl

    type Status report

    message 
    /SimpleNews2/MainUrl

    description The requested resource 
    (/SimpleNews2/MainUrlis not available
    Io penso che il problema sia nella mia chiamata del form action nel file html.
    Codice PHP:
    <form name="Login" action="MainUrl"
    Ho letto che il valore di action deve corrispondere all'url-pattern del file web.xml, quindi siccome io ho
    Codice PHP:
    ...
    <
    servlet-mapping>
        <
    servlet-name>MainServlet</servlet-name>
        <
    url-pattern>/MainUrl</url-pattern>
      </
    servlet-mapping
    ... 
    dovrei mettere MainUrl.
    Alcuni però mettono nell'action l'indirizzo completo (es: http://localhost:8080/servlet/HTTPServlet) forse è questo il problema? Nel mio caso siccome la Servlet si trova in WEB-INF/classes che dovrei mettere?

    Aiutatemi vi prego...in fondo dovrebbe essere un problema semplice per chi ha eseguito almeno anche solo una servlet.
    Non capisco perchè i libri e le guide sembrano che parlino solo di teoria e mai del modo pratico con cui un progetto poi va effettivamente eseguito

    Grazie
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  4. #4
    E' tutto fatto bene...solo che nella guida di html.it sugli Application Server a pagina capitolo 14 c'è un errore nella creazione del web.xml !
    Infatti è così:
    Codice PHP:
    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE Web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/Web-app_2_3.dtd">

    <Web-app>

      ...
     
    </Web-app>
    Ma i tag <web-app> devono andare in minuscolo!
    Chi di dovere lo segnali perchè io ci ho buttato il sangue

    PS: Analogo errore anche a pagina capitolo 13
    in cui si scrive Name in maiuscolo anzicchè minuscolo
    Codice PHP:
    Welcome <%=request.getParameter("Name")%> 
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.