什么是Servlet
Servlet是sun公司的一门用于开发动态web资源的技术
Servlet是一个接口,若想发布一个动态web资源,需要:
1.Java类实现Servlet接口
2.把Java类部署到web服务器中
通常把这个Java类成为Servlet
Servlet如何运行
Servlet由web服务器调用,web服务器收到Servlet访问请求后:
1.web服务器检测是否已经加载了该Servlet实例;如果否,则执行2,否则执行4;
2web服务器实例化和加载Servlet;
3调用初始化方法init();
4调用service()
5当服务器检测到一个Servlet从服务器中被移除,会调用destroy()
示意图:
测试例子
首先建立一个Web Project(Web_1.1),配置web.xml
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.servlet.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<!--拦截匹配*.do的访问-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
实现Servlet接口
package com.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class Servlet1 implements Servlet{
@Override
public void destroy() {
System.out.println("this is detroy");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("this is init");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("this is service");
}
}
测试步骤
将项目部署到Tomcat,然后运行Tomcat
然后访问http://localhost:8080/Web_1.1/a.do
首次访问打印结果
this is init
this is service
F5刷新再次访问,继续打印
this is service
重新加载项目(对着tomcat下的项目右键reload application而不是红色按钮stop server)
继续打印
2016-2-17 10:03:02 org.apache.catalina.startup.HostConfig checkResources
信息: Reloading context [/Web_1.1]
this is detroy