2014-02-09 88 views
0

我在WebContent文件夾中創建了一個jsp file,它有一個表單。請求的資源不可用。 Apache Tomcat/7.0.42

形式的作用是Servlet,但是當我點擊提交按鈕,我得到這個消息:

enter image description here

這是我的項目結構:

enter image description here

我該如何解決這個問題?

編輯1:

這是我的JSP文件:

<%@ include file="inc/header.jsp" %> 
<h1>Créer un compte!</h1> 

<form action="Registration" method="post"> 
    <fieldset> 
     <legend>Informations personnels</legend> 
     <label for="nom">Nom </label> 
     <input type="text" name="nom"> 
     <label for="prenom">Prénom </label> 
     <input type="text" name="prenom"> 
     <label for="email">E-Mail </label> 
     <input type="text" name="email"> 
     <label for="sexe">Sexe </label> 
     <div class="radio_check"> 
      <input type="radio" value="F" name="sexe"> Mâle 
      <input type="radio" value="F" name="sexe"> Female 
     </div> 
     <label for="dateNaissance">Date de naissance : </label> 
     <input type="datetime" name="dateNaissance"> 
    </fieldset> 
    <fieldset> 
     <legend>Infos de connexion</legend> 
     <label for="pseudo">Pseudo </label> 
     <input type="text" name="pseudo"> 
     <label for="mdp">Mot de passe </label> 
     <input type="text" name="mdp"> 
     <label for="mdp2">Confirmation du mot de passe </label> 
     <input type="text" name="mdp2"> 
     <div class="radio_check"> 
      <label for="abonner"><input type="checkbox" name="abonner">Abonnez-vous au blog</label> 
     </div> 
    </fieldset> 
    <input type="submit" value="Créer un compte"> 
</form> 

<%@ include file="inc/footer.jsp" %> 

,這是我的Servlet:

package com.tp1.servlets; 

    import java.io.IOException; 
    import java.text.ParseException; 
    import java.text.SimpleDateFormat; 
    import java.util.Date; 

    import javax.servlet.ServletException; 
    import javax.servlet.annotation.WebServlet; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    import com.tp1.beans.Compte; 

    /** 
    * Servlet implementation class Authentification 
    */ 
    @WebServlet("/Authentification") 
    public class Registration extends HttpServlet { 
     private static final long serialVersionUID = 1L; 

     public Registration() { 
      super(); 
     } 


     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     } 

     /** 
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
     */ 
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      String nom    = request.getParameter("nom"); 
      String prenom   = request.getParameter("prenom"); 
      String email   = request.getParameter("email"); 
      String sexe    = request.getParameter("sexe"); 
      Date dateNaissance; 
      try { 
       dateNaissance = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("dateNaissance")); 
      } catch (ParseException e) { 
       dateNaissance = new Date(); 
      } 
      String pseudo   = request.getParameter("pseudo"); 
      String mdp    = request.getParameter("mdp"); 
      Boolean abonner   = request.getParameter("abonner") == "on" ? true : false; 

      Compte c = new Compte(nom, prenom, email, sexe, dateNaissance, pseudo, mdp, abonner); 

      request.setAttribute("compte", c); 

      this.getServletContext().getRequestDispatcher("signup_successful.jsp").forward(request, response); 
     } 

    } 
+0

請更新您的問題並添加一些代碼,可能是servlet和JSP? – Patrick

+0

@Patrick Done :) –

+1

將@WebServlet(「/ Authentication」)更改爲@WebServlet(「/ Registration」)或調用身份驗證而不是註冊 – Patrick

回答

1

的JSP保持不變。

這裏是servlet的代碼:

import java.io.IOException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException; 

@WebServlet("/Registration") 
public class Registration extends HttpServlet { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 3480182983284787792L; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String nom    = request.getParameter("nom"); 
     String prenom   = request.getParameter("prenom"); 
     String email   = request.getParameter("email"); 
     String sexe    = request.getParameter("sexe"); 
     Date dateNaissance; 
     try { 
      dateNaissance = new SimpleDateFormat("dd-MM-yyyy").parse(request.getParameter("dateNaissance")); 
     } catch (ParseException e) { 
      dateNaissance = new Date(); 
     } 
     String pseudo   = request.getParameter("pseudo"); 
     String mdp    = request.getParameter("mdp"); 
     Boolean abonner   = request.getParameter("abonner") == "on" ? true : false; 

     Compte c = new Compte(nom, prenom, email, sexe, dateNaissance, pseudo, mdp, abonner); 

     request.setAttribute("compte", c); 

     ServletContext context = getServletContext(); 
     context.getRequestDispatcher("signup_successful.jsp").forward(request, response); 
    } 


    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     processRequest(req, resp); 
    } 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     processRequest(req, resp); 
    } 


} 

我只加了一個方法較多,被稱爲的processRequest,有時你不得不在doGet和doPost方法相同OPS的例子,所以你只需要改變一部分也影響其他人。

希望這可以解決您的問題。 Patrick

0

我想我們也可以在doGet()中調用doPost()方法。

試試這個,告訴我們。

希望它能幫助你。