Servlet介绍

Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其余HTTP客户端的申请和HTTP服务器上的数据库或应用程序之间的中间层,上面所说的web服务器以Tomcat为例

MVC架构介绍

理解申请和响应的过程能更好的了解Servlet做的事件。
这里咱们联合MVC架构进行形容,先介绍什么是MVC

  • V是View的简写,为视图层,就是用户可能看到的局部,比方浏览器的页面
  • C是Controller的简写,为管制层,解决浏览器发送过去的申请,将申请交由模型层去解决,并将解决的最初后果返回给浏览器,中间层的含意。
  • M是Model的简写,为模型层,模型层又能够细分三个局部

    • service:解决业务逻辑,比如说浏览器发送一个用户登录的申请,服务器接管到之后把它交由管制层去解决,管制层接管到之后交给service,让service去解决用户登录的后果,判断用户的账号和明码是否正确
    • dao:数据长久层,用来读取和写入数据,联合下面提到的登录用例,当service要判断用户的账号和明码是否正确时,service首先要从数据库中查找该账号和对应的明码。这时候service把查找这件事交由给dao去负责,dao连贯数据库查找,将查找获取到的后果包装成domain实体返回给service,service再依据返回的后果进行判断
    • domain:用来示意实体局部,也就是Java中的类,一个用户对象就是一个实体

申请和响应的过程

联合我所画的图阐明整个过程

假如浏览器发给服务器一个登录的申请,整个过程如下:

  1. 浏览器向服务器发送一个登录申请,服务器接管到申请之后,调用handler线程解决申请,handler先解析申请,获取申请的资源名和申请携带的参数,之后将申请的资源名和申请携带的参数包装成request对象,并创立response对象,response对象用来寄存响应回来的信息。最初将request和response发给ServletController类
  2. ServletController类接管到之后,首先先从request对象中获取申请的资源名,判断是动态资源还是操作资源。因为登录是操作资源,所以ServletController会参考我的项目当中的配置文件,寻找有没有一个叫登录的操作,如果有的话会依据配置文件中登录操作对应的Controller类,并将申请交给这个Controller类。如果没有的话返回404状态码给浏览器,示意并没有这个操作资源
  3. 这个具体的Controller类是继承自HttpServlet,HttpServlet有一个service办法,controller重写了这个办法。当ServletController将申请交给这个具体的Controller对象,这个对象会执行service办法,在service办法中调用service层的对象解决业务逻辑
  4. service执行完之后将后果返回给controller对象,这个对象将失去的后果写回给浏览器
  5. 浏览器接管后将响应信息展现给用户

这就是大抵的一个流程,但并不是所有的申请响应过程都是截然不同,有的可能比较复杂,有的可能比较简单

Servlet的应用

在下面提到的申请和响应的过程中,Servlet就是Controller类,controller继承了Servlet类。创立一个Servlet类,须要如下几步(这里我用的是IDEA编译器,应用的Tomcat容器

  1. 创立一个类,继承HttpServlet
  2. 重写Service办法,办法里带有两个参数HttpServletRequest和HttpServletResponse,办法有两个异样ServletException和IOException,办法是没有返回值的。代码如下:
import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class TestController extends HttpServlet {    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        System.out.println("这是Servlet类");    }}
  1. 配置文件,该配置文件是告知Tomcat服务器有一个本人定义的类须要治理,在我的项目下的web文件夹下的WEB-INFO文件夹中的web.xml文件,配置信息如下:
    <servlet>        <servlet-name>test</servlet-name>        <servlet-class>TestController</servlet-class>    </servlet>        <servlet-mapping>        <servlet-name>test</servlet-name>        <url-pattern>/test</url-pattern>    </servlet-mapping>

url-pattern是申请的操作名,servlet-name是申请操作名对应的名字,servlet-class是servlet-name对应的Servlet类。

运行

启动Tomcat服务器,关上浏览器输出URL地址+申请的操作名,如下:http://localhost:8080/untitled_war_exploded/test
在控制台就能看到TestController执行了,输入信息如下:

本篇文章就到此结束,下篇文章将介绍Servlet对象的继承关系