我知道有很多同名的帖子,但我仍然找不到问题。我正在尝试使用post提交注册表单以在数据库中注册用户,但是当我单击提交按钮时,我收到标题错误。这似乎是由于没有
引起的doPost(HttpServletRequest, HttpServletResponse)
在被调用的类中,但我确实有一个这就是我无法看到问题的原因。
提交的表单位于URL:/ Story / register
<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>
提交url成为/ Story / 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: test@test.com - Accessed a story.");
new Story().doGet(request, response);
} else if ("about".equals(parts[2])){
log(requestIp + ": " + "- User: Sean - Email: test@test.com - 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: test@test.com - Accessed a the register page.");
register(request, out, cfg);
} else if ("RegisterHandler".equals(parts[2])){
log(requestIp + ": " + "- User: Sean - Email: test@test.com - Accessed RegisterHandler");
new RegisterHandler().doPost(request, response);
} else {
log(requestIp + ": " + "- User: Sean - Email: test@test.com - 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中的if语句是从提交按钮获取正确的URL,因为任何其他URL都会转到默认页面。
有谁知道为什么说这个网址不支持POST?
答案 0 :(得分:1)
线索是信息......
HTTP method POST is not supported
该消息由javax.servlet.http.HttpServlet
doPost(HttpServletRequest request, HttpServletResponse response)
默认实现生成。
这意味着发出的Request URI正在访问没有覆盖void doPost(HttpServletRequest request, HttpServletResponse response)
的Servlet。
调查内容:
doPost()
电话宣布了什么?