Je suis conscient qu'il y a beaucoup de messages avec le même nom, mais je n'arrive toujours pas à trouver le problème. J'essaie de soumettre un formulaire d'inscription en utilisant la poste pour enregistrer un utilisateur dans une base de données, mais je reçois l'erreur de titre lorsque je clique sur le bouton Soumettre. Cela semble être causé par ne pas avoirLa méthode HTTP POST n'est pas supportée par cette URL quand doPost est surchargé
doPost(HttpServletRequest, HttpServletResponse)
dans la classe appelé, mais j'ai un qui est pourquoi je ne vois pas le problème.
Le formulaire soumis est à l'adresse:/Histoire/registre
<form method="post" action="RegisterHandler">
<label>Username: <input type="text" name="desired_username" value="" size="10"></label><br><br>
<label>Password: <input type="password" name="desired_pass" value="" size="10"></label><br><br>
<input type="submit" name="commit" value="Register">
</form>
Sur soumettre l'URL devient/histoire/registerHandler. J'ai un répartiteur qui mappe cette URL à la classe Registerhandler réelle.
URL url = new URL(request.getRequestURL().toString());
String path = url.getPath();
String parts[] = path.split("/");
if(parts.length>2){
if("story".equals(parts[2])){
this.log(requestIp + ": " + "- User: Sean - Email: [email protected] - Accessed a story.");
new Story().doGet(request, response);
} else if ("about".equals(parts[2])){
log(requestIp + ": " + "- User: Sean - Email: [email protected] - Accessed a the about page");
about(request, out, cfg);
} else if ("default.css".equals(parts[2])){ //needed because dispatcher sends href to external stylesheet to the default page
defaultCss(request, out, cfg);
} else if ("register".equals(parts[2])){
log(requestIp + ": " + "- User: Sean - Email: [email protected] - Accessed a the register page.");
register(request, out, cfg);
} else if ("RegisterHandler".equals(parts[2])){
log(requestIp + ": " + "- User: Sean - Email: [email protected] - Accessed RegisterHandler");
new RegisterHandler().doPost(request, response);
} else {
log(requestIp + ": " + "- User: Sean - Email: [email protected] - Accessed the default page");
new Default().doGet(request, response);
}
Le répartiteur fonctionne dans tous les cas, outre le cas de registerHandler que je suppose est à cause de l'erreur.
La classe registerHandler est la suivante:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
cfg = new Configuration(Configuration.VERSION_2_3_22);
cfg.setDirectoryForTemplateLoading(new File("/home/ubuntu/jetty-distribution-9.3.3.v20150827/cse383base/webapps/Story"));
cfg.setDefaultEncoding("UTF-8");
PrintWriter out = response.getWriter();
try {
this.generatePage(request, out, cfg);
} catch (Exception e) {
e.printStackTrace(out);
}
}
Je sais que l'instruction if dans le Dispatcher devient le droit URL à partir du bouton soumettre, car toute autre URL serait tout simplement aller à la page par défaut.
Est-ce que quelqu'un voit pourquoi il est dit que l'URL ne supporte pas le POST?