<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【java項(xiàng)目實(shí)戰(zhàn)】Servlet詳解以及Servlet編寫(xiě)登陸頁(yè)面(二)

          共 4104字,需瀏覽 9分鐘

           ·

          2022-03-06 16:06

          bfdf2fe5a06f797971d445bea04cb7d6.webp

          Servlet是Sun公司提供的一門(mén)用于開(kāi)發(fā)動(dòng)態(tài)web網(wǎng)頁(yè)的技術(shù)。Sun公司在API中提供了一個(gè)servlet接口,我們?nèi)绻胧褂胘ava程序開(kāi)發(fā)一個(gè)動(dòng)態(tài)的web網(wǎng)頁(yè),只需要實(shí)現(xiàn)servelet接口,并把類(lèi)部署到web服務(wù)器上就可以運(yùn)行了。



          到底什么是Servlet呢?


          ? ? ? ?通俗一點(diǎn),只要是實(shí)現(xiàn)了servlet接口的java程序,均稱(chēng)Servlet。Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小應(yīng)用程序),Servlet是在服務(wù)器端運(yùn)行的小程序。



          編寫(xiě)一個(gè)現(xiàn)實(shí)登陸的Servlet,并部署訪問(wèn)


          1、我們先寫(xiě)一個(gè)簡(jiǎn)單的HTML,可以在WebRoot新建,也可以復(fù)制一個(gè)寫(xiě)好的HTML,我們用post提交方式,當(dāng)然也可以用get提交,大家可以自己嘗試一下。


          登錄

          用戶(hù):

          密碼:


          2、完成Servlet,在Web項(xiàng)目的src中右鍵新建一個(gè)類(lèi)LoginServlet,輸入下面代碼即可。

          //引入所需要的包

          import java.io.*;

          import javax.servlet.*;

          import javax.servlet.http.*;

          ?

          public class LoginServlet extends HttpServlet {

          //重寫(xiě)doGet方法

          public void doGet(HttpServletRequest request,

          ? ? ? ? ? ? HttpServletResponse response)

          ? ? ?throws ServletException,

          ? ? ? ? ? ? IOException {

          String username = request.getParameter("username");? ?

          String password = request.getParameter("password");? ? ??

          //服務(wù)器端打印信息

          //System.out.println("username=" + username);

          //System.out.println("password=" + password);

          //設(shè)置編碼格式

          response.setContentType("text/html;charset=GB18030");

          //返回html頁(yè)面

          response.getWriter().println("");

          response.getWriter().println("");

          response.getWriter().println("登錄信息");

          response.getWriter().println("");

          response.getWriter().println("");

          response.getWriter().println("歡迎【" + username + "】用戶(hù)登錄成功?。?!");

          response.getWriter().println("");

          response.getWriter().println("");

          }? ? ? ? ? ? ? ? ?

          //重寫(xiě)doPost方法

          public void doPost(HttpServletRequest request,

          ? ? ? ? ? ? HttpServletResponse response)

          ? ? throws ServletException,

          ? ? ? ? ? ? IOException {

          doGet(request, response);? ? ? ? ? ? ? ?

          }? ? ?

          }


          3、在WebRoot下的WEB-INF的web.xml,部署我們的Servlet,啟動(dòng)服務(wù)器。



          xmlns="http://java.sun.com/xml/ns/j2ee"?

          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?

          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee?

          http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

          ? ?

          ? ?MyServlet

          ? ?LoginServlet

          ? ?

          ?

          ? ?

          ? ?MyServlet

          ? ? ? ? /LoginServlet

          ? ?


          4、一定要啟動(dòng)服務(wù)器,之后在瀏覽器中輸入你的URL,此時(shí)我們就可以調(diào)用Servlet了。

          ? ? ? ? ? ? ?


          ==============================================================================================================================


          ?如果不知道怎么配置java Web項(xiàng)目,可以移駕到我的上篇(一步步教你使用MyEclipse搭建java Web項(xiàng)目開(kāi)發(fā)環(huán)境(一)),下面我們?cè)敿?xì)介紹Servlet的基礎(chǔ)知識(shí)。


          ==============================================================================================================================


          Servlet基礎(chǔ)


          1、解讀API文檔,純手工編寫(xiě)一個(gè)Servlet程序,并部署訪問(wèn)(如上所示)。

          ? ? ? ? ?


          ? ? ? 解讀API對(duì)于拒絕學(xué)習(xí)API的程序員們是一種煎熬,但它卻是我們學(xué)習(xí)和進(jìn)步的最好工具,且學(xué)且珍惜。


          ? ? ? ? ? ? ? ? ? ? ? ??



          ? ? ? ?大家可以在點(diǎn)進(jìn)去看一看,從上圖,可以看出Servlet接口定義三個(gè)實(shí)現(xiàn)類(lèi),分別是FacesServlet, GenericServlet, HttpServlet。下面我們簡(jiǎn)單的介紹一下。




          2、Servlet接口實(shí)現(xiàn)類(lèi)

          ? ? ?


          ? ? ?(1)FacesServlet是一個(gè)用于管理利用JSF(JavaServer Faces)構(gòu)建用戶(hù)界面的web應(yīng)用程序請(qǐng)求處理生命周期的Servlet。(FacesServletis a servlet that manages the request processing lifecycle for web applications that are utilizing JavaServer Faces to construct the user interface.),大家如果想深入的學(xué)習(xí),可以點(diǎn)這里。


          ? ? ?(2)GenericServlet是HttpServlet的父類(lèi),包含了servlet的常用方法。GenericServlet使得程序員寫(xiě)servlets更加簡(jiǎn)單,它提供了初始化和銷(xiāo)毀生命周期的方法,以及實(shí)現(xiàn)了寫(xiě)日志文件的方法。


          ? ? ?(3)HttpServlet指能夠處理HTTP請(qǐng)求的servlet。這是開(kāi)發(fā)人員在編寫(xiě)Servlet時(shí),通常應(yīng)繼承這個(gè)類(lèi)即可。


          ? ? ??


          ? ? ? ? 對(duì)于這三個(gè)實(shí)現(xiàn)類(lèi),只為大家做一個(gè)簡(jiǎn)單的介紹,如果想深入的研究,直接看API就好。




          3、Servlet部署

          ? ? ? ?


          ? ? ? ?客戶(hù)端通過(guò)URL地址訪問(wèn)web服務(wù)器中的資源,所以若想訪問(wèn)Servlet必須要把servlet程序映射到一個(gè)URL地址上,在web.xml文件中使用元素和元素完成,如上面的實(shí)例。


          ? ? ? ? *用于注冊(cè)Servlet,包含了兩個(gè)子元素,分別用于設(shè)置servlet的名稱(chēng)以及servlet的類(lèi)名。


          ? ? ? ? *用于映射上面中的對(duì)外訪問(wèn)路徑,同樣包含兩個(gè)元素,分別用于設(shè)置servlet的名稱(chēng)以及servlet的對(duì)外訪問(wèn)路徑。


          ? ? ? ? 在servlet映射到URL有兩種格式:


          ? ? ? ? 1.“*.擴(kuò)展名”


          ? ? ? ? 2.以正斜杠(/)開(kāi)頭并以“/*”結(jié)尾。


          ? ? ? ? servlet對(duì)url的匹配規(guī)則以及路徑問(wèn)題,大家可以上網(wǎng)查,有很多相關(guān)的資料,例如:http://blog.csdn.net/xh16319/article/details/8014107


          ? ? ? ? ? ? ?


          4、Web服務(wù)器調(diào)用Servlet過(guò)程(Servlet生命周期)

          ? ? ?


          ? ? ? servlet程序是由web服務(wù)器調(diào)用,web服務(wù)器實(shí)現(xiàn)了對(duì)servlet生命周期的管理。servlet的生命周期分為四步:


          ? ? ? ? ? 1)實(shí)例化以及加載servlet,new的過(guò)程。


          ? ? ? ? ? 2)初始化init(ServletConfig)。


          ? ? ? ? ? 3)處理請(qǐng)求,調(diào)用servlet的service,doget,dopost方法將Request和Response,作為參數(shù)傳遞。


          ? ? ? ? ? 4)退出服務(wù),調(diào)用destory方法釋放資源。


          ? ? ? ? ??




          ?注意:


          ? ? ? ? ?1、servlet只實(shí)例化一次。感覺(jué)有點(diǎn)單例模式的意思,大家可以研究一下Tomcat的實(shí)現(xiàn)原理。


          ? ? ? ? ?2、init方法也只執(zhí)行一次。servlet實(shí)例只創(chuàng)建一次,所以init初始化只調(diào)用一次。



          5、Servlet線程安全問(wèn)題


          ? ? ? ?當(dāng)多個(gè)客戶(hù)端并發(fā)訪問(wèn)同一個(gè)Servlet時(shí),web服務(wù)器會(huì)為每一個(gè)客戶(hù)端的訪問(wèn)請(qǐng)求創(chuàng)建一個(gè)線程,并在這個(gè)線程上調(diào)用service方法,因此,service方法內(nèi)如果訪問(wèn)了同一個(gè)資源的話(huà),就有可能引發(fā)線程安全問(wèn)題。大家重點(diǎn)理解下面兩句即可:

          (1) Servlet是單實(shí)例多線程的,如果存在可以修改的成員變量將會(huì)出現(xiàn)線程安全問(wèn)題。

          (2) 使用Servlet最好保證Servlet是無(wú)狀態(tài)的,也就是沒(méi)有可以修改的成員變量。



          ? ? ? ?這篇博文只是介紹了Servlet基礎(chǔ)知識(shí),大家還有什么疑問(wèn)可以給我留言,我會(huì)及時(shí)給大家解決。






          =============================================================================================================================


          ? ? ? ? 下篇,我們做一個(gè)JDBC連接Oracle數(shù)據(jù)庫(kù)的實(shí)例!

          ————————————————

          9aad621a9ba2a997eb1ac57131440295.webp


          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香五月婷婷啪啪 | 人人操美女 | 成人精品三级AV在线 | 欧美日韩男女拍拍视频正在播放 | 色婷婷,大香蕉 |