JSP
JSP= HTML + Java + JSP自身的语法
JSP脚本 3个
JSP指令 3个
page指令,设置页面的参数
include指令,用于静态包含页面
如果页面中有公共部分可以抽取,可以单独写入一个页面文件中,使用include包含引入。
include相当于代码的拷贝,在jsp翻译成servlet之前就代码拷贝完成了。支持跨页面编程
taglib指令,用于引入标签库
JSP注释 3个
在什么类型的代码中使用什么类型的注释即可。
JSP内置对象 9个
在jsp内部能直接使用的对象。
out JspWriter 输出对象,数据输出到页面上
pageContext****
域对象
范围:当前页面
无论转发还是重定向,只要页面发生了跳转,pageContext就会销毁。
获取其他八个内置对象
在一些框架中使用。
操作其他三个域对象,获取或存储值
api:
设置值:pageContext.setAttribute(key,value,域范围);
获取值:pageContext.getAttribute(key,域范围)
查找值:pageContext.findAttribute("name");
从四个域中,按照范围从小到大,依次查找指定key的值,如果任意一级找到,就不再继续向后查找。
域范围:
PageContext.PAGE_SCOPE page域,也就是pageContext
PageContext.REQUEST_SCOPE request域
PageContext.SESSION_SCOPE session域
PageContext.APPLICATION_SCOPE application域,也就是ServletContext
四个域的范围排序:
从小到大:
PageContext<ServletRequest<HttpSession<ServletContext
MVC开发模式
代码的解耦合
JSP仅用于结果的展示,纯表现层。尽量不要在jsp中编写java的代码逻辑。
M model
模型层,用于封装数据、处理业务逻辑。
JavaBean、DAO、Service层
V View
视图层,用于展示数据,是和用户交互的一层。
在视图层不要编写逻辑。
JSP
C Controller
控制层,用于指派任务,任务的分发。
Servlet
EL表达式*****
在jsp中简化代码编写的一种表达式语言
和java语法不能互用,也就是说不能在el中编写java代码。
写法:
${ 表达式 } 最终会把表达式执行为一个值。
转义:
\${ 表达式} 会转义掉$,不会把这个表达式作为el执行,而是当字符串直接输出。
用法:
1.运算
empty
String "" null
List new ArrayList() null
判断对象是否为null,如果不为null,并且改对象有长度,长度为0,也会返回true。
2.获取值*****
el只能从域对象中获取值。如果获取不到值,返回空串。
${ key名称 }相当于pageContext.findAttribute,从小到大一次从四个域中获取值。
获取域中存储的对象
1.在Java中,JavaBean的属性是由setter和getter决定的,和成员变量的名称没有关系。
2.获取时el中指定key的名称,而不是存入的数据的变量名。
获取域中存储的list或map集合中的值
list集合和数组获取方式一致,使用下标指定
${ array[0]}
map集合两种获取方式
1.把map看成对象,map中的键值对看成此对象的属性
map.put("user",user);
${map.user.birthday.year}
2.把map看成一个集合,索引值为map中数据的键值
map.put("user",user);
${map["user"]} 引号不能省略
map.put("aaa.bbb",user);
${ map["aaa.bbb"] }
内置对象(隐式对象) 11个
cookie:获取请求中携带到页面上的cookie数组,把数组的每个元素取出,以cookie的name为key,cookie对象为value构造了一个map集合。
获取某个指定名称的cookie的值:${ cookie.名称.value } value不要忘记!
<form action="${pageContext.request.contextPath}/xxx"></form>
注意el两侧不要添加空格
JSTL
对JSP的标签进行补充,方便编写逻辑。
编写步骤:
1.导入jar包。
2.页面上引入标签库
使用taglib指令引入。
<%@ taglib prefix="" uri="" %>
prefix:前缀,任意指定,但是一般有约定俗成的表示法。
3.在页面中,用前缀使用标签
常用标签
核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
uri要使用带jsp路径的这一个
if标签
test:接收boolean值,用于判断条件,如果满足才会输出标签内部的内容。
注意:
没有else标签
test中的el表达式外部不要添加空格!!!
foreach标签
普通for循环
属性:
begin:开始值
end:结束值
var:临时变量
step:步长,可以为负数
varStatus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
增强for循环 for(String s : list)
items:容器对象
var:容器中元素的临时变量
varStatus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
for循环中产生的值都存储在page域中。
el&jstl
最新推荐文章于 2020-10-17 18:54:10 发布