日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaWeb(十)——jetty服务器、创建jsp项目、servlet生命周期及url的匹配规则

發布時間:2025/3/13 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb(十)——jetty服务器、创建jsp项目、servlet生命周期及url的匹配规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. jetty服務器的下載與安裝
    • 1.1 jetty簡介
    • 1.2 jetty的下載與安裝
  • 2. idea創建jsp項目
  • 3. idea給jsp項目導入jar包
  • 4. 編寫第一個servlet
  • 5. Servlet的生命周期
  • 6. Servlet的URL匹配規則
  • 7. 字符集概念

1. jetty服務器的下載與安裝

1.1 jetty簡介

Jetty是當下非常流行的一款輕量級Java Web服務器和Servlet容器實現,類似于Tomcat,它由Eclipse基金會托管,完全免費而且開放源代碼,因此所有人均可以從其官網下載最新源代碼進行研究。由于其輕量、靈活的特性,Jetty被廣泛用于一系列知名產品,例如ActiveMQ、Maven、Spark、Google App Engine、Eclipse、Hadoop等等。

1.2 jetty的下載與安裝

  • 從http://www.eclipse.org/jetty/previousversions.html網址可以下載不同版本的jetty,不同版本要求的jdk版本是不同的,根據自己jdk版本進行下載。

  • 下載完成之后,直接解壓就可以使用,博主解壓之后的路徑是:D:\Environment\jetty。下面是這個路徑下解壓后目錄和文件的解釋。

  • 下面是這個路徑下解壓后目錄和文件的解釋

  • jetty的啟動
    為了防止與Tomcat的端口號:8080 沖突,編輯start.ini文件,將jetty的端口號改為:8888

    一般情況下都可以通過安裝目錄下的start.jar包來啟動jetty,除此之外,還可以通過dos命令,先進入jetty的安裝文件夾,再輸入命令來進行啟動。
    啟動命令為:java -jar start.jar

2. idea創建jsp項目

  • 先創建一個工作空間

    打開IDEA軟件



    至此,工作空間創建完畢!

  • 創建項目
    File->New->Module


    設置jetty服務器


  • 測試訪問結果:

    由于支持熱部署,修改index.jsp里的代碼后,直接刷新就可以更新顯示

3. idea給jsp項目導入jar包

  • 一般放在 WEB-INF/lib 目錄里面
  • 配置項目依賴


  • 編寫測試類測試
package com.zz.test; import java.sql.Connection; import java.sql.DriverManager;/** 測試一下是否能加載MySQL的JDBC的驅動,如果能說明,jar能被識別。** */ public class Test {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=UTF-8";try{Class.forName("com.mysql.jdbc.Driver"); //加載驅動Connection conn = DriverManager.getConnection(url,"root","123456");if(conn!=null){System.out.println("連接MySQL成功!");}else{System.out.println("連接MySQL失敗!");}}catch(Exception ex){ex.printStackTrace();}} }

  • 分析:雖然可以這樣手工導入 jar包,但是顯然不利于大型項目開發,也不易于依賴維護管理,很容易出現依賴的版本沖突和依賴缺失的現象。因此,團隊開發時必須使用具有依賴管理的建構工具比如:maven,gradle等等。

4. 編寫第一個servlet

  • HelloWorldServlet 代碼:
package com.zz.servlet;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;//通過注解方式配置Servlet @WebServlet(value = "/HelloWorldServlet") public class HelloWorldServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("執行了HelloWorldServlet的doGet()...");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("執行了HelloWorldServlet的doPost()...");}@Overridepublic void destroy() {super.destroy();}@Overridepublic void init() throws ServletException {super.init();} }
  • index.jsp 代碼:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html><head><title></title></head><body><h1>我的jsp頁面</h1><%--使用表單實現發送一個post請求,請求的動作地址HelloWorldServlet--%><form action="HelloWorldServlet" method="post"><input type="submit" value="執行了HelloWorldServlet"></form></body> </html>
  • 測試訪問結果:
    輸入地址HelloWorldServlet,發送get請求


    執行表單,發送post請求

5. Servlet的生命周期

(1)加載和實例化
當Servlet容器啟動或客戶端發送一個請求時,Servlet容器會查找內存中是否存在該Servlet實例,若存在,則直接讀取該實例響應請求,直接進入步驟(3);如果不存在,就通過構造方法創建一個Servlet實例。
(2) 初始化
實例化后,Servlet容器將調用Servlet的 init() 方法進行初始化(一些準備工作或資源預加載工作)。
(3)服務
初始化后,Servlet處于能響應請求的就緒狀態。當接收到客戶端請求時,調用service() 的方法處理客戶端請求,HttpServlet的service()方法會根據不同的請求 轉調不同的doXxx()方法:doGet()和doPost()
(4)銷毀
重新發布項目,正常關閉tomcat時,會執行destroy() 方法,如果非正常關閉,相當于程序中斷,不會執行方法。

  • 測試代碼:
package com.zz.servlet;import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;//通過注解方式來配置Servlet,不用去寫web.xml @WebServlet(value = "HelloWorldServlet") public class HelloWorldServlet extends HttpServlet {//構造方法public HelloWorldServlet() {System.out.println("HelloWorldServlet的構造方法()...");}//service()方法@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("執行了HelloWorldServlet的service()...");super.service(req, resp);}//doGet()方法@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("執行了HelloWorldServlet的doGet()...");}//doPost()方法@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("執行了HelloWorldServlet的doPost()...");}//destroy()方法@Overridepublic void destroy() {System.out.println("HelloWorldServlet的destroy()...");}//init()方法@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("HelloWorldServlet的init()...");} }

第一次點擊表單按鈕:


第二次點擊表單的按鈕:

總結:

//從左到右的次序 1.如果是第一次請求。--->doGet構造方法-->init-->service --->destroy--->doPost2.如果不是第一次請求說明這個servlet已經駐留內存了。--->doGetservice -- ---->destroy--->doPost

注意:此測試是使用jetty服務器,沒有試驗出destroy的效果。如果使用tomcat服務器,重新發布項目,正常關閉tomcat時,會執行destroy()方法,如果非正常關閉,相當于程序中斷,不會執行方法。

  • 如何實現預加載
    servlet必須是你第一次請求的時候,才加載到內存中,默認是一種懶加載。
    如何使用積極加載?即不管是否用到,都先加載到內存中。

方法:添加一個loadOnStartup屬性,數字越小優先級別越高,來實現預加載。

如下圖在注釋后面,添加此屬性,點擊運行,沒有點擊請求,就運行了構造方法和初始化方法。

  • 一個servlet可以對應多個請求地址
    方法: 在注釋處使用urlPatterns屬性代替value屬性

比如如下,servlet的url寫法,必須以 / 開頭

@WebServlet(urlPatterns ={"/HelloWorldServlet","/Haha","/Hehe"} ,loadOnStartup = 1)

6. Servlet的URL匹配規則

  • 精確匹配: /servlet/HelloWorldServlet ,找最準確的地址。(優先級最高)
  • 路徑匹配: /abc/*
  • 擴展名匹配: * .action,注意:路徑匹配和擴展名匹配不能混用。如 /abc/* .action 這樣的寫法都不對。
  • 默認匹配:/
  • 過濾器 : /* 過濾所有的請求,一般servlet不會這樣配,一般使用在Filter過濾器上。

7. 字符集概念

  • 英文字符:
    占一個字節,ASCII,ISO_8859_1,Unicode,utf-8三者編碼都是一樣的,所以不存在亂碼問題。

  • 中文字符:

    gbkgb2312 1個字節unicode 4個字節utf-8 3個字節 同時字符的編碼值都不相同
  • 結論:
    (1)軟件開發中一律使用utf-8,utf-8本身就是unicode字符編碼的一種存儲編碼方案。
    (2)程序世界是一個英文的世界,能不用中文千萬不要用中文。
    在程序中,中文只能出現在兩個地方:①注釋 ②字符串變量中

總結

以上是生活随笔為你收集整理的JavaWeb(十)——jetty服务器、创建jsp项目、servlet生命周期及url的匹配规则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。