09 Servlet相关知识点---学习笔记
1.概念:运行在服务器端的小程序
Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。
将来我们自定义一个类,实现Servlet接口,复写方法。
2.快速入门:
(1)创建JavaEE项目
(2)定义一个类,实现Servlet接口
* public class ServletDemo1 implements Servlet
(3) 实现接口中的抽象方法
(4)配置Servlet
方法一:注解配置(掌握)
利用Servlet3.0:支持注解配置。可以不需要web.xml了。
* 步骤:
<1>创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
<2>定义一个类,实现Servlet接口
<3>复写方法
<4> 在类上使用@WebServlet注解,进行配置
* @WebServlet("资源路径")
package servlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet(urlPatterns = "/test02") public class ServletTest02 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } //提供服务的方法,每一次Servlet被访问时执行,可执行多次 @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("servlet3.0"); } //获取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_3_1.xsd" version="3.1"> <!--配置servlet--> <servlet> <servlet-name>test01</servlet-name> <!--填写java类的相对路径--> <servlet-class>servlet.ServletTest01</servlet-class> </servlet> <servlet-mapping> <servlet-name>test01</servlet-name> <url-pattern>/test01</url-pattern> </servlet-mapping> </web-app>
3.Servlet执行原理:
(1)当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
(2)查找web.xml文件,是否有对应的<url-pattern>标签体内容。
(3) 如果有,则在找到对应的<servlet-class>全类名
(4)tomcat会将字节码文件加载进内存,并且创建其对象
(5)调用其方法
4.Servlet中的生命周期方法:
(1) 被创建:执行init方法,只执行一次
Servlet什么时候被创建?
默认情况下,第一次被访问时,Servlet被创建
可以配置执行Servlet的创建时机。
Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
多个用户同时访问时,可能存在线程安全问题。
解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值
(2)提供服务:执行service方法,执行多次
* 每次访问Servlet时,Service方法都会被调用一次。
(3)被销毁:执行destroy方法,只执行一次
Servlet被销毁时执行。服务器关闭时,Servlet被销毁
只有服务器正常关闭时,才会执行destroy方法。
destroy方法在Servlet被销毁之前执行,一般用于释放资源
5.工作空间项目 和 tomcat部署的web项目
tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
* WEB-INF目录下的资源不能被浏览器直接访问。
断点调试:使用"小虫子"启动 dubug 启动
原文地址:https://www.cnblogs.com/luckyplj/p/11217618.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Flink】从零搭建实时数据分析系统
- Android模拟面试,解锁大厂——从Activity创建到View呈现中间发生了什么?
- 问你一个简单的问题:IP是怎么来的,又是怎么没的?
- 进击的NIO!Reactor模式!
- 交换机与VLAN:以办公室为例趣讲一波!
- 超详细Netty入门,看这篇就够了!
- Netty进阶之粘包和拆包问题
- 用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!
- Kubernetes 使用 ceph-csi 消费 RBD 作为持久化存储
- ZooKeeper入门,看这篇就够了
- 超详细的RabbitMQ入门
- 用向量做Mantel的几个问题
- Eclipse集成Maven打包时报错:[ERROR] Unknown lifecycle phase "mvn". You must specify a valid lifecycle phase
- Windows下使用Nginx+Tomcat做负载均衡
- CTO 写的代码,真是绝了