Servlet概念
- Servlet是JavaEE规范之一,规范指的就是接口。
- Servlet是JavaWeb三大组件之一,三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。
- Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
知道了Servlet的概念,如何手动实现Servlet程序?
首先要新建一个JavaEE动态的Web工程
在工程中编写类来实现Servlet:
重点实现Service方法,因为Service方法是专门用来处理请求和响应的。
package com.atguigu.servlet;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet 被访问了");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
之后配置访问地址,否则服务器是不知道这个servlet程序的,在WEB-INF下的web.xml中配置:
具体代码配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- servlet标签给Tomcat服务器配置Servlet程序-->
<servlet>
<!--servlet-name标签 给servlet程序起一个别名(一般是类名) -->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet-class是Servlet程序的全类名-->
<servlet-class>
com.atguigu.servlet.HelloServlet
</servlet-class>
</servlet>
<!--servlet-mapping给Servlet程序配置访问地址-->
<servlet-mapping>
<!--servlet-name标签的作用是告诉服务器,当前配置的地址给哪个Servlet程序使用-->
<servlet-name>HelloServlet</servlet-name>
<!-- url-pattern标签配置访问地址-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
配置好后,就可以访问了,选择需要启动的Tomcat实例启动,结果如下图所示:
总结一下,就是下面三步:
- 编写一个类去实现Servlet接口。
- 实现service方法(是Servlet接口中非常重要的方法),处理请求,并相应数据。
- Servlet是运行在服务器上的,所有服务器上的东西都需要与之对应的访问地址,因此需要到web.xml中去配置servlet程序的访问地址。
在实际的开发中,很少通过实现Servlet接口这种方式来实现Servlet程序,开发的时候都是找Servlet的子类去继承,例如继承HttpServlet类;但还有一种更快捷的方式,就是使用IDEA直接生成类和配置。
Servlet的生命周期
- 执行Servlet构造器方法
- 执行init初始化方法
- 执行service方法
- 执行destory销毁方法
注意:第一、二步,是在第一次访问的时候创建Servlet程序会调用;第三步,每次访问都会被调用;第四步在Web工程停止的时候调用。