我对Java Servlet的认识

来源:互联网 发布:好看的网络剧排行榜 编辑:程序博客网 时间:2024/05/17 18:46
Servlet是Server applet的合成词。它是把Java语言编写的类使用在服务器上,服务于服务器的功能。与其等价的竞争对手是PHP、ASP.NET。
从狭义的编程角度来讲,Servlet是Java的一个API,使用它就可以开发服务器程序,程序中有许多个处理WEB请求的Servlet类。
从广义上讲,按照Sun公司要求的这样一种开发规则所写出的WEB项目,就是Java Servlet。

Servlet和JSP的区别:Servlet是把HTML写入到了Java代码里(只是作为字符串,仍然是纯Java语言,而JSP是把Java语言嵌入到了HTML里面。

Servlet的生命周期
1、用户访问某个URL
     浏览器对该url产生一个HTTP request,该request发送到服务器端。
2、服务器端接受了这个request并且送到servlet container
     这个container把这个request映射到一个预定的servlet上,然后该servlet被动态载入到container中。
3、container唤起该Servlet的init()函数。
     该函数只有当该Servlet第一次载入内存时才执行,进行初始化操作。
4、container唤起该Servlet的service()函数。
     该函数要负责处理用户发来的HTTP request,读取request中的数据、创建HTTP response。
5、Servlet之后会一直留在container的地址空间,以备随时使用。
     container每映射给该Servlet一个HTTP request,它都会调用一次service()函数。
6、在一定情况下,container会要从它的空间中卸载掉某个Servlet,这时其destroy()函数会被调用。

下面是一个最基本的Servlet类:
import java.io.IOException; import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;  public class ServletLifeCycleExample extends HttpServlet {     private int count;     @Override    public void init(ServletConfig config) throws ServletException {        super.init(config);        getServletContext().log("init() called");        count = 0;    }     @Override    protected void service(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        getServletContext().log("service() called");        count++;        response.getWriter().write("Incrementing the count: count = " + count);    }     @Override    public void destroy() {        getServletContext().log("destroy() called");    } }


0 0