servlet简介

创建javaee的web项目

在使用servlet之前我们需要先创建一个javaee的web项目,一个web项目通常包含下面一些文件:

src
web
    WEB-INF
        lib
        classes
    index.jsp
  • src:存放java源代码
  • web:存放静态资源和动态资源
  • WEB-INF:该目录下的所有文件无法从浏览器中直接访问
  • lib:存放相关的jar包
  • classes:存放编译后的class文件
  • index.jsp:web项目中默认访问的首页

application context(项目上下文),通过配置项目上下文可以在tomcat部署多个项目。

什么是servlet

servlet是一门用于开发动态web资源的技术,可以运行在Web服务器中的小型Java程序,有时也叫做服务器端的小应用程序,servlet是server applet两个单词的组合而成。servlet 可以通过 HTTP协议接收和响应来自 Web 客户端的请求。

servlet的语法跟JavaSE是一样的并且能够使用JavaSE中的API,要想创建一个servlet并使用的话可以分为以下几个步骤:

  1. 创建一个javaee的web项目
  2. 编写一个Java类,实现javax.servlet.Servlet接口,并重写该接口中的抽象方法
  3. 在web.xml文件中配置该servlet(如果使用注解方式的话,无需配置web.xml)
  4. 将该web项目部署到tomcat中并启动

web访问流程图:

web访问流程图

如上图所示,服务器端程序其实就是实现了servlet接口的程序,servlet的主要作用其实就是处理和响应客户端的请求。

编写第一个servlet

创建一个web项目可以在创建项目时关联tomcat,这样eclipse会把相关的servlet-api.jar包拷贝到项目中,在项目创建一个Java类实现servlet接口并重写里面的方法。

package com.monkey1024.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 FirstServlet implements Servlet {

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
        System.out.println("Hello Servlet");
    }

    @Override
    public void destroy() {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {

    }



}

servlet创建好之后,需要在web.xml文件中进行配置,给servlet一个可以访问的URI地址:

<!-- 创建一个servlet实例 -->
  <servlet>
    <!-- 给servlet取一个名字,该名字需与servlet-mapping中的servlet-name一致 -->
    <servlet-name>firstServlet</servlet-name>
    <!-- servlet的包名+类名 -->
    <servlet-class>com.monkey1024.servlet.FirstServlet</servlet-class>
  </servlet>

  <!-- 给servlet一个可以访问的URI地址 -->
  <servlet-mapping>
    <!-- servlet的名字,与 servlet中的servlet-name一致-->
    <servlet-name>firstServlet</servlet-name>
    <!-- URI地址:http://locahost:8080/07-01-servlet/hello -->
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

之后将该web项目部署到tomcat中,启动成功后访问:http://locahost:8080/07-01-servlet/hello
可以看到eclipse控制台中打印出了Hello Servlet
通过上面示例可以看出,servlet的需要部署在tomcat中才能运行,有时tomcat也被称为是servlet的容器。

servlet执行流程

servlet执行流程序列图:

servlet访问流程图

  1. 客户端向tomcat发送请求,http://localhost:8080/07-01-servlet/hello
  2. tomcat根据请求的URL找到名称为07-01-servlet的应用
  3. tomcat根据请求的URI"/hello"找到web.xml文件中url-pattern与之对应的标签
  4. tomcat根据url-pattern标签中的servlet-name定位到com.monkey1024.servlet.FirstServlet类。
  5. tomcat实例化FirstServlet类
  6. 调用FirstServlet类中的init方法
  7. 调用FirstServlet类中的service方法
  8. FirstServlet将数据响应给客户端
  9. 调用distroy方法销毁FirstServlet