Java EE
- Servlet & JSP
- Listener
- Fileter
- Cookie & Session
- myBatis
Spring Boot
Spring Cloud
Servlet & JSP 规范
【主业】Apache Tomcat (应用程序服务器) 一个 Servlet & JSP 的容器 / 引擎,是官方一个参考实现,(【副业】web服务器)
管理组件的生命周期
Servlet — Server Let (服务端组件)
applet application let 浏览器 / 桌面
midlet mobile(J2ME) let 移动端
servlet server let 服务端组件
bootstrap:响应式的前端组件 / 样式和主题基于布局,可重复使用的【功能单元】
容器:管理组件的生命周期,创建、销毁及期间其他的【回调方法】的调用
- Servlet(使用业务逻辑、数据访问、渲染HTML页面 – Java中嵌入HTML)(Web服务器运行的程序)
- Filter 过滤器
- Listener 监听器
- JSP(是一种特殊的Servlet,负责在服务端渲染HTML页面的 Servlet )(JavaServer Pages,本质 Servlet)
Servlet(服务端组件,在容器中运行)
-
Servlet
接口:生命周期 -
GenericServlet
抽象类:实现了接口中与协议无关的部分抽象方法 -
HttpServlet
抽象类:完成了基于 HTTP 协议的实现 -
MyServlet
自定义:加入自己的具体的业务流程和规则 -
HttpServletRequest
接口:封装了 HTTP 请求,输入流,接收 浏览器或客户端发送的请求数据 -
HttpServletResponse
接口:封装了 HTTP 相应,输出流,发送 数据(各种格式)给客户端,完成相应
Servlet 组件生命周期
- 当用户第一次访问时,容器调用
构造方法
创建 Servlet 实例
// 服务端组件,在容器中(Servlet 容器/引擎)
// loadOnStartup = 1:说到第一次访问,当添加这个参数时,项目运行时就实例化、初始化一个Servlet
@WebServlet(
value = { "/hello", "/bye" },
// =1 表示整个工程更新之后自动实例化、初始化
loadOnStartup = 1)
- 调用
init
初始化,加载其他资源 service(请求,响应)
响应请求- 调用
destroy
销毁组件 - 垃圾回收
GC
完成资源释放
JSP - JavaServer Pages
生命周期
JSP
容器:JSP
转化为.Java
(Servlet)- 当用户第一次访问时,容器调用
构造方法
创建 Servlet 实例 - 调用
init
初始化,加载其他资源 service(请求,响应)
响应请求- 调用
destroy
销毁组件 - 垃圾回收
GC
完成资源释放
JSP 本质上是 Servlet,用于渲染 HTML 页面的(在HTML 中嵌入了部分的 Java 代码),
语法
-
JSP 指令
- <%@ %>- 页面:这是页面全局参数,语言、编码、导入库、错误页面
<%@ page k1="" k2="" k3="" %>
- 包含:静态包含,编译前引入(复制到)被包含文件:页眉、页脚
<%@ include %>
- 标签库:导入
JSTL
JSP 标准标签库(tag lib)
<%@ taglib %>
- 页面:这是页面全局参数,语言、编码、导入库、错误页面
-
JSP 脚本
- <% %>- 定义(声明):成员变量和方法,成员变量全局
<%! %>
- 脚本块:在 service() 方法中,相应请求提供服务,线程安全,每个请求一个线程(线程安全)
<% Java %>
- 表达式: 等号右侧是变量、常量、有返回值函数的调用,显示(渲染)内容,不用[ ; ]结束
<%= %>
<% out.write(x); %> <%= x %> ${x} // EL:表达式语言,默认从作用域获得值
- 定义(声明):成员变量和方法,成员变量全局
-
JSP 动作
— action —>JSTL
<jsp:out> </jsp> <jsp:set> </jsp> <jsp:useBean> </jsp> <jsp:include> </jsp>
-
JSTL
- 便签库 -
不使用 JSP 了,使用JavaScript (JQuery AJAX,easyUI,ExtJS,Vue,React)
概念
Java Web 作用域
作用域
application
- ServletContext
全局唯一,一份session
- HeepSession
会话,多份,每个用户一份request
- HeepServletRequest
请求,数据放在一次请求中,如果请求转发 A—>B—>C 存在于多个页面或组件pageContext
- PageContext
页面,只在当前页面
内置对象