什么是servlet?
servlet是对支持Java是服务器的一般扩充。它最常见的用途是扩展Web服务器,停工非常安全的,可移植的、易于使用的CGI代替品。提示一种动态加载的模板,为来自Web服务器的请求提供服务。它完全运行在Java虚拟机上。由于它在服务器端运行,因此它不依赖于浏览器的兼容性。
servlet容器
负责处理客户请求、把请求传送给servlet并把结果返回给用户。不同程序实际实现可能有所变化,但容器与servlet之间的接口是由servlet API定义好的,这个接口定义了servlet容器在servlet上要调用的方法及传递给servlet的对象类。
servlet的生命周期
- servlet容器创建servlet的一个实例;
- 容器调用该实例的init()方法;
- 如果容器对该servlet有请求,则调用此实例的service()方法;
- 容器在销毁本实例钱调用它的destroy()方法;
- 销毁并标记该实例以供作为垃圾收集。
servlet的使用
创建类并继承HttpServlet,重写DoGet()方法和DoPost()方法,init()在Tomcat启动完执行,destroy()在Tomcat正常关闭时执行,强行关闭不执行。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;Charset=utf-8");
}
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("servlet初始化");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("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" id="WebApp_ID" version="2.5">
<display-name>por_servlet</display-name>
<welcome-file-list>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.zking.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/ss.do</url-pattern>
</servlet-mapping>
</web-app>