servlet是動態網頁的一種技術,用java語言實現。在tomcat中,servlet的建立是有tomcat實現。html
servlet接口中有5個函數:java
其餘信息:init、service、destroy是生命週期函數。init destroy是調用一次。而service是調用屢次。web
servlet其實就是應用中的一個小程序,一個應用部署中能夠由多個servlet。根據url的應用信息能夠找到對應的web應用。servlet的路徑須要在web的文件中進行指定。多個url能夠指定一個name。或者使用通配符。
url路徑匹配:小程序
<servlet>
<name></name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<name></name>
<url-pattern></url-pattern>
</servlet-mapping>
複製代碼
*********注意servlet的url路徑前要有/表示相對地址。若是沒有/部署會報錯。瀏覽器
主要實現是管理容器傳給servlet一些信息。初始化參數與servletContext,serverlet標籤在配置文件中的寫法以下圖:name是惟一標識,class表明真是的servlet類。裏面包含一些initparameter配置信息。緩存
繼承了servlet與configservlet接口。而且實現log的方法,這個方法主要方便咱們編寫servlet接口的函數。tomcat
基於http協議繼承了servlet類。將service()函數分散到http中的各類方法中 相關函數介紹:安全
servletContext對應一個應用,包含一個servlet容器的相關信息。這個類是很重要的,也稱爲一個數據域(一個應用的servlet能夠相互傳遞信息)bash
System.out.println(context1.getContextPath());// return /web3 。uri對象的應用地址
複製代碼
ServletContext context2=context1.getContext("/web2");
System.out.println(context2.getContextPath());//拋出異常,null指針
ServletContext context3=context1.getContext("/web3");
System.out.println(context3.getContextPath());// /web3 沒有任何用處。
複製代碼
System.out.println(context1.getMimeType("abc.text")); //text/plain
System.out.println(context1.getMimeType("abc.jpg")); //image/jpeg
複製代碼
For example, for a web application containing:
/welcome.html
/catalog/index.html
/catalog/products.html
/catalog/offers/books.html
/catalog/offers/music.html
/customer/login.jsp
/WEB-INF/web.xml
/WEB-INF/classes/com.acme.OrderServlet.class
/WEB-INF/lib/catalog.jar!/META-INF/resources/catalog/moreOffers/books.html
getResourcePaths("/") would return {"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}, and getResourcePaths("/catalog/") would return {"/catalog/index.html", "/catalog/products.html", "/catalog/offers/", "/catalog/moreOffers/"}.
複製代碼
System.out.println(context1.getResource("a.txt"));
//print:file:/D:/java_temp/plug1/out/artifacts/web3_war_exploded/a.txt
複製代碼
<context-param>
<param-name>name1</param-name>
<param-value>value1</param-value>
</context-param>
複製代碼
ServletRegistration.Dynamic addServlet(String servletName, String className)
ServletRegistration.Dynamic addServlet(String servletName, Servlet servlet)
ServletRegistration.Dynamic addServlet(String servletName, Class<? extends Servlet> servletClass)把servlet增長到context裏面,至關於註冊。服務器
T createServlet(Class clazz) throws ServletException建立servlet的類 18.
ServletRegistration getServletRegistration(String servletName)
Map<String,? extends ServletRegistration> getServletRegistrations()返回註冊的servlet。
FilterRegistration.Dynamic addFilter(String filterName, String className)
FilterRegistration.Dynamic addFilter(String filterName,Filter filter)
FilterRegistration.Dynamic addFilter(String filterName, Class<? extends Filter> filterClass)
T createFilter(Class clazz)
FilterRegistration getFilterRegistration(String filterName)
Map<String,? extends FilterRegistration> getFilterRegistrations() 同上servlet 20.其餘的都是關於listener、session、classloader、declareRoles
web的工程以下圖,在hello.html增長超連接的網頁,其中第一個不能進行相對地址到servlet程序:相對地址爲http://localhost:8080/bservlet。相對地址通常採用三張方式:
<a href="/bservlet" target="_blank">bservlet</a>
<a href="bservlet" target="_blank">bservlet</a>
<a href="/web3/bservlet" target="_blank">bservlet</a>
<a href="http://localhost:8080/web3/bservlet" target="_blank">bservlet</a>
複製代碼
tomcat也是有java程序寫的,運行tomcat須要設置幾個一些變量讓程序的使用。