Я знаю, что есть много сообщений с тем же именем, но я все еще не могу найти проблему. Я пытаюсь представить регистрационную форму с помощью сообщения, чтобы зарегистрировать пользователя в базе данных, но я получаю ошибку заголовка, когда я нажимаю кнопку отправки. Это, кажется, вызвано не имеяМетод HTTP POST не поддерживается этим URL-адресом, когда doPost переопределен
doPost(HttpServletRequest, HttpServletResponse)
в классе будет вызван, но у меня есть тот, который почему я не могу видеть проблему.
Форма представляется находится в URL:/история/регистрация
<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>
On отправить URL-адрес становится/История/RegisterHandler. У меня есть диспетчер, который отображает этот URL-адрес в настоящий класс Registerhandler.
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);
}
Диспетчерский работает во всех случаях, кроме случая RegisterHandler, который я предполагаю, из-за ошибки.
классаRegisterHandler выглядит следующим образом:
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);
}
}
Я знаю, что если заявление в Dispatcher получает правильный URL от кнопки отправки, потому что любой другой URL будет просто перейти на страницу по умолчанию.
Кто-нибудь видит, почему он говорит, что URL-адрес не поддерживает POST?