真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Tomcat中的servlet配置理解

剛開始使用Servlet時(shí),因?yàn)閣eb.xml的url-pattern和html中form表單的action的訪問路徑配置不對,總是出現(xiàn)404頁面不存在的錯(cuò)誤。根本原因是對Tomcat處理Http請求的過程理解不深。

子長網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

Tomcat處理Http請求過程:

1) 請求被發(fā)送到本機(jī)端口8080,被在那里偵聽的Coyote HTTP/1.1 Connector獲得
2) Connector把該請求交給它所在的Service的Engine來處理,并等待來自Engine的回應(yīng)
3) Engine獲得請求localhost/TestTomcat/loginSucceed,匹配它所擁有的所有虛擬主機(jī)Host
4) Engine匹配到名為localhost的Host
5) localhost Host獲得請求/TestTomcat/loginSucceed,匹配它所擁有的所有Context
6) Host匹配到路徑為/TestTomcat的Context
7) path="/TestTomcat"的Context獲得請求/loginSucceed,在它的mapping table中尋找對應(yīng)的servlet
8) Context匹配到URL PATTERN為/loginSucceed的servlet,對應(yīng)于HelloServlet類
9) 構(gòu)造HttpServletRequest對象和HttpServletResponse對象,作為參數(shù)調(diào)用HelloServlet的doGet或doPost方法
10)Context把執(zhí)行完了之后的HttpServletResponse對象返回給Host
11)Host把HttpServletResponse對象返回給Engine
12)Engine把HttpServletResponse對象返回給Connector
13)Connector把HttpServletResponse對象返回給客戶browser

對以上過程不理解的可以查看我轉(zhuǎn)載的博文:Tomcat工作原理詳解

從以上過程可以看出:一個(gè)完整的Http URL在Tomcat中被層層剝離,首先通過域名(上面的localhost)匹配虛擬主機(jī),并將/TestTomcat/loginSucceed傳給對應(yīng)主機(jī);然后主機(jī)通過/TestTomcat匹配Context的path,將/loginSucceed傳給特定的Context(其實(shí)就是web應(yīng)用,因?yàn)橐慌_(tái)主機(jī)上可以同時(shí)運(yùn)行多個(gè)web應(yīng)用,即為多個(gè)web應(yīng)用提供服務(wù)器的功能);Context根據(jù)/loginSucceed來匹配Servlet,通過和url-pattern來匹配。所以我們在web.xml中的url-pattern中不能帶項(xiàng)目名。而form表單中的action指向的URL是主機(jī)名后的部分,如上面的/TestTomcat/loginSucceed,所以此處一定要加上項(xiàng)目名(用來匹配哪個(gè)Context,即web應(yīng)用)

以下是類似實(shí)踐:

我建了個(gè)TestTomcat項(xiàng)目,建包c(diǎn)om.heyujun.servlet,包下建類HelloServlet

HelloServlet類:

注意:在類中的URL路徑配置有兩種方法:

1、response.sendRedirt("/TestTomcat/loginSucceed1.html");
//此處如果想讓瀏覽器訪問longinSucceed.html文件,一定要加上項(xiàng)目名,和.html;而且這會(huì)使瀏覽器顯示的URL改變

2、response.sendRedirt("loginSucceed1.html");如果不想帶上項(xiàng)目名,就直接寫HTML、JSP等文件的名字,一定不要加"/",不要寫成response.sendRedirt("/loginSucceed1.html");

猜測源碼是根據(jù)URL前是否有"/",如果有就將緊跟"/"的文件名作為項(xiàng)目名。如果過寫成response.sendRedirt("/loginSucceed1.html");可能會(huì)把loginSucceed1.html作為項(xiàng)目名,而機(jī)器上并不存在該項(xiàng)目,所以報(bào)404錯(cuò)誤

public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 執(zhí)行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.sendRedirt("/TestTomcat/loginSucceed1.html"); // response.sendRedirt("loginSucceed1.html"); } public void destroy() { // 什么也不做 } }

web.xml:

/loginSucceed//注意此處一定不要再加上項(xiàng)目路徑即Context的path,而且前面一定要加"/",否則啟動(dòng)失敗

welcome.html welcome.htm welcome.jsp HelloServlet com.heyujun.servlet.HelloServlet HelloServlet /loginSucceed//注意此處一定不要再加上項(xiàng)目路徑即Context的path

welcome.html:

下面提交表單的action="/TestTomcat/loginSucceed",我覺得這里的路徑配置也是和上面一樣有兩種方法,理由同HelloServlet類中所述

1、action="/TestTomcat/loginSucceed"

2、action="loginSucceed"

login page

//注意:此處一定要加上項(xiàng)目路徑即Context的path,用來找特定的webapp,后面的/loginSucceed才是Servlet對應(yīng)的url //而web.xml中的 url-pattern就是此處的/loginSucceed First name:
Last name:


分享標(biāo)題:Tomcat中的servlet配置理解
當(dāng)前路徑:http://weahome.cn/article/chojss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部