1. 什么是servlet

Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。

例子:

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class FirstServlet extends HttpServlet {

        //处理请求的方法
        public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {

            //数据发送给客户端—>控制台方式输出            
            //System.out.println(“Hello Servlet”);
            //数据发送给客户端—>HTML页面输出
            resp.setContentType(text/html);

            resp.getWriter().print(<html>);

            resp.getWriter().print(<head>);

            resp.getWriter().print(</head>);

            resp.getWriter().print(<body>);

            resp.getWriter().print(Hello World);

            resp.getWriter().print(</body>);

            resp.getWriter().print(</html>);    
        }
}

2. tomcat中配置servlet

Tomcat是一个web容器,也叫web服务器。我们都知道J2EE有十三个标准,这些标准大部分都是接口,Tomcat只是实现了JSP 和 servlet 开发标准。实现了所有的开发标准,就是应用程序服务器,比如Jboss。编译好的servlet类只能运行在tomcat容器中,客户端浏览器不可以直接访问Servlet,需要在web.xml中配置一下

web.xml配置实例

<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/FirstServlet</url-pattern>
</servlet-mapping>

Tomcat启动成功后,在浏览器中输入:http://localhost:8080/abingtest/servlet/FirstServlet

3. servlet工作过程

  1. tomcat解析URL:Tomcat启动后,监听我们的8080端口,当有Url请求发过来之后,解析出项目名称 abingtest,然后到webapps目录下搜索到该项目文件夹。
  2. tomcat根据web.xml寻找类文件:Tomcat去Web.xml文件中寻找 配置节中包含”servlet/FirstServlet”字符串,进而找到该类文件所在的位置。
  3. servlet类调用方法处理请求:我们写的FirstServlet 继承了HttpServlet ,重写了HttpServlet中的doGet() 方法,HttpServlet中还有一个doPost()方法。这两个方法都是用来处理Http请求的。Servlet会根据我们提交表单的方法(method=post/get)调用service方法来自动选择
  4. servlet处理完后通过Response对象返回
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class FirstServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
            //获取表单数据
            String userName = request.getParameter(userName);

    }
}

4. servlet的生命周期

Servlet的生命周期是由Tomcat容器管理的

  1. 客户发出请求—>Web 服务器转发到应用服务器Tomcat;
  2. Tomcat主线程对转发来用户的请求做出响应创建两个对象:HttpServletRequest和HttpServletResponse;
  3. 从请求中的URL中找到正确Servlet,Tomcat为其创建或者分配一个线程,同时把2创建的两个对象传递给该线程;
  4. Tomcat调用Servlet的servic()方法,根据请求参数的不同调用doGet()或者doPost()方法;
  5. 假设是HTTP GET请求,doGet()方法生成静态页面,并组合到响应对象里; Servlet线程结束,Tomcat将响应对象转换为HTTP响应发回给客户,同时删除请求和响应对象。

Servlet的生命周期:Servlet类加载(对应3步);Servlet实例化(对应3步);调用init方法(对应3步);调用service()方法(对应4、5步);;调用destroy()方法(对应6步)。

5. Servlet生命周期的各个阶段

参考资料:

  1. http://www.cnblogs.com/shaohz2014/p/3627505.html?utm_source=tuicool&utm_medium=referral
  2. http://www.tuicool.com/articles/z26ZR3

3. web