简单的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才会被调用。