blog
原创

JavaWeb学习笔记——Servlet

Servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器

Servlet是一个接口,定义了Java类被浏览器访问到的规则

基础实现步骤

1. 创建JavaEE项目

2. 定义一个类,实现Servlet接口

public class myServlet1 implements Servlet

3. 实现接口中的抽象方法,在service方法中输出内容

@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() {

}

4. 配置Servlet

在web.xml的< web-app >标签中配置Servlet

<!-- Servlet配置 -->
<servlet>
    <!-- Servlet的自定义名称 -->
    <servlet-name>myServlet1</servlet-name>
    <!-- Servlet的全类名 -->
    <servlet-class>web.servlet.myServlet1</servlet-class>
</servlet>

<!-- Servlet映射配置 -->
<servlet-mapping>
    <!-- Servlet的自定义名称,和servlet标签中的名称一致 -->
    <servlet-name>myServlet1</servlet-name>
    <!-- Servlet的映射路径 -->
    <url-pattern>/myServlet1</url-pattern>
</servlet-mapping>

5. 启动Tomcat,在打开网页的地址栏后添加url-pattern中的映射路径 在这里插入图片描述 控制台输出 在这里插入图片描述

Servlet执行原理

  1. 当服务器接收到客户端浏览器的请求后,会解析请求URL路径

http : //localhost:8080/Servlet/myServlet1

localhost:8080:通过localhost找到主机,并通过端口号寻找到tomcat

Servlet:寻找到tomcat下部署的项目

myServlet1:在对应项目的web.xml中查找Servlet的映射路径

  1. 通过查找到的映射路径,继续查找到对应的servlet-name,并通过servlet-name查找到Servlet的全类名
  2. tomcat将对应的字节码文件加载进内存,并创建其对象
  3. 调用对象方法

Servlet生命周期方法

① init():初始化方法,在Servlet被创建时执行,只执行一次

@Override
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("创建Servlet init...");
}

默认情况下,第一次被访问时,Servlet被创建

可以在web.xml的< servlet >标签中指定Servlet的创建时机

<load-on-startup></load-on-startup>

如果标签体内值为负数,则在第一次被访问时创建Servlet

如果标签体内值为0或正整数,则在服务器启动时创建Servlet

② service():提供服务方法,每当Servlet被访问时执行,可执行多次

@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    System.out.println("提供服务 service...");
}

③ destroy():销毁方法,在服务器正常关闭时执行,只执行一次

@Override
public void destroy() {
    System.out.println("关闭服务器 destroy...");
}

启动服务器 在这里插入图片描述 多次刷新页面 在这里插入图片描述 关闭服务器 在这里插入图片描述

Servlet其他方法

① getServletConfig():获取ServletConfig对象

② getServletInfo():获取Servlet的信息(版本,作者等)

Servlet 3.0注解配置

使用注解配置可以不配置web.xml中的内容

实现步骤

  1. 创建JavaEE项目,选择3.0以上版本的Servlet,可以不创建web.xml

  2. 定义一个类来实现Servlet接口

  3. 实现抽象方法

  4. 在类上使用@WebServlet注解进行配置

    @WebServlet("资源路径")

@WebServlet("/myServlet1")
public class myServlet1 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.print("service...");
    }

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

    @Override
    public void destroy() {

    }
}

Servlet体系结构

在这里插入图片描述

GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象方法,在定义Servlet类时,可以继承GenericServlet类,只实现service()方法即可

HTTPServlet:对HTTP协议的封装,简化操作,若类继承了HttpServlet类,需要复写doGet()方法和doPost()方法

Servlet路径定义

一个Servlet可以定义多个访问路径:@WebServlet({"/S1","/S2","S3"})

单层路径:/name

多层路径:/pname/name

Servlet
Java Web
  • 作者:Melonico
  • 发表时间:2021-03-15 17:46
  • 更新时间:2021-03-15 17:46

评论

暂无评论,快来发表第一个评论吧!
留言
TOP