簡單的servlet介紹:java
javax.servlet.Servlet接口:任何的Servlet必須實現的接口(被容器調用)
void init(ServletConfig config):初始化一個Servlet時會被調用
void service(ServletRequest req,ServletResponse resp):針對用戶的每一次請求,此方法都會被調用
void destroy():當一個Servlet對象被摧毀時,調用該方法。web
代碼:瀏覽器
ServletDemo1.javatomcat
public class ServletDemo1 extends HttpServlet {
public ServletDemo1(){
System.out.println("調用了默認構造方法");
}
public void init(ServletConfig config){
System.out.println("調用了初始化方法");
}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
String data="Hello servlet";
ServletOutputStream outputStream = res.getOutputStream();
outputStream.write(data.getBytes());
outputStream.close();
}
public void destroy(){
System.out.println("調用了銷燬方法");
}
}app
web.xmlurl
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>cn.itxx.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
編寫好這麼多就能夠發佈了到tomcat運行了xml
訪問:http://http://localhost:8080/Hello/hello對象
瀏覽器會輸出接口
Hello servlet內存
原理:到這裏咱們會想這是怎麼實現的?
這裏用到了反射機制
首先咱們訪問http://localhost:8080/Hello/hello,進入tomcat中,找到項目Hello應用,這個加載的同時也會加載web.xml。
在有Hello應用查找hello,在加載的web.xml中找url-parttern,最後加載該類,並實例化。
在加載類的同時其實就是用的反射機制。
加載類,並實例化代碼實現:Class.forName("cn.itxx.ServletDemo1").newInstance();
最後有一點就是,當Servlet對象的實例:用於第一次使用時建立,並完成初始化。之後就駐留在內存中了。當應用被卸載,或者Tomcat中止了,destroy纔會被調用。