1 走进Servlet
1.1 Servlet简介
Servlet是什么?
Servlet是JavaEE规范之一,规范就是接口
Servlet是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、Filter过滤器、Listener监听器
Servlet是运行在服务器上的一个java小程序,可以接收客户端发来的请求,并响应数据给客户端
如何实现Servlet程序呢?
编写一个类去实现Servlet接口
实现service方法,处理请求,并响应数据
到web.xml中配置servlet程序的访问地址
1.2 第一个Servlet程序
下面来完成一个简单的Servlet程序,当访问到则在控制台打印提示信息
HelloServlet.java:
import javax.servlet.*; import java.io.IOException; /** * @author 兴趣使然黄小黄 * @version 1.0 */ public class HelloServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } /** * service方法是专门用来处理请求和响应的 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @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() { } }
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.example.servlet_test.HelloServlet</servlet-class> </servlet> <!--servlet-mapping标签给servlet程序配置访问地址--> <servlet-mapping> <!--servlet_name告诉服务器,当前配置的地址给哪个servlet程序使用--> <servlet-name>HelloServlet</servlet-name> <!--url-pattern标签配置访问地址 <br/> / 斜杠表示在服务器解析的时候,地址为:http://ip:port/工程路径 <br/> /hello 表示地址为:http://ip:port/工程路径/hello <br/> --> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
配置完成后,可以通过 http://ip:port/工程路径/hello 访问,成功访问后,控制台打印了如下信息:
1.3 Servlet程序如何定位到url地址
以上面的案例:http://localhost:8080/工程路径/hello为例:
先通过ip定位定位到了服务器,而后通过服务器端口找到Tomcat,再通过工程路径确认访问的工程,而后由资源路径访问到 web.xml 配置文件 中的 url,后确认了访问的HelloServlet类。
1.4 Servlet的生命周期方法
Servlet程序的生命周期方法调用顺序如下:
执行Servlet构造器方法;
执行init初始化方法;
执行service方法;
执行destroy销毁方法。
其中第一、二步,是在第一次访问的时候创建Servlet程序会调用。第三步每次访问都会调用。第四步只有在web工程停止的时候调用。
案例如下:
修改HelloServlet.java如下
import javax.servlet.*; import java.io.IOException; /** * @author 兴趣使然黄小黄 * @version 1.0 */ public class HelloServlet implements Servlet { public HelloServlet(){ System.out.println("构造方法被调用"); } @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init方法被调用"); } @Override public ServletConfig getServletConfig() { return null; } /** * service方法是专门用来处理请求和响应的 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service方法被调用"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("destroy方法被调用"); } }
当运行程序后,进行一次刷新页面后退出程序时,控制台打印信息如下:
补充
除了生命周期方法外,Servlet接口还提供了 getServletConfig 方法和 getServletInfo 方法,servlet可使用前一种方法获取任何启动信息,而后一种方法允许 servlet 返回有关其自身的基本信息,比如:作者、版权、版本等。