博客
关于我
Servlet
阅读量:421 次
发布时间:2019-03-06

本文共 3495 字,大约阅读时间需要 11 分钟。

一 Servlet简介

Servlet是JavaWeb三大组件之一 运行在服务器上的小程序

Servlet是一个接口 定义了Java类被服务器(Tomcat等等)识别的规则

 

二 新建一个Servlet

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

/** * Servlet快速入门 * Created by Hy on 2020/6/29. */public class ServletDemo1 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 world");    }    @Override    public String getServletInfo() {        return null;    }    @Override    public void destroy() {}}

3. 配置Servlet web.xml

demo1
com.hy.servlet.ServletDemo1
demo1
/demo1

启动项目 访问 http://localhost:8080/demo1

 

三 Servlet执行原理

浏览器输入地址 -> 找到对应主机对应端口对应项目对应资源名称 -> 服务器检索web.xml -> 根据servlet-mapping匹配servlet -> 服务器将全类名对应的字节码文件加载进内存 创建实例 调用service()

 

四 Servlet生命周期

/** * Servlet生命周期 * Created by Hy on 2020/6/29. */public class ServletDemo2 implements Servlet {    @Override    public void init(ServletConfig servletConfig) throws ServletException {        // 生命周期方法 创建        // 在Servlet被创建时执行 只会执行一次        System.out.println("init()");    }    @Override    public ServletConfig getServletConfig() {        // 获取Servlet的配置对象        return null;    }    @Override    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {        // 生命周期方法 提供服务        // 每一次Servlet被访问时执行 执行多次        System.out.println("service()");    }    @Override    public String getServletInfo() {        // 获取Servlet的一些信息 比如版本 作者等等        return null;    }    @Override    public void destroy() {        // 生命周期方法 销毁        // 在服务器正常关闭时执行 只会执行一次        System.out.println("destroy()");    }}

1. 被创建 执行init() 只会执行一次

Servlet在内存中只存在一个实例 Servlet是单例的

当多个用户同时访问时 可能存在线程安全问题 所以尽量不要在Servlet中定义需要修改的成员变量

Servlet默认情况下 第一次被访问时创建 可以配置Servlet创建时机 web.xml

demo2
com.hy.servlet.ServletDemo2
1
demo2
/demo2

2. 提供服务 执行service() 执行多次

每次访问Servlet时 service()都会被调用一次

3. 被销毁 执行destroy() 只会执行一次

Servlet被销毁前执行 服务器正常关闭时 Servlet被销毁

 

五 Servlet3.0注解

使用注解代替web.xml配置

/** * Servlet3.0注解 路径定义规则 * 1. /xxx 路径匹配 * 2. /xxx/xxx 多层路径 目录结构 * 3. *.do 扩展名匹配 * 注意: *是匹配所有 但是优先级最低 * Created by Hy on 2020/6/29. *///@WebServlet("/demo3") //路径匹配//@WebServlet(urlPatterns = "/demo3", loadOnStartup = 1) //路径匹配 配置Servlet创建时机//@WebServlet({"/demo3", "/d3"}) //一个Servlet可以定义多个访问路径@WebServlet({"/demo3", "/d3", "/user/d", "/abc/*", "*.do"})public class ServletDemo3 implements Servlet {    @Override    public void init(ServletConfig servletConfig) throws ServletException {        System.out.println("init...");    }    @Override    public ServletConfig getServletConfig() {        return null;    }    @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体系结构

 

转载地址:http://kdmuz.baihongyu.com/

你可能感兴趣的文章
数据库三个级别封锁协议
查看>>
ACM/NCPC2016 C Card Hand Sorting(upc 3028)
查看>>
ubuntu学习笔记-常用文件、命令以及作用(hosts、vim、ssh)
查看>>
SLAM学习笔记-求解视觉SLAM问题
查看>>
程序员应该知道的97件事
查看>>
create-react-app路由的实现原理
查看>>
openstack安装(九)网络服务的安装--控制节点
查看>>
shell编程(六)语言编码规范之(变量)
查看>>
vimscript学习笔记(二)预备知识
查看>>
Android数据库
查看>>
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
查看>>
STM8 GPIO模式
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
查看>>
【单片机开发】智能小车工程(经验总结)
查看>>
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
查看>>
C++&&STL
查看>>
微信js-sdk使用简述(分享,扫码功能等)
查看>>
c++中ifstream及ofstream超详细说明
查看>>