【问题标题】:The requested resource is not available. Apache Tomcat/7.0.42 [duplicate]请求的资源不可用。 Apache Tomcat/7.0.42 [重复]
【发布时间】:2014-02-09 20:38:09
【问题描述】:

我在WebContent 文件夹中创建了一个jsp file,其中包含一个表单。

表单的操作是Servlet,但是当我点击提交按钮时,我收到了这条消息:

这是我的项目结构:

我该如何解决这个问题?

编辑 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);
        }
    
    }

【问题讨论】:

  • 请更新您的问题并添加一些代码,也许是 servlet 和 JSP?!
  • 将@WebServlet("/Authentication") 更改为@WebServlet("/Registration") 或调用Authentication 而不是Registration

标签: eclipse jsp jakarta-ee tomcat servlets


【解决方案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 中有相同的操作,所以你只需要改变一个部分,它也会影响其他部分。

希望这能解决您的问题。 帕特里克

【讨论】:

    【解决方案2】:

    我认为我们也可以在 doGet() 中调用 doPost() 方法。

    试试这个并告诉我们。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 2012-04-29
      相关资源
      最近更新 更多