1. 程式人生 > >Servlet 及 請求轉發與重定向

Servlet 及 請求轉發與重定向

style pattern load 需要 shutdown att nbsp host 瀏覽器

Servlet

Java編寫的服務器端程序,處理客戶端的http請求並將其結果發送到客戶端。

Servlet容器Tomcat
最熟悉的是容器就是tomcat。在tomcat中,server-包含-service-包含-connector+container+other

最核心的組件:

Connector接收TCP請求,創建responserequest對象,分配線程給container處理

Containerservlet容器,責任鏈模式的子容器:engine--host--Context--wrapper

一個wrapper負責一個servlet,裝載,初始化,執行,回收

Context是運行

servlet基本環境,功能是管理裏面的servlet實例。一個Context對應一個web工程。

生命周期:Lifecycle接口控制,最高組件是server,所以server.startup;server.shutdown;

ServletFilterListener

一個應用的初始化入口是web.xml,首先需要將其中各個配置項屬性設置到Context容器中,包括servletfilterlistener

Servlet

方法:init();如果不設置load-on-startup,則在被調用之後才初始化

service();參數:ServletRequestServletResponse

:描述一次請求和響應的類,作用是在服務器收到請求後,將請求穿過容器傳遞給servlet處理。我們創建自己的servlet類是經常使用的HttpServletRequest繼承於它。

destroy();

如何找到正確的servlet(即wrapper容器)並且執行它?

Tomcat7中,由一個http.mapper類管理,它保存了所有子容器信息。

mapper類為什麽可以保存所有子容器信息?

mapperListener類作為一個監聽者加到每個子容器中。

Filter:攔截 請求和響應發送到servlet之前被調用

方法:

init();容器啟動後即初始化

doFilter();參數:ServletRequest

ServletResponseFilterChain

destroy()

<servlet-mapping><filter-mapping>中都有<url-pattern>配置項,servlet-mapping中以url配置,filter-mapping中以url或者servlet名稱配置。

Listener:監聽 1.生命周期的變化 2.屬性的變化

Servlet的請求轉發與重定向:

Servlet可以將發送給自己的某個請求轉發給另外一個url地址,這個地址可以是htmljspservlet等。

1. 轉發,forward()

request.getRequestDispatcher (/url"). forward(request, response);//轉發到url

轉發在服務器端完成,瀏覽器並不知道這個操作,瀏覽器的地址欄不改變,並且轉發和轉發到的界面可以共享request裏的數據。

2. 重定向,sendRedirect()

response.sendRedirect(request.getContextPath()+/url"); //重定向到url,客戶端第二次發送請求會直接請求服務器根目錄,所以需要getContextPath得到當前容器目錄

服務器返回一個重定向路徑,客戶端重新發出請求,瀏覽器的地址欄改變,request中的變量全部失效,兩個界面不能共享數據。


Servlet 及 請求轉發與重定向