91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java Web 工程servlet中@WebServlet("/HelloServlet")原理

發布時間:2020-06-26 03:43:20 來源:網絡 閱讀:1591 作者:CACZJZ 欄目:開發技術

編寫好Servlet之后,接下來要告訴Web容器有關于這個Servlet的一些信息。在Servlet 
3.0中,可以使用標注(Annotation)來告知容器哪些Servlet會提供服務以及額外信息。例如在HelloServlet.java中:
@WebServlet("/hello.view")
public class HelloServlet extends HttpServlet {
只要在Servlet上設置@WebServlet標注,容器就會自動讀取當中的信息。上面的@WebServlet告訴容器,如果請求的URL是“/hello.view”,則由HelloServlet的實例提供服務。可以使用@WebServlet提供更多信息。
@WebServlet(
    name="Hello",
    urlPatterns={"/hello.view"},
    loadOnStartup=1
)
public class HelloServlet extends HttpServlet {
上
面的@WebServlet告知容器,HelloServlet這個Servlet的名稱是Hello,這是由name屬性指定的,而如果客戶端請求的
URL是/hello.view,則由具Hello名稱的Servlet來處理,這是由urlPatterns屬性來指定的。在Java 
EE相關應用程序中使用標注時,可以記得的是,沒有設置的屬性通常會有默認值。例如,若沒有設置@WebServlet的name屬性,默認值會是
Servlet的類完整名稱。
當應用程序啟動后,事實上并沒有創建所有的Servlet實例。容器會在首次請求需要某個Servlet服務時,才
將對應的Servlet類實例化、進行初始化操作,然后再處理請求。這意味著第一次請求該Servlet的客戶端,必須等待Servlet類實例化、進行
初始動作所必須花費的時間,才真正得到請求的處理。
如果希望應用程序啟動時,就先將Servlet類載入、實例化并做好初始化動作,則可以使用
loadOnStartup設置。設置大于0的值(默認值為-1),表示啟動應用程序后就要初始化Servlet(而不是實例化幾個Servlet)。數
字代表了Servlet的初始順序,容器必須保證有較小數字的Servlet先初始化,在使用標注的情況下,如果有多個Servlet在設置
loadOnStartup時使用了相同的數字,則容器實現廠商可以自行決定要如何載入哪個Servlet。


補充添加:標注(Annotation)聲明后,則不需要在Web.xml中再次聲明servlet的相關信息了:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    metadata-complete="false" version="2.5">
    <display-name>mavenWeb</display-name>
 <servlet>		
 <servlet-name>HServlet</servlet-name>
<servlet-class>com.kim.demo.HelloServlet</servlet-class>	
 <load-on-startup>1</load-on-startup> 
</servlet>
<servlet-mapping>		
<servlet-name>HServlet</servlet-name>		
<url-pattern>/HServlet</url-pattern>
</servlet-mapping>
</web-app>

注意:

metadata-complete="false" 默認的是

 metadata-complete="true" 必須的修改掉

Servlet 3.0 的部署描述文件 web.xml 的頂層標簽 <web-app> 有一個 metadata-complete 屬性,該屬性指定當前的部署描述文件是否是完全的。如果設置為 true,則容器在部署時將只依賴部署描述文件,忽略所有的注解(同時也會跳過 web-fragment.xml 的掃描,亦即禁用可插性支持,);如果不配置該屬性,或者將其設置為 false,則表示啟用注解支持(和可插性支持)。
應用注解方便很多,不過現在都用集成spring等基本原始的servlet也不會多寫了



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰兴市| 扎赉特旗| 九龙城区| 衡东县| 蕲春县| 大安市| 平阴县| 东海县| 格尔木市| 黑水县| 八宿县| 金湖县| 额敏县| 平邑县| 九龙县| 油尖旺区| 五河县| 明星| 新泰市| 陇西县| 农安县| 柳河县| 张家港市| 万载县| 漯河市| 田阳县| 隆安县| 罗山县| 鹰潭市| 通化县| 临夏县| 稻城县| 尉氏县| 柏乡县| 舟曲县| 宝丰县| 北辰区| 华容县| 侯马市| 东山县| 措勤县|