Servlet笔记

什么是Servlet?

Servlet 是 Java web 开发的基石,是与平台无关的服务器组件,它是运行在 Servlet 容器/web 应用服务器(Tomcat是其中一种具体的实现形式),负责与客户端进行通信。

Servlet 的功能

  1. 创建并返回基于客户请求的动态HTML页面(客服发送请求到 Servlet , Servlet 按照请求结果给出特定的 HTML 界面,比如正确的界面或者有错误的界面,同时可以更新界面上的数据等)。
  2. 与数据库进行通信。

如何使用 Servlet ?

Servlet 本身是 javax 包提供的一组接口,自定义一个类,让这个类实现 Servlet 接口,这个类就具备了接收客户端请求及作出响应的功能。

Step 1:

编写一个类,实现 javax.servlet.Servlet 接口(如果没有这个类,需要把 Tomcat library 引入,有 jsp-api。jar 和 servlet-api.jar 两个 jar 包),然后复写五个方法。主要业务代码是写在 servlet() 方法中。

package com.xn.servlet;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet 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 {
        //最核心方法,业务逻辑写在这里
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
Step 2:

网页中输入主机号(默认是localhost)端口号加资源地址按理说是可以访问到 Servlet 类的,但是由于浏览器权限等限制,这个是不允许的,浏览器只能访问到 web 包下的根目录的那些 .jsp 文件,想访问到 src 包下的 Servlet 实现类,需要在通过映射的方式间接访问,同时映射需要开发者手动配置,有两种配置方式:

  1. 基于web/WEB-INF/web.xml 文件中做出映射 。



    
        MyServlet
        com.xn.servlet.MyServlet
    

    
        MyServlet
        /myservlet
    


其中映射是靠 servlet-name 实现,servlet-class 是需要映射的 Servlet 实现类的相对路径,url-pattern 是在访问时,跟在端口号后面的资源访问路径。

  1. 基于注解的方式(推荐)
    直接在 Servlet 类上加上@WebServlet注解,同时将 url 补充,最终效果与方法1完全一样。
~~~
@WebServlet("/myservlet")
public class MyServlet implements Servlet {

}
~~~

有了以上的映射,那在启动 tomcat 以后,在浏览器里键入
http://localhost:端口号/myservlet
就可以访问到Servlet 实现类了(此时浏览器界面是空白的但是不会报错),如果在 service 方法中有其他操作,此时就会执行。
之所以是空白界面,是因为以上操作,servlet 只是接收到了请求,但是没有做出响应。简单实现一个响应:

浏览器输入:
http://localhost:端口号/myservlet?id=10086

~~~
@Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //最核心方法,业务逻辑写在这里
        System.out.println("接收到客服端的请求");
        String id = servletRequest.getParameter("id");
        servletResponse.setContentType("text/html;charset=UTF-8");
        servletResponse.getWriter().write("客户端已接收到 id 为 " + id + "的请求");
    }
~~~

此时重新启动,键入上面的地址,此时界面上会显示出
客户端已接收到 id 为 10086的请求
的中文文字信息。

Servlet 的生命周期

  1. 当浏览器访问 Servlet 的时候,Tomcat 会查询当前 Servlet 的实例化是否存在,如果不存在,则通过反射机制动态创建对象,如果存在,直接执行第3步。
  2. 调用 init 方法完成初始化操作(生命周期中只会调用一次,浏览器刷新的时候,不走这个方法)
  3. 调用 service 方法完成业务逻辑操作。
  4. 关闭 Tomcat 时,会调用 destroy 方法,释放当前对象所占用的资源。

Servlet 的生命周期方法:无参构造方法、inti、service、destroy

  1. 无参构造方法只调用一次,创建对象。
  2. inti只调用一次,初始化对象。
  3. service 调用 N 次,执行业务方法。
  4. destroy 只调用一次,卸载对象。

你可能感兴趣的:(Servlet笔记)