jsp笔记
JSP(Java Server Page)是一种动态网页技术标准,在HTML中嵌入Java程序片段(Scriptlet)和JSP标签(tag)所构成。
执行逻辑
服务端收到客户端的请求
if(请求HTML/XML页面){
直接将页面相应代码发给客户端
}
else if(请求JSP页面){
if(页面第一次被请求 || 页面被修改过){
1.JSP文件(.jsp)转换成servlet文件(.java)
2.编译生成字节码文件(.class)
3.执行字节码文件,并将执行结果以HTML的形式返回给客户端。
}
else{
//页面之前已执行过且未被修改
直接执行已生成的字节码文件(.class),并将执行结果以HTML的形式返回给客户端。
}
}
JSP基本元素
- 声明:
<%! int a; %>,声明页面全局变量。 - 表达式:
<%=...%>,将结果转成字符串形式输出到页面中 - 代码片段(Scriptlet):
<% ... %>,java代码片段,多行没关系的。注意System.out.Print输出是控制台和html展示无关。 - JSP指令(静态):
<%@ xxx %>格式<%@ page 属性1="xx" 属性2="xx"%>,设置页面属性<%@ include file="文件名"%>,将文件插入到当前页面中(静态插入) - JSP动作(动态):
<jsp:xxx />格式<jsp:include page="文件名"/>,将文件的执行结果插入到当前页面(动态插入)<jsp:forward page="文件名"/>,停止当前页面,转向指定HTML/JSP文件的页面(地址栏不变)<jsp:param name="变量名" value="变量值"/>,传递参数,作为include/forward的子标签使用,在其他页面中通过request.getParameter(“变量名”)接收参数。
JSP内置对象
JSP内置对象无需创建就可以直接使用,具体有以下几种:
- 输出输入对象:request对象、response对象、out对象
- 通信控制对象:pageContext对象、session对象、application对象
- Servlet对象:page对象、config对象
- 错误处理对象:exception对象
JSP内置对象作用域
| 作用域 | 说明 |
|---|---|
| page | 只能在当前页面中访问 |
| request | 整个请求周期,从发起请求到返回响应。(期间可能forward跳转了多个页面) |
| session | 整个当前会话,从打开浏览器开始,到关闭浏览器都算一个session |
| application | 整个应用期,从服务器启动应用,到应用结束(对象可被所有用户共享) |
request对象
- 当客户端通过HTTP请求JSP页面时,服务器会自动创建request对象,并将请求信息封装进去。处理完请求后,request对象即自动销毁。
- 常用方法:(注意区分参数和属性)
String getParameter(String name):获取客户端传送给服务器的参数值(如form表单中的内容)void setAttribute(String name,Object obj):服务端自己设置request属性值(便于在页面间传数据)Object getAttribute(String name):获取相应属性值(返回Obj类型,要进行强转) - 传参数(parameter)的方式:客户端通过form表单(可设置get/post形式)、服务端通过include/forward动作(get形式)。但一般服务端页面间通过属性(Attribute)传信息较常用。
- request还可获得客户端的IP地址、协议等信息。
response对象
- 服务器向客户端发数据时,自动创建response对象。response只负责设置响应的头部信息,响应体信息由其他对象设置。
- 重定向网页:
response.sendRedirect("xxx"),与forward的区别:forward仅能站内跳转,重定向可跳转到任何网站;forward带request信息跳转,重定向不带request跳转。 - 页面定时刷新/跳转:
response.setHeader("refresh","5"),每隔5s页面自动刷新一次。response.setHeader("refresh","5;url=www.baidu,com"),5s后自动跳转到百度页面。
session对象
- 会话(session)的含义:从用户第一次进入网站,到浏览器关闭期间,称为一次会话。用户第一次进入网站,服务器会生成session id标识不同用户,并将相关信息存储在浏览器,因此第二次访问(不关浏览器)还可识别出是同一用户。
- session对象可用来传递信息、获取会话属性。
application对象
每个Web程序一个application,只要不关闭服务器,application对象即一直存在。用于保存应用程序中的公有数据(所有的用户共享)。可用来记录访问网站的总人数。
JSTL
jsp标准标签库(Jsp Standarded Tap Library),使用标签取代jsp页面上的代码
常用的就是下面两个标签
<c:if>和<c:forEach>
用之前需要先引入。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
EL表达式
EL 语法和使用
EL(Expression Language) 是为了使 JSP 写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让 Jsp 的代码更 加简化。
语法:${expression}
备注:
- el 表达式一般操作的是域对象中的数据,操作不了局部变量。
- JSP中的四个域对象:
- pageContext(本页面)
- request(一次请求)
- session(一次会话)
- application(整个应用程序)
- EL 默认的查找方式为从小到大查找,找到即可。当域对象全找完了还未找到则返回空字符串 ””。
还支持List遍历等。以下就是遍历list这个List变量。
${empty list}
参考
- https://renli1024.github.io/2018/02/13/JSP/