HTTP Status 405 - HTTP method POST is not supported by this URL
程序出現(xiàn):
HTTP Status 405 - HTTP method POST is not supported by this URL
發(fā)現(xiàn)原因如下
源程序:
request.getRequestDispatcher("PageQueryServlet“).forward(request, response); 改為:
response.sendRedirect("/ShoppingCart/PageQueryServlet”); 因為 request.getRequestDispatcher是請求轉(zhuǎn)發(fā),只有一次請求,在服務(wù)器端轉(zhuǎn)發(fā)不經(jīng)過客戶端,前后共享一個request。當 getRequestDispatcher轉(zhuǎn)發(fā)jsp時可以不用重定向,但是當在一個servlet中轉(zhuǎn)到另一個servlet中是,就必須要用重定向了,應(yīng)為重定向是二次請求。
request跳轉(zhuǎn)叫頁面?zhèn)鬟f就是一個頁面的請求傳遞到另外一個頁面,這個你在前一個頁面中對該請求的操作比如賦值,獲得參數(shù)都能通過request獲得。
response跳轉(zhuǎn)叫頁面重定向,就是你之前發(fā)過來的請求到達該處就結(jié)束了,如果還要做請求則是由該頁面在重新發(fā)送一個請求了,這個請求跟之前重定向的請求不是同一個請求了,因此你通過request拿不到重定向前的請求參數(shù) .
-----------------------------------------網(wǎng)上搜集得來---------------------------------------------
forward,include,redirect是jsp中web頁面(jsp或servelt)的三種不同的路由關(guān)系,三個貌似相同,其實還是有許多差別的,而了解這些細微的差別,在web開發(fā)中是很重要的。
說明:
一、forward、include由javax.servlet.RequestDispatcher來封裝,由包容器container提供RequestDispatcher接口的實現(xiàn),其中聲明如下:
void forward(ServletRequest req,ServletResponse res)
void include(ServeltRequest req,ServletResponse res)
可以通過兩種方式得到RequestDispatcher:
1、ServletContext.getRequestDispatcher(String path);
其中這里的path必須開始為"/",即這里的path必須相對于context的root.
2、ServeltRequest.getRequestDispatcher(String path)
這里的path可以為相對路徑,如果path開始為"/",則也認為是從context的root開始的。
二、Redirect由HttpServletResponse.sendRedirect(String location)來支持
差別:
三個都可以對用戶的request進行轉(zhuǎn)發(fā),但是還是有許多的不同,差別最主要集中在如下幾個方面:
1、forward與include共亨Request范圍內(nèi)的對象,而redirect則不行,即:如果一個javabean被聲明為request范圍的話,則被forward到的資源也可以訪問這個javabean,而redriect則不行。
2、forward與include基本上都是轉(zhuǎn)發(fā)到context內(nèi)部的資源,而redirect可以重定向到外部的資源,如: req.sendRedriect("http://www.baidu.com");
總結(jié)
以上是生活随笔為你收集整理的HTTP Status 405 - HTTP method POST is not supported by this URL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在myeclipse中导入图片
- 下一篇: MySQL数据库limit分页、排序