servlet:小服務程序web
servlet是JavaWeb體系中的三大核心(servlet/Filter/Listener)之一,並且是最主要的那個.瀏覽器
做用:接受請求,處理請求,作出響應服務器
繼承體系:servlet(接口)-->GenericServlet(抽象類)-->HttpServlet(抽象類)url
servlet(接口):線程
init:初始化:servlet是第一次被訪問時初始化的,在服務器運行期間,servlet都只有一個對象
多個訪客使用的是多條線程.xml
destroy:銷燬:只有正常關閉服務器時纔會調用此方法.對象
servlet:服務:被訪問時調用此方法 繼承
在運行過程當中某一個類的對象永遠只有一個,叫單例模式接口
service( ServletRequest , ServletResponse ):服務,接收請求生命週期
Request對象表明的是瀏覽器發送到服務器的請求*
Response對象表明的是服務器向瀏覽器發送的響應*
getServletConfig:取得servletConfig
getServletinfo:取得servletinfo
【Servlet的生命週期】
建立:
第一次被訪問(默認),只初始化一次
經過修改web.xml配置文件把servlet的建立改成項目啓動即初始化
web.xml的servlet標籤中添加一個 load-on-startup 標籤,值爲整數,通常設置爲2(0-4,是一個優先級),
其中0和1是系統使用的,因此儘可能不要用.
銷燬:項目關閉(並非服務器的啓動和中止)
【servlet的路勁設置】 : url-pattern(過濾器也使用)
徹底匹配:不含通配符的
/aaa/bbb 訪問目標爲/aaa/bbb的請求,運行此servlet
路徑匹配:
/aaa/* /* /ab* ,前半段匹配便可
後綴匹配:
*.xxx 後半段匹配便可
默認: / 執行默認servlet(不用)
原則:
1.*要麼開頭,要麼結尾,不能在中間.
2.路徑若是不以*開頭,則必須以/開頭.(也就是說必須是絕對路徑)
3.配置文件中的路徑/aa/bb不帶項目名的
4.頁面中的超連接 表單提交的路徑,絕對路徑是要項目名的
緣由:1.配置文件是屬於某一個WEB項目的,因此不須要項目名
2.而對於頁面來講,瀏覽器面對的WEB服務器,而服務器中是能夠有多個項目的,因此
頁面中的絕對路徑的根表明的是服務器,因此之後要帶項目名
例如:http://localhost:8080/day34/hello.servlet
程序 配置文件中的路徑,服務端的WEB路徑:
配置文件:<url/pattern> /hello.servlet</url-pattern>,開頭的/表明的是當前項目的根
頁面中的路徑,客戶端的WEB路徑:
頁面:<a href="day34/hello.servlet">aaa</a> 開頭/表明的是服務器
特列:重定向
【servlet如何接受請求】
servlet的核心方法(servlet接口 servlet,HttpServlet : doGet doPost)接受兩個參數:請求和響應對象,這兩個對象是WEB服務器在接收到Http的請求
後,封裝的兩個JavaBean.請求和響應相關的信息都封裝在這兩個對象中
若是瀏覽器在發送請求是提交的表單的參數,則找Request對象來取得:
String getParameter(String name) <input type="" name="" value="">
【servlet如何發送響應:】
resp.getWriter().write("響應內容") 響應對象的輸出流(向瀏覽器輸出內容的流)
代碼分層:
servlet:負責流程,接受請求,調用哪一個service,響應什麼信息
service:負責實現功能(業務邏輯),涉及底層的數據時,調用dao層
dao:只負責數據的操做(CURD),不參與業務
代碼分層的總結: 1.爲了讓程序結構更加清楚 2.後續的維護和擴展工做中,變的更簡單 3.工程性(後續的可維護性和可擴展性)