JavaWeb學習筆記7 —— Servlet

JavaWeb學習筆記7 —— Servlet


參考教程B站狂神https://www.bilibili.com/video/BV12J411M7Sj


Servlet簡介

  • Servlet就是sun公司開發動態web的一門技術
  • Sun在這些API中提供一個接口叫做:Servlet,如果你想開發一個Servlet程序,只需要完成兩個小步驟:
    • 編寫一個類,實現Servlet接口
    • 把開發好的Java類部署到web服務器中。
      把實現了Servlet接口的Java程序叫做,Servlet

Servlet入門

Serlvet接口Sun公司有兩個默認的實現類:HttpServlet,GenericServlet

  1. 構建一個普通的Maven項目,刪掉裏面的src目錄,這個項目裏面建立Moudel;這個空的工程就是Maven主工程;
    創建Maven項目詳見博客:https://blog.csdn.net/qq_43594119/article/details/106199248

maven的servlet地址: https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
在這裏插入圖片描述
new 一個Module
在這裏插入圖片描述
在這裏插入圖片描述

  1. 關於Maven父子工程的理解:
    父項目(Project)的porm.xml文件裏有:
    <modules>
        <module>servlet-01</module>
    </modules>

字模塊(Module)的porm.xml文件裏有:

    <parent>
        <artifactId>javaweb-02-servlet</artifactId>
        <groupId>com.ylw</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

父項目中的jar包,子項目可以直接使用

  1. Maven環境優化
  • 修改web.xml爲最新的,內容如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">

</web-app>

原來的
<!--<!DOCTYPE web-app PUBLIC-->
<!-- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"-->
<!-- "http://java.sun.com/dtd/web-app_2_3.dtd" >-->

<!--<web-app>-->
<!--  <display-name>Archetype Created Web Application</display-name>-->
<!--</web-app>-->
  1. 編寫一個Servlet程序
  • 新建一個java class 文件
  • 實現Servlet接口,這裏我們直接繼承HttpServlet
    在這裏插入圖片描述
  • 重寫方法(ctrl+o 快捷鍵)
    在這裏插入圖片描述
  1. 編寫Servlet的映射
    爲什麼需要映射:我們寫的是JAVA程序,但是要通過瀏覽器訪問,而瀏覽器需要連接web服務器,所以我們需要再web服務中註冊我們寫的Servlet,還需給他一個瀏覽器能夠訪問的路徑;
    在web.xml裏註冊
    <!--註冊Servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.ylw.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--Servlet的請求路徑,上面的name和下面的name要一樣-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

在這裏插入圖片描述

  1. 配置Tomcat,詳見博客:https://blog.csdn.net/qq_43594119/article/details/106199248

  2. 啓動Tomcat測試
    在這裏插入圖片描述
    進入剛剛註冊的servlet
    在這裏插入圖片描述

Servlet原理

Servlet是由Web服務器調用,web服務器在收到瀏覽器請求之後,會:
在這裏插入圖片描述

Mapping問題

  1. 一個Servlet可以指定一個映射路徑
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
  1. 一個Servlet可以指定多個映射路徑
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello4</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello5</url-pattern>
    </servlet-mapping>
  1. 一個Servlet可以指定通用映射路徑,*號是通配符
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello/*</url-pattern>
    </servlet-mapping>
  1. 默認請求路徑
    這樣寫的話,Tomcat訪問就不會進index.jsp文件了,直接進servlet
    <!--默認請求路徑-->
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
  1. 指定一些後綴或者前綴等等….注意:這時候 * 前面就不要加路徑了
<!--可以自定義後綴實現請求映射
    注意點,*前面不能加項目映射的路徑
    hello/sajdlkajda.ylw
    -->
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>*.ylw</url-pattern>
</servlet-mapping>
  1. 優先級問題 指定了固有的映射路徑優先級最高,如果找不到就會走默認的處理請求;
<!--404-->
<servlet>
    <servlet-name>error</servlet-name>
    <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>error</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章