中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

番禺網(wǎng)站建設(shè)優(yōu)化網(wǎng)站產(chǎn)品怎么優(yōu)化

番禺網(wǎng)站建設(shè)優(yōu)化,網(wǎng)站產(chǎn)品怎么優(yōu)化,商城網(wǎng)站模板庫,羅湖平臺網(wǎng)站建設(shè)費用1.Srvlet概述 Servlet是運行在java服務(wù)器端的程序,用于接收和響應(yīng)來著客戶端基于HTTP協(xié)議的請求 如果想實現(xiàn)Servlet的功能,可以通過實現(xiàn)javax。servlet。Servlet接口或者繼承它的實現(xiàn)類 核心方法:service()&#xf…

1.Srvlet概述

Servlet是運行在java服務(wù)器端的程序,用于接收和響應(yīng)來著客戶端基于HTTP協(xié)議的請求

如果想實現(xiàn)Servlet的功能,可以通過實現(xiàn)javax。servlet。Servlet接口或者繼承它的實現(xiàn)類

核心方法:service(),任何客戶端的請求都會經(jīng)過該方法

2.Servlet快速入門?

1.創(chuàng)建一個WEB項目

2.重寫一個類繼承GenericServlet

3.重寫service方法

4.在web.xml中配置Servlet

5.部署并啟動項目

6.通過瀏覽器測試

例:

package servlet;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;import java.io.IOException;/*Servlet快速入門*/
public class ServletDemo01 extends GenericServlet {@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("service執(zhí)行了...");}
}

web.xml

<?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快速入門1的配置--><servlet><servlet-name>servletDemo01</servlet-name><servlet-class>servlet.ServletDemo01</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo01</servlet-name><url-pattern>/servletDemo01</url-pattern></servlet-mapping>
</web-app>

?

網(wǎng)頁輸入:http://localhost:8080/demo1/servletDemo01

Servlet的執(zhí)行過程

?Servlet關(guān)系視圖

3.Servlet實現(xiàn)方式之HttpServlet?

Servlet實現(xiàn)方式

1.第一種

實現(xiàn)Servlet接口,實現(xiàn)所有的抽象方法。該方法支持最大程度的自定義

2.第二種

繼承GenericServlet抽象類,必須重寫servic方法,其他方法可選擇重寫。該方法讓我們開發(fā)Servlet變得簡單。但是這種方式和HTTP協(xié)議無關(guān)

3.第三種

繼承HttpServlet抽象類,需要重寫doGet和doPost方法。該方式表示請求和響應(yīng)都需要和HTTP協(xié)議相關(guān)

步驟

1.創(chuàng)建一個類繼承HttpServlet

2.重寫doGet和doPost方法

3.在web.xml中配置Servlet

4.部署并啟動項目

5.通過瀏覽器測試

例:

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*快速入門02
*/
public class ServletDemo02 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("方法執(zhí)行了...");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

web.xml:

<?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快速入門1的配置--><servlet><servlet-name>servletDemo01</servlet-name><servlet-class>servlet.ServletDemo01</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo01</servlet-name><url-pattern>/servletDemo01</url-pattern></servlet-mapping><!--Servlet快速入門2的配置--><servlet><servlet-name>servletDemo02</servlet-name><servlet-class>servlet.ServletDemo02</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo02</servlet-name><url-pattern>/servletDemo02</url-pattern></servlet-mapping>
</web-app>

4.Servlet的生命周期

對象的生命周期,就是對象從出生到死亡的過程。即:出生 -> 活著 -> 死亡。官方說法是對象創(chuàng)建到銷毀的過程

出生:請求第一次到達 Servlet 時,對象就創(chuàng)建出來,并且初始化成功。只出生(創(chuàng)建)一次,將對象放到內(nèi)存中

活著:服務(wù)器提供服務(wù)的整個過程中,該對象一直存在,每次都是執(zhí)行 service 方法

死亡:當服務(wù)停止時,或者服務(wù)器宕機時,對象死亡

例:

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*Servlet的生命周期
*/
public class ServletDemo03 extends HttpServlet {//對象出生的過程@Overridepublic void init() throws ServletException {System.out.println("對象創(chuàng)建并初始化成功");}//對象服務(wù)的過程@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("接收到了客戶端的請求...");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}//對象銷毀的過程@Overridepublic void destroy() {System.out.println("對象銷毀了...");}
}

web.xml:

  <!--Servlet生命周期的配置--><servlet><servlet-name>servletDemo03</servlet-name><servlet-class>servlet.ServletDemo03</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo03</servlet-name><url-pattern>/servletDemo03</url-pattern></servlet-mapping>

結(jié)論:Servlet 對象只會創(chuàng)建一次,銷毀一次。所以 Servlet 對象只有一個實例。如果一個對象實例在應(yīng)用中是唯一的存在,那么我們就稱它為單例模式

5.Servlet線程安全問題

由于 Servlet 采用的是單例模式,也就是整個應(yīng)用中只有一個實例對象。所以我們需要分析這個唯一的實例對象中的類成員是否線程安全

模擬用戶登錄功能來查看 Servlet 線程是否安全

例:

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/*
Servlet線程安全的問題*/
public class ServletDemo04 extends HttpServlet{//1.定義用戶名成員變量private String username = null;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//2.獲取用戶名username = req.getParameter("username");try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}//3.獲取輸出流對象PrintWriter pw = resp.getWriter();//4.響應(yīng)給客戶端瀏覽器pw.print("welcome:" + username);//5.關(guān)流pw.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}
<!--Servlet線程安全的配置--><servlet><servlet-name>servletDemo04</servlet-name><servlet-class>servlet.ServletDemo04</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo04</servlet-name><url-pattern>/servletDemo04</url-pattern></servlet-mapping>

谷歌瀏覽器中url傳遞參數(shù)username=aaa

火狐瀏覽器中url傳遞參數(shù)username=bbb

結(jié)果兩個瀏覽器都是welcome:bbb

結(jié)論:一個瀏覽器代表一個線程,多個瀏覽器代表多個線程。按理說我們期望的應(yīng)該是每個瀏覽器查看的都應(yīng)該是自己的用戶名。而現(xiàn)在的結(jié)果是瀏覽器中數(shù)據(jù)混亂。因此,我們可以認為 Servlet 是線程不安全的!

解決:定義類成員要謹慎。如果是共用的,并且只會在初始化時賦值,其他時間都是獲取的話,那么是沒問題的。如果不是共用的,或者每次使用都有可能對其賦值,那就要考慮線程安全問題了,可以將其定義到 doGet 或 doPost 方法內(nèi)或者使用同步功能即可。

方法1:將username由成員變量,放到方法中

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/*
Servlet線程安全的問題*/
public class ServletDemo04 extends HttpServlet{//1.定義用戶名成員變量// private String username = null;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = null;//2.獲取用戶名username = req.getParameter("username");try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}//3.獲取輸出流對象PrintWriter pw = resp.getWriter();//4.響應(yīng)給客戶端瀏覽器pw.print("welcome:" + username);//5.關(guān)流pw.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

方法二:使用同步代碼塊

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/*
Servlet線程安全的問題*/
public class ServletDemo04 extends HttpServlet{//1.定義用戶名成員變量private String username = null;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//String username = null;synchronized (this){//2.獲取用戶名username = req.getParameter("username");try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}//3.獲取輸出流對象PrintWriter pw = resp.getWriter();//4.響應(yīng)給客戶端瀏覽器pw.print("welcome:" + username);//5.關(guān)流pw.close();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

6.Servlet不同映射方式

第一種

具體名稱的方式。訪問的資源路徑必須和映射配置完全相同

第二種

/ 開頭 + 通配符的方式。只要符合目錄結(jié)構(gòu)即可,不用考慮結(jié)尾是什么

第三種

通配符 + 固定格式結(jié)尾的方式。只要符合固定結(jié)尾格式即可,不用考慮前面的路徑

注意優(yōu)先級問題。越是具體的優(yōu)先級越高,越是模糊通用的優(yōu)先級越低。第一種 -> 第二種 -> 第三種

例:

第一種:具體名稱的方式

訪問:http://localhost:8080/demo1/servletDemo05

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*Servlet不同映射方式*/
public class ServletDemo05 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ServletDemo05執(zhí)行了...");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}}
 <!--Servlet不同映射方式--><!--指定名稱的方式--><servlet><servlet-name>servletDemo05</servlet-name><servlet-class>servlet.ServletDemo05</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo05</servlet-name><url-pattern>/servletDemo05</url-pattern></servlet-mapping>

第二種:/開頭+通配符的方式

訪問:http://localhost:8080/demo1/servlet/....

 <!--/ 開頭 + 通配符的方式--><servlet><servlet-name>servletDemo05</servlet-name><servlet-class>servlet.ServletDemo05</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo05</servlet-name><url-pattern>/servlet/*</url-pattern></servlet-mapping>

第三種:通配符+固定格式結(jié)尾

訪問:http://localhost:8080/demo1/xxx.do

<!--通配符+固定格式結(jié)尾的方式--><servlet><servlet-name>servletDemo05</servlet-name><servlet-class>servlet.ServletDemo05</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo05</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

7.Servlet創(chuàng)建時機

1.第一次訪問時創(chuàng)建

優(yōu)勢:減少對服務(wù)器內(nèi)存的浪費。提高了服務(wù)器啟動的效率

弊端:如果有一些要在應(yīng)用加載時就做的初始化操作,無法完成

2.服務(wù)器加載時創(chuàng)建

優(yōu)勢:提前創(chuàng)建好對象,提高了首次執(zhí)行的效率。可以完成一些應(yīng)用加載時要做的初始化操作

弊端:對服務(wù)器內(nèi)存占用較多,影響了服務(wù)器啟動的效率

修改Servlet創(chuàng)建時間:在<servlet>標簽中,添加<load-on-startu>標簽

正整數(shù)代表服務(wù)器加載時創(chuàng)建,值越小、優(yōu)先級越高。 負整數(shù)或不寫代表第一次訪問時創(chuàng)建

<load-on-startup>加載順序的序號</load-on-startup>

????????序號為1,就是服務(wù)器啟動時第一個加載

????????序號為2,就是服務(wù)器啟動時第二個加載

如果兩個Servlet都要配置為正整數(shù),那么值小的優(yōu)先級高

 <!--Servlet生命周期的配置--><servlet><servlet-name>servletDemo03</servlet-name><servlet-class>servlet.ServletDemo03</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>servletDemo03</servlet-name><url-pattern>/servletDemo03</url-pattern></servlet-mapping>

會在啟動tomcat的時候初始化?

8.默認Servlet

默認Servlet是由服務(wù)器提供的一個Servlet,它配置在Tomcat的conf目錄下的web.xml中

它的映射路徑是<url-pattern>/<url-pattern>,我們在發(fā)送請求時,首先會在我們項目中的 web.xml 中查找映射配置,找到則執(zhí)行。

但是當找不到對應(yīng)的 Servlet 路徑時,就去找默認的 Servlet,由默認 Servlet 處理。所以,一切都是 Servlet。

如果我們訪問一個不存在的url,瀏覽器會加載一個404界面,這個404界面,其實就是tomcat配置的默認的Servlet處理的結(jié)果。

9.ServletConfig

1.ServletConfig概述

ServletConfig 是 Servlet 的配置參數(shù)對象,在 Servlet 的規(guī)范中,允許為每一個 Servlet 都提供一

些初始化的配置。所以,每個 Servlet 都有一個自己的 ServletConfig

作用:在 Servlet 的初始化時,把一些配置信息傳遞給 Servlet

生命周期

生命周期:和Servlet相同

如果Servlet配置了<load-on-startup>1</load-on-startup>,那么ServletConfig也會在應(yīng)用加載時創(chuàng)建

ServletConfig的配置信息都是鍵值對的形式

2.ServletConfig的配置方式

在<servlet>標簽中,通過<init-param>標簽來配置。有兩個子標簽

<param-name>:代表初始化參數(shù)的 key

<param-value>:代表初始化參數(shù)的 value

一個init-param配置一個信息,一個信息由name和value組成(只允許一個鍵值對存在)

例:

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*ServletConfig的演示*/
public class ServletConfigDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

web.xml

<?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--><servlet><servlet-name>servletConfigDemo</servlet-name><servlet-class>servlet.ServletConfigDemo</servlet-class><!--配置ServletConfig初始化參數(shù)--><init-param><!--用于獲取初始化參數(shù)的key--><param-name>encoding</param-name><!--初始化參數(shù)的值--><param-value>UTF-8</param-value></init-param><init-param><param-name>desc</param-name><param-value>This is ServletConfig</param-value></init-param></servlet><servlet-mapping><servlet-name>servletConfigDemo</servlet-name><url-pattern>/servletConfigDemo</url-pattern></servlet-mapping></web-app>

3.ServletConfig的常用方法

返回值方法名說明
StringgetInitParameter(String name)根據(jù)參數(shù)名稱獲取參數(shù)的值
Enumeration<String>getlnitParameterNames()獲取所有參數(shù)名稱的枚舉
String?getServletName()獲取Servlet的名稱
ServletContextgetServletContext()獲取ServletContext對象
package servlet;import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;/*ServletConfig的演示*/
public class ServletConfigDemo extends HttpServlet {//聲明ServletConfig配置對象private ServletConfig config;//通過init方法來為ServletConfig配置對象賦值@Overridepublic void init(ServletConfig config) throws ServletException {this.config = config;}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//演示ServletConfig常用方法//根據(jù)key獲取valueString encodingValue = config.getInitParameter("encoding");System.out.println(encodingValue);//獲取所有的keyEnumeration<String> keys = config.getInitParameterNames();while (keys.hasMoreElements()){//獲取每一個keyString key = keys.nextElement();//根據(jù)key獲取valueString value = config.getInitParameter(key);System.out.println(key + "," + value);}//獲取Servlet的名稱String servletName = config.getServletName();System.out.println(servletName);//獲取ServletContext對象ServletContext context = config.getServletContext();System.out.println(context);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

訪問:http://localhost:8080/demo2/servletConfigDemo

10.ServletContext

1.ServletContext概述

ServletContext 是應(yīng)用上下文對象(應(yīng)用域?qū)ο?#xff09;。每一個應(yīng)用中只有一個 ServletContext 對象

作用:可以配置和獲得應(yīng)用的全局初始化參數(shù),可以實現(xiàn) Servlet 之間的數(shù)據(jù)共享

生命周期:應(yīng)用一加載則創(chuàng)建,應(yīng)用被停止則銷毀。

出生——活著——死亡

出生: 應(yīng)用一加載,該對象就被創(chuàng)建出來了。一個應(yīng)用只有一個實例對象。(Servlet和ServletContext都是單例的)

活著:只要應(yīng)用一直提供服務(wù),該對象就一直存在。

死亡:應(yīng)用被卸載(或者服務(wù)器掛了),該對象消亡。

域?qū)ο?/strong>

域?qū)ο笾傅氖菍ο笥凶饔糜?。也就是有作用范圍域?qū)ο罂梢詫崿F(xiàn)數(shù)據(jù)的共享不同作用范圍的域?qū)ο?#xff0c;共享數(shù)據(jù)的能力也不一樣

在 Servlet 規(guī)范中,一共有 4 個域?qū)ο骃ervletContext 就是其中的一個它也是 web 應(yīng)用中最大的作用域,也叫 application 域它可以實現(xiàn)整個應(yīng)用之間的數(shù)據(jù)共享

2.ServletContext的配置方式

ServletContext 并不屬于某個 Servlet 的配置,而是針對于整個應(yīng)用的配置,也叫全局的初始化參數(shù)

在<web-app>標簽中,通過<context-param>標簽來配置。有兩個子標簽

<param-name>:代表全局初始化參數(shù)的 key

<param-value>:代表全局初始化參數(shù)的 value

package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ServletContextDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

web.xml

<!--配置Servlet--><servlet><servlet-name>servletContextDemo</servlet-name><servlet-class>servlet.ServletContextDemo</servlet-class></servlet><servlet-mapping><servlet-name>servletContextDemo</servlet-name><url-pattern>/servletContextDemo</url-pattern></servlet-mapping><!--配置ServletContext--><context-param><param-name>globalEncoding</param-name><param-value>UTF-8</param-value></context-param><context-param><param-name>globalDesc</param-name><param-value>This is ServletContext</param-value></context-param>

3.ServletContext的常用方法

返回值方法名說明
StringgetInitParameter(String name)根據(jù)名稱獲取全局配置的參數(shù)
StringgetContextPath()獲取當前應(yīng)用的虛擬訪問目錄
StringgetRealPath(string path)根據(jù)虛擬目錄獲取應(yīng)用部署的磁盤絕對路徑
voidsetAttribute(String name,Object value)向應(yīng)用域?qū)ο笾写鎯?shù)據(jù)
ObjectgetAttribute(String name)通過名稱獲取應(yīng)用域?qū)ο笾械臄?shù)據(jù)
voidremoveAttribute(String name)通過名稱移除應(yīng)用域?qū)ο笾械臄?shù)據(jù)
package servlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ServletContextDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取ServletContext對象ServletContext context = getServletContext();//常用方法演示//獲取全局配置參數(shù):getInitParameter(String key)  根據(jù)key獲取valueString value = context.getInitParameter("globalDesc");System.out.println(value);//獲取應(yīng)用的虛擬目錄:getContextPath()String contextPath =context.getContextPath();System.out.println(contextPath);//根據(jù)虛擬目錄獲取絕對路徑:getRealPath(String path)String realPath = context.getRealPath("/");System.out.println(realPath);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

訪問:http://localhost:8080/demo2/servletContextDemo

11.注解開發(fā) Servlet

1.自動注解開發(fā)

1.創(chuàng)建一個web項目

2.定義一個類,繼承HttpServlet

3.重寫doGet和doPost方法

4.在類上使用@WebServlet注解配置Servlet

5.部署并啟動項目

6.通過瀏覽器測試

package Servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*基于注解方式開發(fā)@WebServlet("Servlet路徑")*/
@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ServletDemo01執(zhí)行了...");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

2.注解詳解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {//指定Servlet的名稱。等效于web.xml文件<servlet>標簽下的<servlet-name>String name() default "";//用于映射Servlet。等效于<url-pattern>String[] value() default {};String[] urlPatterns() default {};//指定Servlet的加載時機。等效于<load-on-startup>int loadOnStartup() default -1;//指定Servlet的初始化參數(shù)。等效于<init-param>WebInitParam[] initParams() default {};//指定Servlet是否支持異步boolean asyncSupported() default false;//指定Servlet的小圖標String smallIcon() default "";//指定Servlet的大圖標String largeIcon() default "";//指定Servlet的描述信息String description() default "";//指定Servlet的顯示名稱String displayName() default "";
}

http://www.risenshineclean.com/news/59178.html

相關(guān)文章:

  • 平潭城鄉(xiāng)住房建設(shè)廳網(wǎng)站如何推廣小程序
  • 靈犀科技網(wǎng)站開發(fā)精準營銷系統(tǒng)價值
  • 做網(wǎng)站開發(fā)的提成多少錢seo推廣培訓(xùn)費用
  • 怎么做網(wǎng)站結(jié)構(gòu)圖seo公司彼億營銷
  • 臨平網(wǎng)站建設(shè)東莞專業(yè)網(wǎng)站推廣工具
  • seo網(wǎng)站開發(fā)注意事項鄭州整站網(wǎng)站優(yōu)化
  • 網(wǎng)站打不開顯示asp網(wǎng)站設(shè)計規(guī)劃
  • 做房地產(chǎn)資質(zhì)是什么網(wǎng)站查seo褲子的關(guān)鍵詞首頁排名有哪些
  • 建設(shè)公積金網(wǎng)站蘇州做網(wǎng)站的專業(yè)公司
  • 廣州市網(wǎng)站建設(shè)制作費用站長全網(wǎng)指數(shù)查詢
  • 2017自己做網(wǎng)站的趨勢seo站長
  • 學做網(wǎng)站網(wǎng)百度網(wǎng)訊科技有限公司官網(wǎng)
  • 長沙企業(yè)做網(wǎng)站百度一下你就知道官網(wǎng)網(wǎng)址
  • 如何制作香水 簡單seo交流論壇seo顧問
  • 網(wǎng)站維護步驟優(yōu)化營商環(huán)境存在問題及整改措施
  • 一元購網(wǎng)站建設(shè)多少錢seo自學教程seo免費教程
  • 河北seo推廣方案seo免費優(yōu)化網(wǎng)址軟件
  • 南充做網(wǎng)站公司哪家好營銷型網(wǎng)站推廣
  • 圖書館網(wǎng)站建設(shè)的建議免費信息推廣平臺
  • 企業(yè)做網(wǎng)站的發(fā)票怎樣入賬網(wǎng)頁設(shè)計框架圖
  • 醫(yī)院網(wǎng)站建設(shè) 價格網(wǎng)站免費搭建
  • 騰訊云服務(wù)器上傳網(wǎng)站b站視頻推廣網(wǎng)站2023
  • 光谷做網(wǎng)站推廣怎么樣百度模擬點擊軟件判刑了
  • 江西省建設(shè)監(jiān)督網(wǎng)站收錄
  • 動態(tài)網(wǎng)站開發(fā)常用技術(shù)龍網(wǎng)網(wǎng)絡(luò)推廣軟件
  • 在哪做網(wǎng)站便宜又好關(guān)鍵詞優(yōu)化步驟簡短
  • 廣州海珠發(fā)布seo排名軟件
  • 安裝wordpress報404錯誤網(wǎng)站seo專員
  • 蘇州做門戶網(wǎng)站的公司免費注冊推廣網(wǎng)站
  • 成都微信公眾號外包seo診斷工具有哪些