JSP
1. 简介
- JSP -> JavaServerPages,是一种动态网页技术标准。
- 将HTML网页和Java代码融合在一起,是服务器页面。
2. 页面组成部分
2.1 注释
- HTML注释
- 客户端可见
- 语法:
<!-- -->
- JSP注释
- 客户端不可见
- 语法:
<%-- --%>
- JSP脚本注释
- 客户端不可见
- 单行注释:
//
- 多行注释:
/**/
2.2 声明
<%! %>
- 用于放置JSP中定义的方法和变量
2.3 脚本
<%%>
- 用于放置JSP中的Java代码
2.4 指令
- page指令
- 位于JSP页面顶端
- 同一个JSP页面可有多个page指令
- include指令
- 将外部文件嵌入JSP页面
- taglib指令
- 使用标签库定义新的标签
2.5 表达式
<%= %>
- 注意:表达式不以 “ ; ” 结尾
2.6 静态内容
3. 运行机制
- 编写好一个JSP页面
- 判断页面是否是第一次加载 是 -> 3; 不是 -> 5;
- JSP引擎在运行过程中对JSP页面进行分析,将JSP转化为Servlet。
- 将Servlet实时编译为.class文件,执行jspInit()
- 解析执行字节码文件,jspService()
- 注:
- 若JSP页面没有改变,则直接使用已生成的;若改变,重新编译。
- JSP引擎会为每个请求创建一个线程
- jspService()用来处理客户端的请求
4. 内置对象
4.1 out
- 是JspWriter类的实例
- 主要用于客户端的输出
- 缓冲区:内存中用于存放临时数据的一块区域
4.2 request
- 是HttpServletRequest类的实例
- 用于封装客户端的请求信息,通过对象了解请求,做出响应
- 作用域:当前请求
- request的getParameters()和getParametersValues()
- getParameters()返回值
- getParametersValues()返回值的地址
4.3 response
- 是HttpServletResponse类的实例
- 包含响应客户请求的所有信息
- 作用域:当前页面
- response.getWriter()
- 获得一个可以向客户端输出的对象
- 该对象总是优先于out对象输出内容
- out是内置对象,在Servlet输出完后输出
- 该对象响应后就输出
4.4 session
- 是HttpSession类的实例
- session
- 客户端与服务端的会话
- 实际上是一个时间概念(浏览某个网站所用的时间)
- 服务器的内存中存放着不同用户的session
- session对象
- 生命周期:从打开浏览器连接上服务器到关闭浏览器离开服务器
- 当第一个JSP页面加载时session自动创建,进行会话管理
- 当用户在多个页面上跳转时,服务器通过该对象判断是否是同一用户
- 注:新建会话后,旧的SessionId仍存在,只是没有客户端再去使用它
- session的销毁
-
session.invalidate()
-
session超时
- session.setMaxInactiveInterval(时间) ,单位:s
- 在web.xml中配置
-
<session-config> <session-timeout> 10 </session-timeout> </session-config>
-
服务器重新启动
-
4.5 application
- ServletContext类的实例
- 用于存放全局变量
- 生命周期:服务器的启动到关闭
- application属性的改变会影响到其他用户对该属性的访问
4.6 page
- 是java.lang.Object类的实例
- 指向当前JSP页面,类似this的用法
4.7 pageContext
- 可访问JSP页面中的所有对象
- 可获取当前JSP页面中session、application的属性值
4.8 exception
- 是java.lang.Throwable类的实例
- 页面发生异常时,生成该对象
- 若要使用该对象,需将isErrorPage设置为true,否则不能编译
4.9 config
转发与重定向
- 转发
- 服务器行为
- 一次请求,转发
- 记录当前请求对象
- 地址栏中的url地址不变
request.getRequestDispatcher("页面").forward(request,response);
- 重定向
- 客户端行为
- 两次请求,第一次请求直接转发
- 不记录第一次清求对象
- 地址栏中的url地址改变
response.sendRedirect("页面")
5. 指令与动作元素
5.1 include
- 指令语法
<%@ include file="URL"%>
- 动作语法
<jsp:include page="URL" flush="true|false"/>
,flush表示是否要从缓冲区读取页面
5.2 forward
- 动作语法
<jsp:forward page="URL"/>
- 相当于转发
5.3 param
- 动作语法
<jsp:param name="参数名" value="参数值"/>
- 向动态文件中传递参数