JavaWeb——感謝尚硅谷官方文檔

JavaWeb——感謝尚硅谷官方文檔

    • XML
      • 一、xml簡介
      • 二、xml的語法
        • 1、文檔申明
        • 2、xml注釋
        • 3、xml元素
        • 4、xml屬性
        • 5、xml語法規則
      • 三、xml解析技術
        • 1、使用dom4j解析xml
    • Tomcat
      • 一、JavaWeb的概念
      • 二、web資源的分類
      • 三、常見的web服務器
      • 四、Tomcat的使用
        • 1、安裝
        • 2、Tomcat的目錄介紹
        • 3 啟動Tomcat
        • 4、停止Tomcat
        • 5、如何修改Tomcat的端口號
        • 6、如何部署web工程到Tomcat中
        • 7、ROOT 的工程的訪問、默認 index.html 頁面的訪問
    • Servlet
      • 一、Servlet
        • 1、什么是Servlet
        • 2、手動實現一個servlet程序
        • 3、servlet-url地址如何定位到servlet程序
        • 4、Servlet程序的生命周期
        • 5、通過繼承HttpServlet來實現Servlet接口
        • 6、使用IDEA創建Servlet程序
        • 7、Servlet 類的繼承體系
      • 二、ServletConfig類
        • 1、ServletConfig類的三大作用
        • 2、如何獲取到ServletConfig
      • 三、ServletContext類
        • 1、什么是 ServletContext
        • 2、ServletContext類的四個作用
      • 四、Http協議
    • Cookie和Session
      • 一、Cookie
        • 1、什么是cookie?
        • 2、如何創建 cookie ?
        • 3、服務器端如何獲取cookie
        • 4、Cookie值的修改
        • 5、Cookie的生命控制
        • 6、Cookie有效路徑 Path的設置
      • 二、Session會話
        • 1、什么是Session會話?
        • 2、如何創建Session 和 獲取
        • 3、Session的生命周期
        • 4、瀏覽器和session直接關聯的技術內幕
    • Filter過濾器
      • 一、Filter是什么過濾器
      • 二、Filter 初體驗
      • 三、Filter的生命周期
      • 四、FilterConfig類
      • 五、Filter過濾器鏈
      • 六、Filter的攔截路徑

僅自用,如有侵權,立刻刪!——感謝【尚硅谷】官方文檔

XML

一、xml簡介

什么是 xml? xml 是可擴展的標記性語言

xml 的主要作用有:

  • 用來保存數據,而且這些數據具有自我描述性
  • 它還可以做為項目或者模塊的配置文件
  • 還可以做為網絡傳輸數據的格式(現在 JSON 為主)

二、xml的語法

1、文檔申明
<?xml version="1.0" encoding="UTF-8"?> <!--xml聲明-->
2、xml注釋
html 和 XML 注釋 一樣 : <!--  -->
3、xml元素

xml元素指的是從開始標簽到結束標簽的部分(包括標簽)

元素可包含其他元素,文本或者兩者的混合物

<bookstore><book category="CHILDREN"><title>Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="WEB"><title>Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book>
</bookstore>
4、xml屬性

xml 的標簽屬性和 html 的標簽屬性是非常類似的,屬性可以提供元素的額外信息

在標簽上可以書寫屬性: 一個標簽上可以書寫多個屬性。每個屬性的值必須使用 引號 引起來。

5、xml語法規則

1)所有 XML 元素都須有關閉標簽(也就是閉合)

2)XML對大小寫敏感

3)XML 必須正確地嵌套

4)XML 文檔必須有根元素

5)XML 的屬性值須加引號

6)XML 中的特殊字符

> 特殊字符 : &gt
< 特殊字符 : &lt

7)文本區域 (CDATA區域)

CDATA 語法可以告訴 xml 解析器,我 CDATA 里的文本內容,只是純文本,不需要 xml 語法

CDATA 格式:

<![CDATA[ 這里輸入的字符會原樣顯示,不會解析xml ]]>

三、xml解析技術

xml 可擴展的標記語言。 不管是 html 文件還是 xml 文件它們都是標記型文檔,都可以使用 w3c 組織制定的 dom 技術

早期 JDK 為我們提供了兩種 xml 解析技術 DOM 和 Sax 簡介(已經過時,但我們需要知道這兩種技術)

dom 解析技術是 W3C 組織制定的,而所有的編程語言都對這個解析技術使用了自己語言的特點進行實現。 Java 對 dom 技術解析標記也做了實現。

第三方的解析:

jdom 在 dom 基礎上進行了封裝 、

dom4j 又對 jdom 進行了封裝。

pull 主要用在 Android 手機開發,是在跟 sax 非常類似都是事件機制解析 xml 文件。

這個 Dom4j 它是第三方的解析技術。我們需要使用第三方給我們提供好的類庫才可以解析 xml 文件。

1、使用dom4j解析xml

1)引入第三方類庫
在這里插入圖片描述
2)解析代碼demo

@Test
public void test1() throws DocumentException {// 1、創建一個SaxReader輸入流,來讀取xml配置文件,生成document對象SAXReader reader = new SAXReader();Document document = reader.read("src/books.xml");// 2、通過Document獲取根元素Element root = document.getRootElement();// 3、通過根元素獲取book標簽對象List<Element> books= root.elements("book");// 4、遍歷 處理每個book標簽轉換為book類for (Element book : books) {//asXML是將標簽對象轉化為標簽字符串Element name = book.element("name");// getText()獲取標簽中的文本內筒String nameText = name.getText();//獲取屬性的值String sn = book.attributeValue("sn");}
}

Tomcat

一、JavaWeb的概念

所有通過Java語言編寫的可以通過瀏覽器訪問的程序的總稱,叫做JavaWeb 。 Java是基于請求和響應開發的

二、web資源的分類

web資源按照實現技術和呈現的效果不同,分為靜態資源和動態資源

  • 靜態資源 :html、css、js、txt、mp4 視頻 , jpg 圖片
  • 動態資源: jsp 頁面、Servlet 程序

三、常見的web服務器

什么是web服務器: https://blog.csdn.net/HelloZEX/article/details/122810557

  • Tomcat:由 Apache 組織提供的一種 Web 服務器,提供對 jsp 和 Servlet 的支持。它是一種輕量級的 javaWeb 容器(服務 器),也是當前應用最廣的 JavaWeb 服務器(免費)。
  • Jboss:是一個遵從 JavaEE 規范的、開放源代碼的、純 Java 的 EJB 服務器,它支持所有的 JavaEE 規范(免費)。
  • GlassFish: 由 Oracle 公司開發的一款 JavaWeb 服務器,是一款強健的商業服務器,達到產品級質量(應用很少)。
  • Resin:是 CAUCHO 公司的產品,是一個非常流行的服務器,對 servlet 和 JSP 提供了良好的支持, 性能也比較優良,resin 自身采用 JAVA 語言開發(收費,應用比較多)
  • WebLogic:是 Oracle 公司的產品,是目前應用最廣泛的 Web 服務器,支持 JavaEE 規范, 而且不斷的完善以適應新的開發要求,適合大型項目(收費,用的不多,適合大公司)

四、Tomcat的使用

1、安裝

去官網下載需要使用的Tomcat版本對應的zip壓縮吧,解壓到需要安裝的目錄即可

2、Tomcat的目錄介紹

在這里插入圖片描述

bin 專門用來存放 Tomcat 服務器的可執行程序

conf 專門用來存放 Tocmat 服務器的配置文件

lib 專門用來存放 Tomcat 服務器的 jar 包

logs 專門用來存放 Tomcat 服務器運行時輸出的日記信息

temp 專門用來存放 Tomcdat 運行時產生的臨時數據

webapps 專門用來存放部署的 Web 工程。

work 是 Tomcat 工作時的目錄,用來存放 Tomcat 運行時 jsp 翻譯為 Servlet 的源碼,和 Session的鈍化目錄

3 啟動Tomcat

第一種方式

找到 Tomcat 目錄下的 bin 目錄下的 startup.bat 文件,雙擊,就可以啟動 Tomcat 服務器

打開瀏覽器,訪問 http://localhost:8080
在這里插入圖片描述
第二種方式

以命令行方式cd到 E:\apache-tomcat-8.5.38\bin,輸入:catalina run , 發現Tomcat也成功啟動
在這里插入圖片描述

4、停止Tomcat

1)點擊 tomcat 服務器窗口的 x 關閉按鈕

2)把 Tomcat 服務器窗口置為當前窗口,然后按快捷鍵 Ctrl+C

3)找到 Tomcat 的 bin 目錄下的 shutdown.bat 雙擊,就可以停止 Tomcat

5、如何修改Tomcat的端口號

找到 Tomcat 目錄下的 conf 目錄,找到 server.xml 配置文件
在這里插入圖片描述

6、如何部署web工程到Tomcat中

把 web 工程的目錄拷貝到 Tomcat 的 webapps 目錄下即可

①、在webapps下新建目錄book

②、放入靜態頁面
在這里插入圖片描述
③、訪問相應的地址 http://localhost:8080/book/pages/user/login.html
在這里插入圖片描述

7、ROOT 的工程的訪問、默認 index.html 頁面的訪問

當我們在瀏覽器地址欄中輸入訪問地址如下:

? http://ip:port/ ====>>>> 沒有工程名的時候,默認訪問的是 ROOT 工程。

? 例如:啟動tomcat后訪問localhost:8080,默認訪問的是root工程下的index.html

當我們在瀏覽器地址欄中輸入的訪問地址如下:

? http://ip:port/工程名/ ====>>>> 沒有資源名,默認訪問 index.html

Servlet

一、Servlet

1、什么是Servlet

1)Servlet是JavaEE規范之一。規范就是接口

2)Servlet是JavaWeb三大組件之一。三大組件分別是:Servlet程序,Filter過濾器,Linstener

監聽器

3)Servlet是運行在服務器上的一個Java程序,它可以接收客戶端發送過來的請求并響應數據給客戶端

2、手動實現一個servlet程序
  • 編寫一個類去實現Servlet接口
  • 實現service方法,處理請求,并響應數據
  • 到web.xml中配置Servlet程序訪問地址

demo演示如下:

1)新建web工程
在這里插入圖片描述
2)編寫HelloServlet類繼承Servlet接口,并重寫service方法

public class HelloServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}/**service方法是專門用來處理請求和響應的*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("HelloServlet程序被訪問了");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

3)編寫web.xml 配置HelloServlet程序的訪問路徑

<!-- servlet標簽給Tomcat配置Servlet程序 -->
<servlet><!--servlet-name 給Servlet起一個別名--><servlet-name>HelloServlet</servlet-name><!--servlet-class 是Servlet程序的全類名--><servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet><!-- servlet-mapping標簽給Servlet程序配置訪問地址 -->
<servlet-mapping><!--servlet-name是告訴服務器,我當前配置的地址時給哪個Servlet程序使用--><servlet-name>HelloServlet</servlet-name><!--url-pattern配置訪問地址 --><url-pattern>/hello</url-pattern>
</servlet-mapping>

4)訪問路徑 http://localhost:8080/06_Servlet/hello
在這里插入圖片描述

3、servlet-url地址如何定位到servlet程序

在這里插入圖片描述

4、Servlet程序的生命周期
  • 執行Servlet構造器方法
  • 執行init初始化方法 (第一、二步是在第一次訪問的時候創建Servlet的程序時會調用)
  • 執行service方法 (第三步每次訪問servlet程序時都會執行)
  • 執行destory銷毀方法 (Tomcat容器停止的時候才會執行)
5、通過繼承HttpServlet來實現Servlet接口

一般在實際項目開發中,都是使用繼承 HttpServlet 類的方式去實現 Servlet 程序。

1)編寫一個類去繼承 HttpServlet 類

2)根據業務需要重寫 doGet 或 doPost 方法

3)到 web.xml 中的配置 Servlet 程序的訪問地址

public class HelloServlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("get請求");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("post請求");}
}
6、使用IDEA創建Servlet程序

在這里插入圖片描述

7、Servlet 類的繼承體系

在這里插入圖片描述

二、ServletConfig類

1、ServletConfig類的三大作用
  • 可以獲取 Servlet 程序的別名 servlet-name 的值
  • 獲取初始化參數 init-param
  • 獲取 ServletContext 對象
2、如何獲取到ServletConfig

1)在重寫Servlet的init方法時,參數列表中攜帶ServletConfig

@Override
public void init(ServletConfig servletConfig) throws ServletException {System.out.println("2 HelloServlet init方法");//1)可以獲取 Servlet 程序的別名 servlet-name 的值String servletName = servletConfig.getServletName();System.out.println("servletName:"+servletName);//2)獲取初始化參數 init-paramString key = servletConfig.getInitParameter("key");System.out.println(key);//3)獲取 ServletContext 對象servletConfig.getServletContext();
}<!-- initparam的配置 -->
<servlet><!--servlet-name 給Servlet起一個別名--><servlet-name>HelloServlet</servlet-name><!--servlet-classServlet程序的全類名--><servlet-class>com.atguigu.servlet.HelloServlet</servlet-class><init-param><param-name>key</param-name><param-value>i like reba</param-value></init-param>
</servlet>

2)也可以在非init方法中獲取到ServletConfig

通過 ServletConfig servletConfig = getServletConfig() 獲取到ServletConfig

通過代碼可以看到 這個方法是由GenericServlet 提供的,再往上走,就是tomcat在創建servlet程序時,創建了ServletConfig對象

public class HelloServlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("get請求");ServletConfig servletConfig = getServletConfig();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("post請求");}
}

【注意】但是此時,你如果重寫了init方法,則必須調用父類的init方法,否則獲取到的servletConfig 為null
在這里插入圖片描述

三、ServletContext類

1、什么是 ServletContext
  • ServletContext是一個接口,它表示Servlet上下文
  • 一個web工程,只有一個ServletContext對象實例
  • ServletContext是一個域對象
  • ServletContext在web工程部署啟動的時候創建,在web工程停止的時候銷毀

什么是域對象?

域對象,是可以像 Map 一樣存取數據的對象,叫域對象。 這里的域指的是存取數據的操作范圍,整個 web 工程。

2、ServletContext類的四個作用
  • 獲取 web.xml 中配置的上下文參數 context-param 2、獲取當前的工程路徑,格式: /工程路徑
  • 獲取當前的工程路徑,格式: /工程路徑
  • 獲取工程部署后在服務器硬盤上的絕對路徑
  • 像 Map 一樣存取數
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = getServletConfig().getServletContext();String username = servletContext.getInitParameter("username");System.out.println("context-param 參數 username 的值是:" + username);System.out.println( "當前工程路徑:" + servletContext.getContextPath() );System.out.println("工程部署的路徑是:" + servletContext.getRealPath("/"));/*作為域保存數據*/servletContext.setAttribute("houchen", "帥哥");
}

四、Http協議

Cookie和Session

一、Cookie

1、什么是cookie?

Cookie 是服務器通知客戶端保存鍵值對的一種技術;當客戶端有了Cookie之后,之后的每次請求都會攜帶cookie;

【注意】每個cookie的大小不超過 4kb

2、如何創建 cookie ?

cookie是由服務器端進行創建,然后通知客戶端保存cookie的
在這里插入圖片描述

protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {//1 創建 Cookie 對象Cookie cookie = new Cookie("key4", "value4");//2 通知客戶端保存 Cookieresp.addCookie(cookie);//1 創建 Cookie 對象Cookie cookie1 = new Cookie("key5", "value5");//2 通知客戶端保存 Cookieresp.addCookie(cookie1);resp.getWriter().write("Cookie 創建成功");
}
3、服務器端如何獲取cookie

服務器端獲取客戶端的cookie只需要一行代碼 :

Cookie[] cookies = req.getCookies();
4、Cookie值的修改

方式一: 直接使用相同的key覆蓋原來的cookie對象,調用 response.addCookie()通知客戶端保存修改

Cookie cookie = new Cookie("key1","newValue1");
// 3、調用 response.addCookie( Cookie ); 通知 客戶端 保存修改
resp.addCookie(cookie);

方式二:

先查找到需要修改的 Cookie 對象;調用 setValue()方法賦于新的 Cookie 值;調用 response.addCookie()通知客戶端保存修改

Cookie cookie = CookieUtils.findCookie("key2", req.getCookies());
if (cookie != null) {// 2、調用 setValue()方法賦于新的 Cookie 值。cookie.setValue("newValue2");// 3、調用 response.addCookie()通知客戶端保存修改resp.addCookie(cookie);
}
5、Cookie的生命控制

Cookie 的生命控制指的是如何管理 Cookie 什么時候被銷毀(刪除)

setMaxAge()

  • 正數 表示在指定的秒數后過期
  • 負數 表示瀏覽器一關,Cookie就會被刪除
  • 0 表示馬上刪除cookie => 響應到了客戶端就會被刪除
Cookie cookie = new Cookie("life3600", "life3600");
cookie.setMaxAge(60 * 60); // 設置 Cookie 一小時之后被刪除。無效
resp.addCookie(cookie);
resp.getWriter().write("已經創建了一個存活一小時的 Cookie");
6、Cookie有效路徑 Path的設置

Cookie 的 path 屬性可以有效的過濾哪些 Cookie 可以發送給服務器。哪些不發。
在這里插入圖片描述

二、Session會話

1、什么是Session會話?
  • Session本質上就是一個接口 (HttpSession)

  • Session是一個會話,它是用來維護客戶端和服務器之間關聯的一種技術;每個客戶端都有自己的一個Session會話,

    session會話中,經常用來你保存用戶登錄之后的信息

2、如何創建Session 和 獲取

創建和獲取Session ,它們的api是一樣的。

request.getSession()

? 第一次調用是:創建Session會話

? 第二次調用是:獲取前面創建好的Session會話對象

isNew(); 判斷到底是不是剛創建出來的(新的)

? true 表示剛創建

	false 表示獲取之前創建

每個會話都有一個身份證號。也就是 ID 值。而且這個 ID 是唯一的。getId() 得到 Session 的會話 id 值。

3、Session的生命周期

session超時的理解

瀏覽器和服務器之間創建了一個Session,由于客戶端長時間(休眠時間)沒有與服務器交互,服務器將此Session銷毀,客戶端再一次與服務器交互時之前的Session就不存在了,但服務器與客戶端會產生一個新的會話,之前的session里的屬性值全部丟失,產生新的sesssionId

public void setMaxInactiveInterval(int interval) 設置 Session 的超時時間(以秒為單位),超過指定的時長,Session就會被銷毀。
值為正數的時候,設定 Session 的超時時長。
負數表示永不超時(極少使用)
public int getMaxInactiveInterval()獲取 Session 的超時時間
public void invalidate() 讓當前 Session 會話馬上超時無效

Session 默認的超時時長是多少! Session 默認的超時時間長為 30 分鐘。 因為在 Tomcat 服務器的配置文件 web.xml中默認有以下的配置,它就表示配置了當前 Tomcat 服務器下所有的 Session 超時配置默認時長為:30 分鐘。

<session-config><session-timeout>30</session-timeout>
</session-config>

如果說。你希望你的 web 工程,默認的 Session 的超時時長為其他時長。你可以在你自己的 web.xml 配置文件中做 以上相同的配置。就可以修改你的 web 工程所有 Seession 的默認超時時長。

<!--表示當前 web 工程。創建出來 的所有 Session 默認是 20 分鐘 超時時長-->
<session-config><session-timeout>20</session-timeout>
</session-config>

如果你想只修改個別 Session 的超時時長。就可以使用上面的 API。setMaxInactiveInterval(int interval)來進行單獨的設 置。 session.setMaxInactiveInterval(int interval)單獨設置超時時長

4、瀏覽器和session直接關聯的技術內幕

Session 技術,底層其實是基于 Cookie 技術來實現
在這里插入圖片描述

Filter過濾器

一、Filter是什么過濾器

  • Filter過濾器是JavaWeb的三大組件之一。三大組件分別是:Servlet程序、listener監聽器,Filter過濾器
  • Filter 過濾器它是 JavaEE 的規范。也就是接口
  • Filter 過濾器它的作用是:攔截請求,過濾響應

二、Filter 初體驗

Filter 過濾器的使用步驟:

  • 編寫一個類去實現 Filter 接口
  • 實現過濾方法 doFilter()
  • 到 web.xml 中去配置 Filter 的攔截路

1、要求:在你的 web 工程下,有一個 admin 目錄。這個 admin 目錄下的所有資源(html 頁面、jpg 圖片、jsp 文件、等等)都必 須是用戶登錄之后才允許訪問

2、filter的工作流程
在這里插入圖片描述
3、filter的代碼

public class AdminFilter implements Filter {/*** doFilter 方法,專門用于攔截請求。可以做權限檢查*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChainfilterChain) throws IOException, ServletException {HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;HttpSession session = httpServletRequest.getSession();Object user = session.getAttribute("user");
// 如果等于 null,說明還沒有登錄if (user == null) {servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);return;} else {
// 讓程序繼續往下訪問用戶的目標資源filterChain.doFilter(servletRequest,servletResponse);}}
}

4、web.xml配置

<!--filter 標簽用于配置一個 Filter 過濾器-->
<filter><!--給 filter 起一個別名--><filter-name>AdminFilter</filter-name><!--配置 filter 的全類名--><filter-class>com.atguigu.filter.AdminFilter</filter-class>
</filter>

三、Filter的生命周期

Filter 的生命周期包含幾個方法

  • 構造器方法
  • init 初始化方法 (第 1,2 步,在 web 工程啟動的時候執行)
  • doFilter 過濾方法 (第 3 步,每次攔截到請求,就會執行)
  • destroy 銷毀 (第 4 步,停止 web 工程的時候,就會執行)

四、FilterConfig類

FilterConfig 類見名知義,它是 Filter 過濾器的配置文件

Tomcat 每次創建 Filter 的時候,也會同時創建一個 FilterConfig 類,這里包含了 Filter 配置文件

FilterConfig 類的作用是獲取 filter 過濾器的配置內容

  • 獲取 Filter 的名稱 filter-name 的內容
  • 獲取在 Filter 中配置的 init-param 初始化參數
  • 獲取 ServletContext
@Override
public void init(FilterConfig filterConfig) throws ServletException {System.out.println("2.Filter 的 init(FilterConfig filterConfig)初始化");// 1、獲取 Filter 的名稱 filter-name 的內容System.out.println("filter-name 的值是:" + filterConfig.getFilterName());// 2、獲取在 web.xml 中配置的 init-param 初始化參數System.out.println("初始化參數 username 的值是:" + filterConfig.getInitParameter("username"));System.out.println("初始化參數 url 的值是:" + filterConfig.getInitParameter("url"));// 3、獲取 ServletContext 對象System.out.println(filterConfig.getServletContext());
}

web.xml中,filter的配置

<!--filter 標簽用于配置一個 Filter 過濾器-->
<filter><!--給 filter 起一個別名--><filter-name>AdminFilter</filter-name><!--配置 filter 的全類名--><filter-class>com.atguigu.filter.AdminFilter</filter-class><init-param><param-name>username</param-name><param-value>root</param-value></init-param><init-param><param-name>url</param-name><param-value>jdbc:mysql://localhost3306/test</param-value></init-param>
</filter>

五、Filter過濾器鏈

在這里插入圖片描述

六、Filter的攔截路徑

精確匹配

<url-pattern>/target.jsp</url-pattern>
以上配置的路徑,表示請求地址必須為:http://ip:port/工程路徑/target.jsp

目錄匹配

<url-pattern>/admin/*</url-pattern>
以上配置的路徑,表示請求地址必須為:http://ip:port/工程路徑/admin/*

后綴名匹配

<url-pattern>*.html</url-pattern>
以上配置的路徑,表示請求地址必須以.html 結尾才會攔截到
<url-pattern>*.do</url-pattern>
以上配置的路徑,表示請求地址必須以.do 結尾才會攔截到
<url-pattern>*.action</url-pattern>
以上配置的路徑,表示請求地址必須以.action 結尾才會攔截到

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初識Java 18-3 泛型

目錄 邊界 通配符 編譯器的能力范疇 逆變性 無界通配符 捕獲轉換 本筆記參考自&#xff1a; 《On Java 中文版》 邊界 在泛型中&#xff0c;邊界的作用是&#xff1a;在參數類型上增加限制。這么做可以強制執行應用泛型的類型規則&#xff0c;但還有一個更重要的潛在效果…

如何在AD的PCB板做矩形槽孔以及如何倒圓弧角

Altium Designer 22下載安裝教程-CSDN博客 如何在AD上創建完整的項目-CSDN博客 開始前&#xff0c;請先安裝后AD&#xff0c;并創建好項目。 目錄 1. 如何在AD的PCB板做矩形槽孔 2. 如何在AD的PCB板倒圓弧角 1. 如何在AD的PCB板做矩形槽孔 首先&#xff0c;我們進入上面創…

PTA 7-9 堆棧操作合法性

7-9 堆棧操作合法性 分數 20 全屏瀏覽題目 作者 DS課程組 單位 浙江大學 假設以S和X分別表示入棧和出棧操作。如果根據一個僅由S和X構成的序列&#xff0c;對一個空堆棧進行操作&#xff0c;相應操作均可行&#xff08;如沒有出現刪除時棧空&#xff09;且最后狀態也是棧空…

2023年11個最佳免費WordPress主題

如果您剛剛開始使用 WordPress&#xff0c;您可能會很自然地認為&#xff0c;只要免費的WordPress主題看起來像您想要的網站主題&#xff0c;那么它就很合適。不幸的是&#xff0c;事情并沒有那么簡單。這就是為什么在今天的文章中&#xff0c;我們概述了一份可靠的標準清單&am…

某基金公司趙哥“逆襲”了!!!

趙哥&#xff0c;在上海一家基金公司做運維主管。 平時工作的首要任務&#xff0c;就是保障公司各項信息系統的安全運行。 萬一系統運行中出現了一些重要問題&#xff0c;他還要負責進行調查、記錄與匯報... 總之&#xff0c;責任很重&#xff0c;該說不說&#xff0c;搞不好…

Java互聯網+公立醫院績效考核源碼

一、建設信息化醫院績效考核的意義 1.提高考核效率&#xff1a;通過信息化手段&#xff0c;可以將績效考核數據自動采集、整理、分析和報告&#xff0c;大大提高了考核效率&#xff0c;減少了人工干預和錯誤率。 2.增強考核公正性&#xff1a;信息化考核可以減少人為因素的干…

Electronica上海 Samtec 驗證演示 | FireFly?Micro Flyover System?

摘要/前言 在圓滿結束的2023慕尼黑上海電子展上&#xff0c;Samtec虎家團隊為觀眾帶來了前所未有的豐富體驗&#xff1a;產品展示、采訪、Demo演示、抽獎互動~ 尤其是Demo演示&#xff0c;虎家工程師FAE Marcus為大家帶來了數個精彩的產品與系統講解演示。其中更不乏合作伙伴…

Windows、VMware問題集合

Windows、VMware問題集合 一. Windows11安裝VMware17提升虛擬機性能1. 桌面右擊圖標點擊屬性——>兼容性&#xff0c;找到“以管理員身份運行此程序”勾選&#xff0c;最后點擊確定即可。2. 關閉win11的內核隔離功能。 二. VMware虛擬機報錯&#xff08;虛擬化性能計數器需要…

C語言——求分段函數 y=f(x)的值

求分段函數 yf(x)的值,f(x)的表達式如下: #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int x,y;printf("請輸入x的值&#xff1a;");scanf("%d",&x);if(x>5){yx3;}else if(x>0 && x<5){y0;}elsey2*x30;pr…

Python 基礎【四】--數據類型-字符串【2023.11.23】

1 .定義 字符串是 Python 的一種數據類型&#xff0c;它可以通過單引號 ‘、雙引號 "、三引號 ‘’’ 或 “”"來定義。 aabcd bacsdcd c"""accsfv""" print(a) print(b) print(c)2 .基本操作 訪問單個字符 注意&#xff1a;從0開始…

Java_注解

1. 簡介 在Java中&#xff0c;注解&#xff08;Annotation&#xff09;是一種元數據形式&#xff0c;它為代碼添加了額外的信息&#xff0c;這些信息可以被編譯器、工具、框架或運行時環境使用。注解提供了一種聲明性的方式來向程序中添加元數據&#xff0c;而不需要修改程序的…

Harmony Ble藍牙App(二)連接與發現服務

Ble藍牙App&#xff08;二&#xff09;連接與發現服務 前言正文一、BlePeripheral回調二、連接和斷連三、連接狀態回調四、發現服務五、服務提供者六、顯示服務七、源碼 前言 在上一篇中我們進行掃描設備的處理&#xff0c;本文中進行連接和發現服務的數據處理&#xff0c;運行…

Mysql數據庫 18.Mysql SQL優化

SQL優化 一、插入優化 多條插入語句&#xff0c;影響執行效率 優化方案 1、批量插入&#xff1a; 在一條insert語句中多條數據&#xff0c;但是如果數據量過大&#xff0c;也不能完全使用一條語句語句&#xff0c;建議數據量為一次性插入1000條以下的數據 如果數據量多大&…

plantUML學習與實戰

背景 在日常工作或者生活中&#xff0c;使用交互圖來描述想法&#xff0c;往往相對于文字來說&#xff0c;可讀性更高&#xff0c;同時一定程度上可以提高溝通效率&#xff0c;但是苦于&#xff0c;不想對一堆控件拖拖拉拉&#xff0c;本人就是一個很討厭畫圖&#xff0c;但是…

【華為OD題庫-036】跳格子2-java

題目 小明和朋友玩跳格子游戲&#xff0c;有n個連續格子組成的圓圈&#xff0c;每個格子有不同的分數&#xff0c;小朋友可以選擇從任意格子起跳&#xff0c;但是不能跳連續的格子&#xff0c;不能回頭跳&#xff0c;也不能超過一圈:給定一個代表每個格子得分的非負整數數組&am…

Python---把函數的返回值作為另外一個函數的參數

def test1():return 50def test2(num):print(num)# 1. 保存函數test1的返回值 result test1()# 2.將函數返回值所在變量作為參數傳遞到test2函數 test2(result) # 50

數據結構 棧和隊列的應用

在昨天分享了有關棧和隊列的基礎知識和基本操作后&#xff0c;今天來分享一些有關棧和隊列的應用 棧和隊列的應用 刪除字符串中的所有相鄰重復項 #include <iostream> #include <stack> using namespace std; string remove(string S) {stack<char> charS…

MySql表中添加emoji表情

共五處需要修改。 語句執行修改&#xff1a; ALTER TABLE xxxxx CONVERT TO CHARACTER SET utf8mb4;

微型計算機原理MOOC題

一、8254 1.掉坑了&#xff0c;AL傳到端口不意味著一定傳到的是低位&#xff0c;要看控制字D5和D4&#xff0c;10是只寫高位&#xff0c;所以是0A00.。。 2. 3. 4.待解決&#xff1a;

優化C++資源利用:探索高效內存管理技巧

W...Y的主頁 &#x1f60a; 代碼倉庫分享&#x1f495; &#x1f354;前言&#xff1a; 我們之前在C語言中學習過動態內存開辟&#xff0c;使用malloc、calloc與realloc進行開辟&#xff0c;使用free進行堆上內存的釋放。進入C后對于動態內存開辟我們又有了新的內容new與dele…