一、Web服务器——Tomcat Servlet学习笔记
生活随笔
收集整理的這篇文章主要介紹了
一、Web服务器——Tomcat Servlet学习笔记
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
今日內(nèi)容
一、web相關(guān)概念回顧
軟件架構(gòu)
資源分類(lèi)
網(wǎng)絡(luò)通信三要素
二、web服務(wù)器軟件:
服務(wù)器:安裝了服務(wù)器軟件的計(jì)算機(jī)
服務(wù)器軟件:接收用戶的請(qǐng)求,處理請(qǐng)求,做出響應(yīng)
web服務(wù)器軟件:接收用戶的請(qǐng)求,處理請(qǐng)求,做出響應(yīng)。
在web服務(wù)器軟件中,可以部署web項(xiàng)目,讓用戶通過(guò)瀏覽器來(lái)訪問(wèn)這些項(xiàng)目,即web容器
常見(jiàn)的java相關(guān)的web服務(wù)器軟件:
webLogic:oracle公司,大型的JavaEE服務(wù)器,支持所有的JavaEE規(guī)范,收費(fèi)的。
webSphere:IBM公司,大型的JavaEE服務(wù)器,支持所有的JavaEE規(guī)范,收費(fèi)的。
JBOSS:JBOSS公司的,大型的JavaEE服務(wù)器,支持所有的JavaEE規(guī)范,收費(fèi)的。
Tomcat:Apache基金組織,中小型的JavaEE服務(wù)器,僅僅支持少量的JavaEE規(guī)范servlet/jsp。開(kāi)源的,免費(fèi)的。
- JavaEE:Java語(yǔ)言在企業(yè)級(jí)開(kāi)發(fā)中使用的技術(shù)規(guī)范的總和,一共規(guī)定了13項(xiàng)大的規(guī)范
Tomcat:web服務(wù)器軟件
1. 下載:http://tomcat.apache.org/ 2. 安裝:解壓壓縮包即可。* 注意:安裝目錄建議不要有中文和空格 3. 卸載:刪除目錄就行了 4. 啟動(dòng):* bin/startup.bat ,雙擊運(yùn)行該文件即可* 訪問(wèn):瀏覽器輸入:http://localhost:8080 回車(chē)訪問(wèn)自己http://別人的ip:8080 訪問(wèn)別人* 可能遇到的問(wèn)題:1. 黑窗口一閃而過(guò):* 原因: 沒(méi)有正確配置JAVA_HOME環(huán)境變量* 解決方案:正確配置JAVA_HOME環(huán)境變量2. 啟動(dòng)報(bào)錯(cuò):1. 暴力:找到占用的端口號(hào),并且找到對(duì)應(yīng)的進(jìn)程,殺死該進(jìn)程* cmd命令行輸入命令:netstat -ano。查看端口號(hào)對(duì)應(yīng)的PID 2. 溫柔:修改自身的端口號(hào)* conf/server.xml* <Connector port="8888" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8445" />* 一般會(huì)將tomcat的默認(rèn)端口號(hào)修改為80。80端口號(hào)是http協(xié)議的默認(rèn)端口號(hào)。* 好處:在訪問(wèn)時(shí),就不用輸入端口號(hào)5. 關(guān)閉:1. 正常關(guān)閉:* bin/shutdown.bat* ctrl+c2. 強(qiáng)制關(guān)閉:* 點(diǎn)擊啟動(dòng)窗口的×6. 配置:* 部署項(xiàng)目的方式:1. 直接將項(xiàng)目放到webapps目錄下即可。* /hello:項(xiàng)目的訪問(wèn)路徑-->虛擬目錄* 簡(jiǎn)化部署:將項(xiàng)目打成一個(gè)war包,再將war包放置到webapps目錄下。* war包會(huì)自動(dòng)解壓縮2. 配置conf/server.xml文件在<Host>標(biāo)簽體中配置<Context docBase="D:\hello" path="/hehe" />* docBase:項(xiàng)目存放的路徑* path:虛擬目錄3. 在conf\Catalina\localhost創(chuàng)建任意名稱的xml文件。在文件中編寫(xiě)<Context docBase="D:\hello" />* 虛擬目錄:xml文件的名稱* 靜態(tài)項(xiàng)目和動(dòng)態(tài)項(xiàng)目:* 目錄結(jié)構(gòu)* java動(dòng)態(tài)項(xiàng)目的目錄結(jié)構(gòu):-- 項(xiàng)目的根目錄-- WEB-INF目錄:-- web.xml:web項(xiàng)目的核心配置文件-- classes目錄:放置字節(jié)碼文件的目錄-- lib目錄:放置依賴的jar包* 將Tomcat集成到IDEA中,并且創(chuàng)建JavaEE的項(xiàng)目,部署項(xiàng)目。三、Servlet: server applet
* 概念:運(yùn)行在服務(wù)器端的小程序* Servlet就是一個(gè)接口,定義了Java類(lèi)被瀏覽器訪問(wèn)到(tomcat識(shí)別)的規(guī)則。* 將來(lái)我們自定義一個(gè)類(lèi),實(shí)現(xiàn)Servlet接口,復(fù)寫(xiě)方法。* 快速入門(mén):1. 創(chuàng)建JavaEE項(xiàng)目2. 定義一個(gè)類(lèi),實(shí)現(xiàn)Servlet接口* public class ServletDemo1 implements Servlet3. 實(shí)現(xiàn)接口中的抽象方法4. 配置Servlet在web.xml中配置:<!--配置Servlet --><servlet><servlet-name>demo1</servlet-name><servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class></servlet><servlet-mapping><servlet-name>demo1</servlet-name><url-pattern>/demo1</url-pattern></servlet-mapping>* 執(zhí)行原理:1. 當(dāng)服務(wù)器接受到客戶端瀏覽器的請(qǐng)求后,會(huì)解析請(qǐng)求URL路徑,獲取訪問(wèn)的Servlet的資源路徑2. 查找web.xml文件,是否有對(duì)應(yīng)的<url-pattern>標(biāo)簽體內(nèi)容。3. 如果有,則在找到對(duì)應(yīng)的<servlet-class>全類(lèi)名4. tomcat會(huì)將字節(jié)碼文件加載進(jìn)內(nèi)存,并且創(chuàng)建其對(duì)象5. 調(diào)用其方法* Servlet中的生命周期方法:1. 被創(chuàng)建:執(zhí)行init方法,只執(zhí)行一次* Servlet什么時(shí)候被創(chuàng)建?* 默認(rèn)情況下,第一次被訪問(wèn)時(shí),Servlet被創(chuàng)建* 可以配置執(zhí)行Servlet的創(chuàng)建時(shí)機(jī)。* 在<servlet>標(biāo)簽下配置1. 第一次被訪問(wèn)時(shí),創(chuàng)建* <load-on-startup>的值為負(fù)數(shù)2. 在服務(wù)器啟動(dòng)時(shí),創(chuàng)建* <load-on-startup>的值為0或正整數(shù)* Servlet的init方法,只執(zhí)行一次,說(shuō)明一個(gè)Servlet在內(nèi)存中只存在一個(gè)對(duì)象,Servlet是單例的* 多個(gè)用戶同時(shí)訪問(wèn)時(shí),可能存在線程安全問(wèn)題。* 解決:盡量不要在Servlet中定義成員變量。即使定義了成員變量,也不要對(duì)修改值2. 提供服務(wù):執(zhí)行service方法,執(zhí)行多次* 每次訪問(wèn)Servlet時(shí),Service方法都會(huì)被調(diào)用一次。3. 被銷(xiāo)毀:執(zhí)行destroy方法,只執(zhí)行一次* Servlet被銷(xiāo)毀時(shí)執(zhí)行。服務(wù)器關(guān)閉時(shí),Servlet被銷(xiāo)毀* 只有服務(wù)器正常關(guān)閉時(shí),才會(huì)執(zhí)行destroy方法。* destroy方法在Servlet被銷(xiāo)毀之前執(zhí)行,一般用于釋放資源 package cn.itcast.web.servlet;import javax.servlet.*; import java.io.IOException;public class ServletDemo02 implements Servlet {/*** 初始化方法* 在Servlet被創(chuàng)建時(shí),執(zhí)行。只會(huì)執(zhí)行一次* @param servletConfig* @throws ServletException*/@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("init......");}/*** 獲取ServletConfig對(duì)象* ServletConfig:Servlet的配置對(duì)象* @return*/@Overridepublic ServletConfig getServletConfig() {return null;}/*** 提供服務(wù)的方法* 每一次Servlet被訪問(wèn)時(shí),執(zhí)行。執(zhí)行多次* @param servletRequest* @param servletResponse* @throws ServletException* @throws IOException*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("service......");}/*** 獲取Servlet的一些信息,版本,作者等* @return*/@Overridepublic String getServletInfo() {return null;}/*** 銷(xiāo)毀方法* 在Servlet服務(wù)器正常關(guān)閉時(shí)執(zhí)行,執(zhí)行一次。*/@Overridepublic void destroy() {System.out.println("destroy......");} } * Servlet3.0:* 好處:* 支持注解配置。可以不需要web.xml了。* 步驟:1. 創(chuàng)建JavaEE項(xiàng)目,選擇Servlet的版本3.0以上,可以不創(chuàng)建web.xml2. 定義一個(gè)類(lèi),實(shí)現(xiàn)Servlet接口3. 復(fù)寫(xiě)方法4. 在類(lèi)上使用@WebServlet注解,進(jìn)行配置* @WebServlet("資源路徑")@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface WebServlet {String name() default "";//相當(dāng)于<Servlet-name>String[] value() default {};//代表urlPatterns()屬性配置String[] urlPatterns() default {};//相當(dāng)于<url-pattern>int loadOnStartup() default -1;//相當(dāng)于<load-on-startup>WebInitParam[] initParams() default {};boolean asyncSupported() default false;String smallIcon() default "";String largeIcon() default "";String description() default "";String displayName() default "";}四、IDEA與tomcat的相關(guān)配置
1. IDEA會(huì)為每一個(gè)tomcat部署的項(xiàng)目單獨(dú)建立一份配置文件* 查看控制臺(tái)的log:Using CATALINA_BASE: "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"2. 工作空間項(xiàng)目 和 tomcat部署的web項(xiàng)目* tomcat真正訪問(wèn)的是“tomcat部署的web項(xiàng)目”,"tomcat部署的web項(xiàng)目"對(duì)應(yīng)著"工作空間項(xiàng)目" 的web目錄下的所有資源* WEB-INF目錄下的資源不能被瀏覽器直接訪問(wèn)。 3. 斷點(diǎn)調(diào)試:使用"小蟲(chóng)子"啟動(dòng) dubug 啟動(dòng)總結(jié)
以上是生活随笔為你收集整理的一、Web服务器——Tomcat Servlet学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: centos 启动一个redis_基于p
- 下一篇: echart 数据点可以加链接吗_地理可