30、JAVA_WEB开发基础之servlet(1)
servlet是什么
Servlet 是一種獨(dú)立的 web 開發(fā)標(biāo)準(zhǔn),用來接受、處理、返回瀏覽器的訪問請(qǐng)求,它不應(yīng)和服務(wù)器耦合在一起,servlet和servlet容器之間相互獨(dú)立又相互依存,自我感覺,servlet有了容器才得以實(shí)現(xiàn)自己的價(jià)值,容器也因有了servlet而變得更加強(qiáng)大,servlet更像是一種規(guī)范和一種機(jī)制。Servlet 是 Java Web 技術(shù)的核心基礎(chǔ),通常我們說的Servlet一般指HttpServlet。
servlet的生命周期
servlet的生命周期有三個(gè)階段:
1、初始化階段 :在代碼中的體現(xiàn)就是調(diào)用init方法實(shí)現(xiàn)servlet的初始化
 ????? public void init(ServletConfig config) throws ServletException
 2、相應(yīng)客戶請(qǐng)求階段:在代碼中的體現(xiàn)就是調(diào)用service方法
 ????? public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
 3、終止階段:在代碼中的體現(xiàn)就是調(diào)用destroy方法進(jìn)行注銷操作
 ????? public void destroy()
servlet的工作原理
servlet的基本工作就是接受客戶端傳來的請(qǐng)求,然后處理請(qǐng)求,最終將處理結(jié)果返回給客戶端。這里使用HttpServlet來解釋,其大致工作原理如下:
1、 當(dāng)客戶端往服務(wù)器發(fā)送一個(gè)請(qǐng)求時(shí),服務(wù)器經(jīng)過解析將請(qǐng)求交給servlet的service方法,請(qǐng)求最終發(fā)送到HttpServlet的service方法
 2、 在Service方法,先通過請(qǐng)求對(duì)象,也就是HttpServletRequest來獲取請(qǐng)求方式,然后根據(jù)請(qǐng)求方式來匹配決定調(diào)用get方法還是post方法來進(jìn)行業(yè)務(wù)的處理
 3、 請(qǐng)求將在get方法或者post方法中進(jìn)行具體的邏輯和數(shù)據(jù)的處理,但是不管get方法還是post方法在HttpServlet中都沒有具體的邏輯代碼,所以繼承HttpServlet之后,需要我們自己重寫這兩個(gè)方法
 4、 經(jīng)過一系列具體的處理后返回處理信息,再通過HttpServletResponse對(duì)象將處理信息逐級(jí)返回,信息是通過ServletResponse對(duì)象返回給客戶端的
 5、 信息返回給客戶端之后,Servlet容器會(huì)調(diào)用Servlet的destroy()方法,用來釋放掉Servlet所占用的資源,一些情況下也可能導(dǎo)致調(diào)用此方法:WEB應(yīng)用被終止、Servlet容器終止運(yùn)行、Servlet容器重新裝載Servlet新實(shí)例等
servlet的執(zhí)行流程
1、 服務(wù)器獲取客戶端傳來的http請(qǐng)求
 2、 服務(wù)器解析請(qǐng)求
 3、 創(chuàng)建servlet實(shí)例
 4、 調(diào)用init方法初始化servlet
 5、 調(diào)用service方法進(jìn)行請(qǐng)求的處理
 6、 將處理后的數(shù)據(jù)返回,輸出相應(yīng)信息
 7、 服務(wù)器響應(yīng)客戶端
 8、 執(zhí)行servlet的destroy方法銷毀servlet
java中servlet的實(shí)現(xiàn)方式
java中實(shí)現(xiàn)servlet有三種方式:
1、 實(shí)現(xiàn)servlet接口
 2、 繼承Genericservlet抽象類
 3、 繼承httpservlet抽象類
一般使用第三種繼承HttpServlet方式
一次完整訪問的實(shí)例
/*** 1、創(chuàng)建一個(gè)web項(xiàng)目* 2、創(chuàng)建一個(gè)類,繼承HttpServlet* 3、重寫doGet或doPost方法* 4、servlet 3.0及以后使用 注解@WebServlet("/testServlet")來標(biāo)記類為servlet,/testServlet為訪問的servlet名* 5、添加web容器,啟動(dòng)服務(wù),訪問測(cè)試*/ @WebServlet("/testServlet") public class TestServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// getAttribute方法用于獲取請(qǐng)求中的屬性值Object name = request.getAttribute("name");// getParameter方法用于獲取請(qǐng)求中的參數(shù)String namestring = request.getParameter("name");response.getWriter().write(namestring.toString());} }注意:這里用的是servlet 3.0標(biāo)準(zhǔn),如果是之前的2.0及其之前標(biāo)準(zhǔn)是不存在WebServlet注解的,需要手動(dòng)在web.xml文件中配置Servlet映射,建議使用3.0。
總結(jié)
以上是生活随笔為你收集整理的30、JAVA_WEB开发基础之servlet(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: “好物好服务,一省到底” 联想携多重钜惠
- 下一篇: 松下新款 G9M2 相机国行价格公布:1
