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中的类,一个用户对象就是一个实体
申请和响应的过程
联合我所画的图阐明整个过程
假如浏览器发给服务器一个登录的申请,整个过程如下:
- 浏览器向服务器发送一个登录申请,服务器接管到申请之后,调用handler线程解决申请,handler先解析申请,获取申请的资源名和申请携带的参数,之后将申请的资源名和申请携带的参数包装成request对象,并创立response对象,response对象用来寄存响应回来的信息。最初将request和response发给ServletController类
- ServletController类接管到之后,首先先从request对象中获取申请的资源名,判断是动态资源还是操作资源。因为登录是操作资源,所以ServletController会参考我的项目当中的配置文件,寻找有没有一个叫登录的操作,如果有的话会依据配置文件中登录操作对应的Controller类,并将申请交给这个Controller类。如果没有的话返回404状态码给浏览器,示意并没有这个操作资源
- 这个具体的Controller类是继承自HttpServlet,HttpServlet有一个service办法,controller重写了这个办法。当ServletController将申请交给这个具体的Controller对象,这个对象会执行service办法,在service办法中调用service层的对象解决业务逻辑
- service执行完之后将后果返回给controller对象,这个对象将失去的后果写回给浏览器
- 浏览器接管后将响应信息展现给用户
这就是大抵的一个流程,但并不是所有的申请响应过程都是截然不同,有的可能比较复杂,有的可能比较简单
Servlet的应用
在下面提到的申请和响应的过程中,Servlet就是Controller类,controller继承了Servlet类。创立一个Servlet类,须要如下几步(这里我用的是IDEA编译器,应用的Tomcat容器)
- 创立一个类,继承HttpServlet
- 重写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类"); }}
- 配置文件,该配置文件是告知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对象的继承关系