2011-12-14 5 views
0

Possible en double:
Calling servlet from HTML form, but servlet is never invokedAppel servlet de formulaire HTML, mais aucune réponse de servlet

J'appelle servlet de la forme html, servlet prend les données de formulaire et insérera cette forme de données dans la base de données.Mais quand je clique sur la page d'erreur de bouton d'envoi arrive. S'il vous plaît aider ce qui est mal dans mon code de servlet.

Mon code html:

<html> 
    <head> 
     <title> Sign Up </title> 
    </head> 
    <body> 
     <form action="servlet/Loginservlet" method="post" > 
      <font size='5'>Create your Account:</font><br/><br> 

      <label for="username" accesskey="u" style="padding-left:3px;">User Name: </label> 

      <input type="text" style="background-color:#ffffff;margin-left:14px;padding-top:7px;border-width:0px;margin-top:6px;padding-right:85px;" id="username" name="username" tabindex="1"><br/><br> 

      <label for="password" accesskey="p" style="padding-left:4px;">Password: </label> 

      <input type="password" style="background-color:#ffffff;margin-left:14px;padding-top:7px;border-width:0px;padding-right:85px;" id="password" name="pasword" tabindex="2"><br/><br> 

      <input type="submit" value="Submit" style="margin-left:164px;"/> 

      <input type="reset" value="Reset" style="margin-left:17px;"/> 
     </form> 
    </body> 
</html> 

Mon code de servlet:

import javax.servlet.http.HttpServlet; 

import java.io.*; 
import java.sql.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class Loginservlet extends HttpServlet { 

    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 
     System.out.println("login servlet"); 
     String connectionURL = "jdbc:mysql://localhost:3306/mysql"; 
     Connection connection = null; 
     res.setContentType("text/html"); 
     PrintWriter out = res.getWriter(); 
     String username = req.getParameter("username"); 
     String password = req.getParameter("password"); 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      connection = DriverManager.getConnection(connectionURL, "root", "root"); 
      String sql = "insert into signup values (?,?)"; 
      PreparedStatement pst = connection.prepareStatement(sql); 
      pst.setString(1, username); 
      pst.setString(2, password); 

      int numRowsChanged = pst.executeUpdate(); 
      out.println(" Data has been submitted "); 

      pst.close(); 
     } catch (ClassNotFoundException e) { 
      out.println("Couldn't load database driver: " + e.getMessage()); 
     } catch (SQLException e) { 
      out.println("SQLException caught: " + e.getMessage()); 
     } catch (Exception e) { 
      out.println(e); 
     } finally { 
      try { 
       if (connection != null) { 
        connection.close(); 
       } 
      } catch (SQLException ignored) { 
       out.println(ignored); 
      } 
     } 
    } 
} 

Mon web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <servlet> 
     <servlet-name>login</servlet-name> 
     <servlet-class>Loginservlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>login</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 
</web-app> 
+1

Si vous allez à multi-poser des questions, s'il vous plaît au moins apprendre à formater le code et HTML. La modification de chacun de vos messages deviendrait vite fastidieuse! –

Répondre

1

Je pense, une erreur est ici: <form action="servlet/Loginservlet"

Essayez ceci <form action="/<your-app-name>/login"

+0

app-name signifie? –

+0

J'utilise Myeclipse IDE –

+0

@krishna bhargavi: 'your-app-name' est le chemin contextuel de vos applications Web. – home

0

puisque dans l'action de formulaire, vous avez donné servlet/Loginservlet. vous devriez même carte dans web.xml comme

<url-pattern>/servlet/Loginservlet</url-pattern> 

ou changement dans la forme comme

action='login' 

vous pouvez faire une des ci-dessus.

0

essayer cette

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

vous url servlet est

<url-pattern>/login</url-pattern> 

Lorsque vous exécutez votre application Web pour l'hôte local l'URL comme

localhost:8080/test 

le test est le nom de votre nom d'application qui contient votre application Web dans le répertoire Web. Maintenant, supposons que vous créez le fichier d'index il courrez fichier d'index à partir de cette URL seulement et une autre page comme

localhost:8080/test/page1.html 

maintenant de page1.html vous démarrez votre page de connexion alors le lien ressemble pour servlet est

localhost:8080/test/login 

comme définir le modèle d'URL pour le servlet spécifique que vous devez définir pour appeler la servlet spécifique comme ci-dessus. cette url cachera le servlet réel pour le client que vous pouvez mettre n'importe quoi dans le modèle d'URL

+0

ne vient pas ... –

+0

consultez ce tutoriel http://www.servletworld.com/servlet-tutorials/simple-servlet-example.html si une erreur – Pratik

+0

quelle est votre structure web dir pouvez-vous poster l'image de votre structure web dir avec complet ouvert tous les dossier pour afficher tous les sous dossier et fichier – Pratik