JSP文件
- JSP文件在执行时将文件中所有内容写入响应体中
- 可以书写HTML5,JavaScript,Java等多种语言
- JSP文件存在于web文件夹下
书写规范
<% 这里面写Java命令 %>
<%=变量名 %> 将变量值写入响应体中
<%=num1+num2 %> 可以在写入时进行运算
<%@ page import="path" %> Java导包
<%@ include file="文件名.jsp"%> 导入外部JSP文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
以UTF-8编译,语言类型为Java
JSP内置对象
对象:request
类型:HttpServletRequest
作用:读取请求包信息,在请求转发时与Servlet进行数据共享
对象:session
类型:HttpSession
作用:读取,添加共享数据
对象:application
类型:ServletContext
作用:对于全局作用域对象实现数据共享,可以多个Servlet共同使用
PageContext
- 当前页作用域对象(JSP文件独有)
- 只能在当前JSP文件中使用
- 用于JSTL标签和JSP文件间的数据共享
Servlet 与 JSP 的分工
Servlet:负责处理业务得到处理结果
JSP:将处理结果写入响应体中
Servlet 一般使用请求转发来调用 JSP 文件(通过请求作用域对象)
Http服务器调用JSP文件步骤
- Http服务器 将JSP文件内容编辑为Servlet接口实现类(.java文件)
- 将Servlet接口实现类 编译 为class文件
- Http服务器创建一个 class实例对象,即 Servlet实例对象
- Http服务器通过 Servlet实例对象 调用 _jspService方法,将JSP文件内容写入响应体中
JSP文件编辑与编译后的文件位置
C:\Users\Administrator\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\c6e7db22-0976-446b-881c-4494dbff2ff5\work\Catalina\localhost\MyWeb_war_exploded\org\apache\jsp
重点:在work文件夹下
EL 工具包
- 不需要手动导入的包,由Tomcat来负责
EL表达式
${作用域对象别名.共享数据}
${applicationScope.key} applicationScope是EL表达式中全局作用域对象的别名
${sessionScope.key} sessionScope是会话作用域对象的别名
${requestScope.key} requestScope是请求作用域对象的别名
${pageScope.key} pageContext是当前页作用域对象的别名
引用数据类型
${requestScope.key.属性名} 不管属性是否私有
EL表达式中没有提供遍历集合的方法
EL表达式简化版
${共享数据名} 简化代码,提高开发效率
缺点:
- 有风险,执行“猜”算法
- 先到pageContext内找,再先后到request,session,application内找共享数据
- 找寻的顺序固定的,因此降低了执行速度
EL表达式支持运算表达式
数学运算 + - * /
关系运算
> | >= | < | <= | == | != |
gt | ge | lt | le | eq | != |
三元表达式
EL表达式内置对象
${param.请求参数名} 获取请求包中的请求参数
${paramValues.请求参数名[ i ]} 如果一个请求参数关联多个值,这可以利用paramValues来获取指定值