Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111

    [Servlet] - Primi passi Hello + nome

    PROBLEMA: creo una pagina html con un form contenente una casella di testo e un pulsante, scrivo il nome e dopo aver cliccato sul pulsante vorrei comparisse Welcome [nome].
    Il risultato invece non è un errore, ma mi viene ricaricata la pagina index.hmtl.
    Dove sbaglio?

    Questi sono il codice della pagina internet, della servlet e del file web.xml e stanno in queste directory:

    index.html ---> Tomcat 5.5\webapps\welcome
    web.xml ---> Tomcat 5.5\webapps\welcome\WEB-INF
    welcome.class ---> Tomcat 5.5\webapps\welcome\WEB-INF\classes


    ----------------------- index.html -----------------------

    <html>
    <head>
    <title>Form</title>
    </head>
    <body>
    <p align="center"><font size="7">TOMCAT</font></p>
    <p align="center"><font size="7">IT WORKS VAGNETTI!!!</font></p>
    <div align="center">

    <form name="form" action="/welcome">
    Nome: <input name="nome" type="text" size="20" />

    <input id="submit" type="submit" value="Enter" />
    </form>
    </div>

    </body>
    </html>

    ----------------------- Welcome.class -----------------------

    import java.io.*;
    import java.net.*;

    import javax.servlet.*;
    import javax.servlet.http.*;

    public class Welcome extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    String nome = request.getParameter("nome");
    PrintWriter out = response.getWriter();
    out.println("Welcome " + nome);
    }
    }

    ----------------------- web.xml -----------------------

    <?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>Welcome</servlet-name>
    <servlet-class>Welcome</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>Welcome</servlet-name>
    <url-pattern>/welcome</url-pattern>
    </servlet-mapping>

    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>

    </Web-app>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    56
    Anzitutto, occhio alle maiuscole (web-app e non Web-app).

    Prova con un diverso mapping della tua servlet. Dovrei riguardare la documentazione, ma non vorrei che l'uso di ACTION="/welcome" ti riporti nella directory principale della tua webapp, dove index.html è il file predefinito.

    In index.html metti:
    codice:
    <form name="form" action="welcomeclass">
    e in web.xml:
    codice:
    <servlet-mapping>
    <servlet-name>Welcome</servlet-name>
    <url-pattern>welcomeclass</url-pattern>
    </servlet-mapping>

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Funziona, grazie.
    Un'ultima cosa, mi sono registrato su www.no-ip.com e digitando:
    http://replika.no-ip.org:3000
    da browser (da un pc al di fuori della mia LAN, potete provare anche voi)sono riuscito a far vedere la pagina iniziale di apache (che ho messo in ascolto sulla porta 3000) effettuando un forwardind della porta 3000 nel mio router all'indirizzo 10.0.0.3 che è quello del mio pc.

    Ora, la pagina che visualizza correttamente Apache è quella su:
    C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\index.html

    Se io volessi modificare questa pagina ed invece della solita scritta "IT WORKS!" inserire una form identica a quella sopra e richiamare la servlet di prima, su "action = ..." che indirizzo dovrei mettere?

    Ho provato a metterci l'indirizzo della servlet Welcome all'indirizzo:
    C:\Programmi\Apache Software Foundation\Tomcat 5.5\webapps\welcome\WEB-INF\classes
    ma non funziona...
    Come dovrei fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    56
    Mi pare di aver capito che hai installati due server: Apache http server e Tomcat.
    Supponiamo che li hai installati sulle porte di default: 80 per Apache e 8080 per Tomcat.

    Hai più di una possibilità:

    1) mandare le richieste dalla porta esterna 3000 sulla porta interna 8080: così risponderà Tomcat. Se la tua applicazione è tutta su Tomcat (così come avevi scritto), troverai qui http://replika.no-ip.org:3000/welcome/index.html.

    2) mandare le richieste dalla porta esterna 3000 sulla porta interna 80: così risponderà Apache, da cui prendere http://replika.no-ip.org:3000/index.html, come mi pare di capire che sei arrivato a fare. Però poi non puoi fare una richiesta post su tomcat modificando l'action del form, perché la porta 8080 di Tomcat non è raggiungibile. Devi invece configurare Apache affinché questo utilizzi Tomcat per le sue richieste. Fatti un giro su Google, cercando in particolare il connettore JK2.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Apache ascolta sulla 3000, non sulla 80 nel mio caso, e Tomcat su quella di default che è la 8080.
    Io non sono capace a reindirizzare le porte ed ho solamente impostato il file di configurazione di Apache così:

    Listen 10.0.0.3:3000
    ServerRoot "C:/Programmi/Apache Software Foundation/Apache2.2"
    ServerName :10.0.0.3

    E' l'unico modo che ho trovato "empiricamente" per far vedere la mia pagina all'esterno.

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.