Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】
- Java后端 學(xué)習(xí)路線 筆記匯總表【黑馬程序員】
Servlet和HTTP請(qǐng)求協(xié)議-學(xué)習(xí)筆記01【Servlet_快速入門-生命周期方法、Servlet_3.0注解配置、IDEA與tomcat相關(guān)配置】
Servlet和HTTP請(qǐng)求協(xié)議-學(xué)習(xí)筆記02【Servlet_體系結(jié)構(gòu)與urlpartten配置、HTTP請(qǐng)求協(xié)議】
目錄
01 Servlet_快速入門
Servlet_概述
Java EE 7API doc —— servlet
Servlet_快速入門
Idea——實(shí)現(xiàn)servlet
Servlet_執(zhí)行原理
02 Servlet_生命周期方法
Servlet_生命周期方法
Servlet_生命周期詳解
03 Servlet_3.0注解配置
Servlet_3.0注解配置
Servlet_3.0注解配置方式1
public @interface WebServlet {}
Servlet_3.0注解配置方式2
public class ServletDemo implements Servlet {}
04 IDEA與tomcat相關(guān)配置
IDEA與tomcat相關(guān)配置
Tomcat 斷點(diǎn)調(diào)試
01 Servlet_快速入門
Servlet_概述
Servlet:server applet
* 概念:運(yùn)行在服務(wù)器端的小程序。
?? ?* Servlet就是一個(gè)接口,定義了Java類被瀏覽器訪問(wèn)到(tomcat識(shí)別)的規(guī)則。
?? ?* 將來(lái)我們自定義一個(gè)類,實(shí)現(xiàn)Servlet接口,復(fù)寫方法。
Java EE 7API doc —— servlet
Servlet_快速入門
快速入門:
?? ?1. 創(chuàng)建JavaEE項(xiàng)目
?? ?2. 定義一個(gè)類,實(shí)現(xiàn)Servlet接口
?? ??? ?* public class ServletDemo1 implements Servlet {}
?? ?3. 實(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>
定義一個(gè)類,實(shí)現(xiàn)Servlet接口,實(shí)現(xiàn)這5個(gè)方法。
Idea——實(shí)現(xiàn)servlet
??
Servlet_執(zhí)行原理
執(zhí)行原理:
02 Servlet_生命周期方法
Servlet_生命周期方法
Servlet中的生命周期方法:
Servlet_生命周期詳解
* 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中定義成員變量。即使定義了成員變量,也不要修改其值(避免并發(fā)操作)。
?? ?2. 提供服務(wù):執(zhí)行service方法,執(zhí)行多次。
?? ??? ?* 每次訪問(wèn)Servlet時(shí),Service方法都會(huì)被調(diào)用一次。
?? ?3. 被銷毀:執(zhí)行destroy方法,只執(zhí)行一次。
?? ??? ?* Servlet被銷毀時(shí)執(zhí)行。服務(wù)器關(guān)閉時(shí),Servlet被銷毀。
?? ??? ?* 只有服務(wù)器正常關(guān)閉時(shí),才會(huì)執(zhí)行destroy方法。
?? ??? ?* destroy方法在Servlet被銷毀之前執(zhí)行,一般用于釋放資源。
03 Servlet_3.0注解配置
Servlet_3.0注解配置
* Servlet3.0:
?? ?* 好處:
?? ??? ?* 支持注解配置。可以不需要web.xml了。
?? ?* 步驟:
?? ??? ?1. 創(chuàng)建JavaEE項(xiàng)目,選擇Servlet的版本3.0以上,可以不創(chuàng)建web.xml
?? ??? ?2. 定義一個(gè)類,實(shí)現(xiàn)Servlet接口
?? ??? ?3. 復(fù)寫方法
?? ??? ?4. 在類上使用@WebServlet注解,進(jìn)行配置
?? ??? ??? ?* @WebServlet("資源路徑")
Servlet_3.0注解配置方式1
public @interface WebServlet {}
按住“Ctrl鍵”,點(diǎn)擊“WebServlet”:
??
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @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 ""; }Servlet_3.0注解配置方式2
public class ServletDemo implements Servlet {}
package cn.itcast.web.servlet;import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException;@WebServlet("/demo2") public class ServletDemo implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("Servlet3.0來(lái)了...");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {} }04 IDEA與tomcat相關(guān)配置
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))
Tomcat 斷點(diǎn)調(diào)試
總結(jié)
以上是生活随笔為你收集整理的Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Idea——Tomcat 报错——War
- 下一篇: Servlet和HTTP请求协议-学习笔