Java tomcat手動配置servlet詳解
1.準(zhǔn)備工作
如下圖,先按照要求創(chuàng)建好各個(gè)文件


這時(shí)候如果你覺得能運(yùn)行,那就錯(cuò)了(我一開始卡在這了)
idea的項(xiàng)目結(jié)構(gòu)

如果學(xué)習(xí)過用idea創(chuàng)建servlet應(yīng)用,你肯定會發(fā)現(xiàn),這里提供的web.xml根本不完整
請用以下代碼囊括上述的servlet標(biāo)簽
<?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">
//在這里加入上面說過的servlet標(biāo)簽代碼
</web-app>
2.編譯文件
編碼出問題

如上,剛開始我想編譯,但報(bào)錯(cuò)了
這里的原因是,javac會根據(jù)你的操作系統(tǒng)編碼讀取源文件代碼,而我的電腦是默認(rèn)GBK的,但這些源碼我們都是在記事本寫下的,而記事本默認(rèn)使用UTF-8保存,于是相當(dāng)于javac用GBK讀取UTF-8的內(nèi)容,遂報(bào)錯(cuò)
因此我們要指定讀取源碼的編碼格式為UTF-8

學(xué)習(xí)類加載器
這時(shí)候報(bào)的錯(cuò)是正常顯示的中文了,找不到servlet,意思就是你用了這個(gè)類,但沒找到,根據(jù)雙親委派,我們知道找一個(gè)類,會先從system class loader類加載器的緩存開始找,沒有就找他的父加載器即extension class loader的緩存,沒有就再找extension class loader的父加載器bootstrap class loader的緩存,還是沒有就開始向下,先找bootstrap class loader的指定路徑下的jar包是否含有我們要的類,從下圖可知,跟類加載器加載核心jar包,一些基本的類都在里面,路徑是jdk下的jre下的lib

這時(shí)候還沒有找到,就去擴(kuò)展類加載器的指定路徑找,我的電腦是以下路徑

如果還沒有找到,那就在系統(tǒng)類加載器指定路徑,即耳熟能詳?shù)腸lasspath,你平時(shí)在配置path的時(shí)候應(yīng)該也遇到過,
那么-cp命令后面跟上classpath就是告訴系統(tǒng)如果一套下來沒找到就去我這找,-cp全稱就是-classpath兩種寫法都能運(yùn)行
處理編譯結(jié)果
當(dāng)你通過在文件管理器輸入cmd進(jìn)行javac時(shí),默認(rèn)產(chǎn)生class文件在當(dāng)前目錄,可這里有個(gè)重點(diǎn),你寫的java源文件有package這條命令,那么我們必須按照包名逐級創(chuàng)建文件夾(運(yùn)行的時(shí)候才能找到你導(dǎo)入的自己寫的源文件),
-d 就是放class的位置,-d .可以在當(dāng)前目錄下幫我們自動創(chuàng)建包文件夾很方便,不用手動創(chuàng)建
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java?Unsafe創(chuàng)建對象的方法實(shí)現(xiàn)
Java中使用Unsafe實(shí)例化對象是一項(xiàng)十分有趣而且強(qiáng)大的功能,本文主要介紹了Java?Unsafe創(chuàng)建對象的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
SpringBoot + Shiro前后端分離權(quán)限
這篇文章主要為大家詳細(xì)介紹了SpringBoot + Shiro前后端分離權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
Springcloud+Mybatis使用多數(shù)據(jù)源的四種方式(小結(jié))
這篇文章主要介紹了Springcloud+Mybatis使用多數(shù)據(jù)源的四種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
SpringSecurity實(shí)現(xiàn)訪問控制url匹配
本文主要介紹了SpringSecurity實(shí)現(xiàn)訪問控制url匹配,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
淺談Java內(nèi)存模型之happens-before
于存在線程本地內(nèi)存和主內(nèi)存的原因,再加上重排序,會導(dǎo)致多線程環(huán)境下存在可見性的問題。那么我們正確使用同步、鎖的情況下,線程A修改了變量a何時(shí)對線程B可見?下面小編來簡單介紹下2019-05-05
淺析Spring boot 中 logback 配置<springPropert
這篇文章主要介紹了淺析Spring boot 中 logback 配置<springProperty> 讀取application.properties 中的屬性,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
Mybatis批量插入Oracle數(shù)據(jù)的方法實(shí)例
在開發(fā)中或多或少都會遇到數(shù)據(jù)批量插入的功能,最近我在做項(xiàng)目的過程中就遇到了這樣一個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于Mybatis批量插入Oracle數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-01-01
詳解Spring Kafka中關(guān)于Kafka的配置參數(shù)
這篇文章主要介紹了詳解Spring Kafka中關(guān)于Kafka的配置參數(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08

