我在jsp file
文件夹中创建了一个WebContent
,其中有一个表单。
表单的操作是Servlet
,但是当我点击提交按钮时,我会收到以下消息:
这是我的项目结构:
我该如何解决这个问题?
这是我的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 :(得分: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中有相同的操作,所以你只需要改变一个部分,它也会影响到其他部分。
希望这能解决你的问题。 帕特里克
答案 1 :(得分:0)
我认为我们也可以在doGet()中调用doPost()方法。
试试并告诉我们。
希望它能帮助你。