一、什么是Servlet
1、 Servlet 是 JavaEE 规范之一。规范就是接口
2、 Servlet 就 lavaWeb 三大组件之一。三大组件分别是: Servet 程序、 Fiter 过滤器、 Listener 监听器。
3、 Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户。
很多地方也说Servlet是一个容器,本质上其实大同小异,说白了,Servlet就是从客户端接收到请求,并在Servlet中进行相应的操作,之后响应客户端。
这里我觉得理解为容器会更好一点,Servlet容器里含有接收请求和响应请求的对象,我们可以通过该容器接受到请求,并响应该请求。(像一个黑盒)
二、Servlet配置
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>untitled.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
1、<servlet>标签表示给服务器配置Servlet程序,也就是告诉服务器我们有一个Srevlet程序可以供服务器响应客户算请求时使用
2、<servlet-name>标签表示该sevlet程序的别名(一般是类名)
3、<servlet-class>就表示该Servlet程序的全类名
4、<servlet-mapping>用来配置程序的访问地址其中<url-pattern>来表示访问某个路径时,做响应的Servlet程序是<servlet-name>中表示的程序
简单来说,就是当我客户端要访问hello时,由HelloServlet来响应客户端的请求。
三、Servlet执行流程
我们以上面配置的Servlet以及下面的访问路径为例
http://localhost:8080/servlet/hello
我们来分解该访问路径
1、http:表示请求协议
2、localhost表示的是服务器的ip地址,即客户端用来锁定是哪个服务器来帮助我们完成请求的响应
3、:8080是端口号,通过端口号,定位到Tomcat
4、/servlet是工程路径,通过工程路径来确定访问那个工程
5、/hello表示资源路径,即我们通过/hello来确定我们用哪个servlet来响应我们的程序
上面呢个例子来说,我们的/hello路径通过一个叫HelloServlet程序来响应请求,HelloServlet又来找到我们的HelloServlet类,找到该类以后,通过该类(实现了servlet接口)中的service方法,我们来通过具体的方法响应请求。
四、Servlet生命周期
1、执行 Servlet 构造器方法
2、执行 init 初始化方法
第一、二步,是在第一次访问的时候创建 Servlet 程序会调用。
3、执行 service 方法
第三步,每次访问都会调用。
4、执行 destroy 销线方法
第四步,在 web 工程停止时候调用。
五、Servlet程序编写
我们如果想自己实现自己的Servlet程序,只需要实现servlet接口即可
servlet中最重要的一个方法就是service方法,service用来在每一次请求访问servlet程序时对请求进行进行响应。
public class MyFirstServlrt implements Servlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//提供服务
}
}
我们可以通过调用servletRequest方法获取到请求方式(GET,POST等),通过if语句来分别编写不同的方法响应不同的请求。
Servlet接口中其他的两个方法(此处借用大佬讲的)
getServletInfo( ),这个方法会返回Servlet的一段描述,可以返回一段字符串。
getServletConfig( ),这个方法会返回由Servlet容器传给init( )方法的ServletConfig对象。