servlet的定义
servlet又叫java服务器小程序,是使用java编写,运行在web服务器上的程序应用,它是浏览器或着其他http客户端请求和http服务器上的数据库和或应用程序之间的中间层。
servlet的特点
- servlet在web服务器空间内完成请求处理,没有必要创建新的进程单独处理。
- servlet独立于平台,因为它们是使用java编写的。
- serlet是按照servlet规范学习的,是之后java开发规范的基础。
- 针对多个servlet请求,通常情况下,服务器只会创建一个servlet实例对象,即servlet实例对象一旦创建,就会驻留在内存,为后续其他请求服务,只有当web容器推出/reload该web应用,servlet对象才会被销毁(单例模式,故要注意线程并发问题)。
servlet开发的三种方式
- 实现servlet接口。
- 通过继承GenricServlet。
- 通过HttpServlet。
servlet实现了两个类,GenricServlet和过HttpServlet
servlet的生命周期
- servlet 初始化后即调用init()方法(该方法会将servlet加载到内存,该方法不是每次都调用的,只有在web服务未加载servlet才会调用,即不是一个请求一次调用)。
- 然后servlet调用service()方法处理客户端请求。
- 在servlet实例(web应用reload或关闭tomcat)销毁之前会调用destroy()方法。
- 最后servlet会被jvm的垃圾回收器进行垃圾回收。
实现案例的详解
- 实现servlet接口
package com.spy;
import javax.servlet.*;
import java.io.*;
public class ServletOne implements Servlet {
/**
* 初始化
*
* @param config
* @throws ServletException
*/
public void init(ServletConfig config) throws ServletException {
}
/**
* 获取servlet配置
*
* @return
*/
public ServletConfig getServletConfig() {
return null;
}
/**
* 服务函数,逻辑代码
*
* @param req
* @param res
* @throws ServletException
* @throws java.io.IOException
*/
public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException {
System.out.println("hello world");
res.getWriter().println("hello world");
}
public java.lang.String getServletInfo() {
return null;
}
/**
* 销毁servlet
*
* @return
*/
public void destroy() {
}
}
- 通过继承GenricServlet。
package com.spy;
import javax.servlet.*;
import java.io.*;
public class ServletTwo extends GenericServlet{
public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException {
System.out.println("hello world two");
res.getWriter().println("hello world two");
}
}
- 通过HttServlet。
package com.spy;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
/**
* 在httpServlet中,对post和get提交进行了分别处理
*/
public class ServletThird extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("hello world third");
response.getWriter().println("hello world third==>get");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("hello world third");
response.getWriter().println("hello world third==>post");
}
}