版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第手工搭建Servlet實(shí)現(xiàn)所以學(xué)習(xí)Javaweb,可以從第3個(gè)階段開始學(xué)習(xí),不用再去關(guān)注Servlet,那么Servlet是否還有學(xué)習(xí)的必要呢?
答案是有,并且非常重要。俗話說萬變不離其宗,這個(gè)宗指的就是技術(shù)的底層,你會(huì)發(fā)現(xiàn)技術(shù)的底層其實(shí)都是相通的,只要把握了這個(gè)宗,我們就能在技術(shù)的浪潮來臨時(shí),把握機(jī)會(huì),而不是去追逐一個(gè)又一個(gè)的泡沫。
我記得初學(xué)java的時(shí)候,還是大三上,教我們java的老師是我們學(xué)院的副院長(zhǎng)。他讓我們用記事本去編寫程序,用命令行去執(zhí)行程序,而隔壁班用的卻是eclipse。當(dāng)初非常羨慕隔壁班,能用上“高大上”的開發(fā)環(huán)境,不用去改一個(gè)又一個(gè)的編譯錯(cuò)誤。現(xiàn)在想起來,卻非常感謝那段經(jīng)歷,它讓我對(duì)Java程序的執(zhí)行過程有了更直觀的認(rèn)識(shí),對(duì)java這門編程語言本身有了更深刻的認(rèn)識(shí)。
而現(xiàn)在作為一個(gè)Java程序員,我們已經(jīng)習(xí)慣了使用IDE和Web框架進(jìn)行開發(fā),IDE幫助我們做了編譯、打包的工作。Spring框架則幫助我們實(shí)現(xiàn)了Servlet接口,并把Servlet容器注冊(cè)到了Web容器中。這樣我們就可以專注于實(shí)現(xiàn)業(yè)務(wù)邏輯,但是同時(shí),卻缺少了接觸底層的機(jī)會(huì)。
如果程序一直都處于正常運(yùn)行的狀態(tài),不了解底層其實(shí)并沒有什么問題,但是如果程序一旦出現(xiàn)了預(yù)期之外的異常,那么如果我們不懂底層,就沒有辦法準(zhǔn)確的定位問題。
所以今天要和大家分享的是Servlet的學(xué)習(xí):
手工搭建一個(gè)Servlet
下載Tomcat
首先我們需要下載Tomcat:/download-90.cgi
Tomcat的目錄如下:(Mac系統(tǒng)、Tomcat8.5.38)
/bin:存放在windows(.bat)和Linux(.sh)環(huán)境下運(yùn)行的腳本文件。
/conf:存放配置的文件,其中最重要的是server.xml(配置Servlet)
/lib:存放Tomcat以及所有Web應(yīng)用都可以訪問的jar文件
/logs:存放Tomcat執(zhí)行時(shí)產(chǎn)生的日志文件
/work:存放JSP編譯后的產(chǎn)生class文件
/webapps:Tomcat的Web應(yīng)用目錄
編寫Servlet程序
我們可以通過繼承GenericServlet抽象類或者HttpServlet抽象類來實(shí)現(xiàn)我們自己的Servlet。HttpServlet是在GenericServlet的基礎(chǔ)上,進(jìn)一步封裝了Http的特性,相對(duì)GenericServlet而言使用簡(jiǎn)單,我們只需要重寫doGet和doPost方法即可。所以這里我們使用HttpServlet。(這里我們是使用記事本編寫的,如果你是使用ide,請(qǐng)引入javax.servlet包,因?yàn)檫@個(gè)包不在jdk的標(biāo)準(zhǔn)開發(fā)包中,方法可以參考:/article/196463.htm)
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;
importjava.io.PrintWriter;
*自定義Servlet.
*@authorjialin.li
*@date2025-12-1520:46
*/publicclassMyServletextendsHttpServlet{
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
System.out.println("開始處理get請(qǐng)求");
PrintWriterwriter=resp.getWriter();
resp.setContentType("text/html;charset=utf-8");
writer.println("h1helloServlet/h1
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
System.out.println("開始處理post請(qǐng)求");
PrintWriterwriter=resp.getWriter();
resp.setContentType("text/html;charset=utf-8");
writer.println("h1helloServlet/h1
}
編譯程序
這里需要我們將Tomcatlib中的Servlet-api.jar拷貝到當(dāng)前目錄下。因?yàn)槲覀兙帉懙腗yServlet繼承了HttpServlet抽象類,而這個(gè)類屬于該jar包,調(diào)用下面的命令編譯代碼:
javac-cp./servlet-api.jarMyServlet.java
可以看出,我們編譯成功,生成了一個(gè)class文件。
接著我們需要?jiǎng)?chuàng)建一個(gè)Web應(yīng)用的web文檔結(jié)構(gòu),把它放到Webapps中。結(jié)構(gòu)如下:
MyWebApp/WEB-INF/web.xml
MyWebApp/WEB-INF/classes/MyServlet.class
我們將在web.xml中配置我們的Servlet,web.xml的內(nèi)容如下:
xmlversion="1.0"encoding="UTF-8"
web-appxmlns="/xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true"
descriptionServletExample./description
display-nameMyServletExample/display-name
request-character-encodingUTF-8/request-character-encoding
servlet
servlet-namemyServlet/servlet-name
servlet-classMyServlet/servlet-class
/servlet
servlet-mapping
servlet-namemyServlet/servlet-name
url-pattern/myservlet/url-pattern
/servlet-mapping
/web-app
這里要保證servlet和servlet-mapping中的servlet-name一致。這樣才能完成從url到servlet的映射。
啟動(dòng)Tomcat
接著我們啟動(dòng)tomcat,找到tomcat的bin目錄,然后執(zhí)行start.sh腳本(如果是windows系統(tǒng),請(qǐng)使用.bat的腳本):[code]sh
shstartup.sh
tomcat的默認(rèn)端口是8080,我們可以訪問一下myservlet,觀察結(jié)果::8080/MyWebApp/myservlet
helloServlet
MyWebApp是我們的應(yīng)用名,即在webapps的文件夾,myservlet是我們配置在web.xml里的Servlet路徑。(如果啟動(dòng)tomcat出現(xiàn)異常,請(qǐng)移步/article/216973.htm,里面有具體的解決辦法)
讀取日志
讀tomcat的日志,也是后端開發(fā)工程師必不可缺的一項(xiàng)技能。它可以幫助我們快速的定位問題。tomcat中的日志分為兩類,一類是運(yùn)行日志,記錄著系統(tǒng)運(yùn)行過程中的信息,比如異常錯(cuò)誤等。一類是訪問日志,記錄著訪問的時(shí)間、IP地址、訪問路徑等相關(guān)信息。
catalina.***.log
主要記錄著Tomcat啟動(dòng)過程中的信息,這個(gè)文件可以看到JVM參數(shù)以及操作系統(tǒng)等日志信息。
catalina.out
catalina.out是Tomcat的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出,在這個(gè)日志里我們可以看到MyServlet.java程序輸出的信息。
localhost.**.log
主要記錄Web應(yīng)用在初始化過程中,遇到的未處理的異常。
manager.***.log/host-manager.***.log
存放Tomcat自帶的Manager項(xiàng)目的日志信息
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.annotation.WebServlet;
importjava.io.IOException;
importjava.io.PrintWriter;
*自定義Servlet.
*@authorjialin.li
*@date2025-12-1520:46
@WebServlet("/myAnnotationServlet")
publicclassMyServletextendsHttpServlet{
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
System.out.println("開始處理get請(qǐng)求");
PrintWriterwriter=resp.getWriter();
resp.setContentType("text/html;charset=utf-8");
writer.println("h1helloServlet/h1
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
System.out.println("開始處理post請(qǐng)求");
PrintWriterwriter=resp.getWriter();
resp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年湖北中醫(yī)藥高等??茖W(xué)校輔導(dǎo)員考試筆試真題匯編附答案
- 稀土原輔材料預(yù)處理工崗前實(shí)操評(píng)優(yōu)考核試卷含答案
- 反應(yīng)香精配制工常識(shí)評(píng)優(yōu)考核試卷含答案
- 催化重整裝置操作工操作技能能力考核試卷含答案
- 2025四川雅安滎經(jīng)縣招聘社區(qū)專職工作者2人備考題庫附答案
- 保健調(diào)理師崗前離崗考核試卷含答案
- 陽極氧化工安全宣教競(jìng)賽考核試卷含答案
- 礦用電機(jī)車裝配工安全實(shí)操能力考核試卷含答案
- 稱重傳感器裝配調(diào)試工崗前流程優(yōu)化考核試卷含答案
- 組坯熱壓工崗前誠信考核試卷含答案
- 委托市場(chǎng)調(diào)研合同范本
- 消防維保計(jì)劃實(shí)施方案
- 畜牧安全培訓(xùn)資料課件
- 有子女離婚協(xié)議書
- 2026四川省引大濟(jì)岷水資源開發(fā)限公司公開招聘易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025至2030中國(guó)汽車檢測(cè)行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 2026年南昌健康職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題附答案詳解
- 2026年安徽糧食工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考試題及答案詳解
- 雨課堂學(xué)堂在線學(xué)堂云《中國(guó)電影經(jīng)典影片鑒賞(北京師范大學(xué))》單元測(cè)試考核答案
- 四川水利安全b證考試試題及答案
- 2626《藥事管理與法規(guī)》國(guó)家開放大學(xué)期末考試題庫
評(píng)論
0/150
提交評(píng)論