文章目录
介绍
jsp的底层代码也是servlet, 专注于页面的技术
底层原理
拓展 转化的文件在work目录里面,tomcat停了他们会被销毁,当访问了,才会生成这些文件,IDEA在启动时控制台会说保存在哪里。
语法
<%!%> 会移动到前面,是成员变量
标签
page主标签
页面发生错误,会向那个页面跳转。
include
引入静态页面html+css,相当于 引入模块。先融合jsp文件,再转换成一个java文件。
内置对象
可以直接使用,就是再底层代码中创建的对象。
四大作用域对象
作用:存取数据
一个页面对应一个PageContext ,作用于就是当前页。都用设置、获取、删除。
一次请求(访问一次)中都是用的同一个request
一次会话中都是用的同一个session,
建立一个会话,请求和响应可以多次。一个会话可以包括含请求
servletContext 在整个应用只有一个。
application的应用场景
- 全局配置信息: 您可以将应用程序的全局配置信息,如数据库连接信息、第三方 API 密钥等,存储在 application 对象中。
- 计数器和统计信息: 您可以使用 application 对象来存储全局的计数器、访问次数、在线用户数等统计信息。
- 全局缓存: 在需要共享数据的情况下,您可以使用 application 对象作为一个全局缓存,存储一些需要频繁访问的数据,以减少数据库或其他资源的访问次数。
- 应用程序级别的数据: 如果您需要在整个应用程序范围内共享一些数据,如全局常量、数据列表等。
- 数据初始化: 您可以在应用程序启动时使用 application 对象来初始化一些全局数据
- 共享对象实例: 您可以将某些对象实例化并存储在 application 对象中
request
- 传递数据
- 上传文件处理
- 处理国际化和本地化
session
- 购物车: 在电子商务应用中,您可以使用 session 对象来存储用户的购物车信息
- 用户设置和偏好: 您可以使用 session 对象来存储用户的偏好设置、主题选择等个性化信息
- 缓存用户数据: 对于一些频繁访问的数据,您可以将它们存储在 session 对象中
- 用户日志和操作记录: 您可以使用 session 对象记录用户的操作历史
- 单点登录(SSO): 在多个相关应用之间共享用户会话信息
注意
不能跨域取值
例如:
在request,session,ServletContext在哪里设置的值,只能在那获取。
但是 :在pageContext中可以用findAttribute(“name”)在页面上跨域取值
动作元素
include 动态引入,引入动态页面jsp 先转换->调用方法引入
底层转换
EL表达式
需要导el-api包
简化 页面去作用域取值的过程取不到就不显示。
直接${key}取值,支持基本计算,加,减,乘,除等
可以用css修改
默认是从最小的作用域开始取值:
pageContext->request->session->application
指定某一个域
另一种:key有其他奇怪的值。
这样取的
sevlet交互
WEB-INF里面的页面,只能通过下面的请求转发来获取
重定向
两次请求、地址栏会发生变化
请求转发
多次请求,地址栏不会发生变化,是服务器内部操作
获取servletContext
JSTL
JSTL英文全称是“JSP Standard Tag Library”,即JSP标准标签库之意
首先导包,这是核心库,还有其他库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
if
forEach
varStatus 属性用于获取循环状态信息,如:varStatus.index 可以获取当前迭代的索引等
choose
通配符
匹配一层
/** 多层匹配
后缀,区分不同的请求
线程安全问题
可以将成员变量换成局部变量;
因为每个请求,调用service都是各自的变量,都有不同的地址。
模型
MVC
三层架构
web jsp servlet html
service
dao
结合
view controller service dao