为什么要写一个doPost在doGet里面,单独的doPost就不行?
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
为什么必须把dopost写在doget,也就是说必须有doget?只有dopost然后把我想做的功能写在dopost里面为啥就总出现 405问题?
throws ServletException, IOException {
doPost(request,response);
}
为什么必须把dopost写在doget,也就是说必须有doget?只有dopost然后把我想做的功能写在dopost里面为啥就总出现 405问题?
关注者
8
被浏览
514
6 个回答
英语
1,这样做的原因是可能有post提交和get提交,doget调用dopost就不用写两段重复的代码了,如果你只用post提交,只用dopost就可以的。
2,你那个错误应该不是这个问题导致的吧。
2,你那个错误应该不是这个问题导致的吧。
java爱好者
程序员
不是一定谁一定要放在谁里面,doget方法里面可以调dopost,然后在dopost里面实现你的业务逻辑;或者在dopost里面调用doget,然后在doget里面实现业务逻辑,然后根据表单提交方式,选择调用不同的方法
keep the passion...
在进入servlet后,会执行service(HttpServletRequest req, HttpServletResponse resp) 这个方法
下面是源码,可以清楚的看到,会根据传过来的是什么请求来执行对应的方法。
如果是“GET”请求,就会执行doGet(req,resp)这个方法,
如果是“POST”请求,就会执行doPost(req,resp)这个方法。
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getMethod();
long errMsg;
if(method.equals("GET")) {
errMsg = this.getLastModified(req);
if(errMsg == -1L) {
this.doGet(req, resp);
} else {
long ifModifiedSince = req.getDateHeader("If-Modified-Since");
if(ifModifiedSince < errMsg / 1000L * 1000L) {
this.maybeSetLastModified(resp, errMsg);
this.doGet(req, resp);
} else {
resp.setStatus(304);
}
}
} else if(method.equals("HEAD")) {
errMsg = this.getLastModified(req);
this.maybeSetLastModified(resp, errMsg);
this.doHead(req, resp);
} else if(method.equals("POST")) {
this.doPost(req, resp);
克莱登大学核弹制造专业
程序员
不存在post得写在get里,应该是你提交的方式没弄对,用的是get,如果只写了post方式,没有get方式,就会找不到get方式然后报错
评论