1. JSP为什么会出现
1.servlet展示信息的不方便,引入了JSP。
2.JSP本质上也是一个servlet!!!!!!
3.JSP就是在HTML页面中嵌入了java代码。
1.1JSP中如何嵌套java代码
小脚本(<% java代码%>)
声明标签 <%!变量或者方法声明%>
表达式标签 <%= 表达式%> 在页面上显示的效果
程序代码标签 <%java代码%> 页面上动态展示内容
1.2JSP的内置对象
JSP中一共预先定义了9个这样的对象,分别为:
- request、response、
- session:由服务器自动创建的与用户请求相关的对象
- application:与session对象相比,application对象生命周期更长,类似于系统的“全局变量” ServletContext
- out、:用于在Web浏览器内输出信息
- pagecontext:取得任何范围的参数
- config:取得服务器的配置信息
- page:类似于Java编程中的 this 指针
- excep:显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用
JSP的指令
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。
语法:<%@ directive attribute=“value” %>
directive:指令名称 attribute 属性名 value:属性值
2.EL表达式
目的:在JSP中使用EL表达式,可以简化对象和变量的访问是EL表达式
2.1EL表达式语法
${需要展示信息的名字}
注意:
当表达式没有指定变量或者对象的范围时,
那么容器会依次从pageContext—>request—>session—>application中查找该变量或对象,我们可以通过隐含 对象获得指定作用域的值:
pageScope对象,用于获取当前页面的属性值
requestScope对象,用于获取请求范围的属性值
sessionScope对象,用于获取会话范围的属性值
applicationScope对象,用于获取程序范围的属性值
2.2 EL中基础操作符
示例:
单个变量:${a+10}<br>
单个变量:${s}<br>
单个对象:${key.属性名}
//对象类型
Users u=new Users();
u.setName("王老五");
u.setPass("abc");
pageContext.setAttribute("u1",u);
user.name=${u1.name}
user.pass=${u1.pass}
// list集合对象:
List list=new ArrayList();
list.add("刘能");
list.add(30);
list.add(u);
pageContext.setAttribute("list2",list);
list1=${list2[0]}<br/>
list2=${list2[1]}<br/>
list3=${list2[2].pass}<br/>
// map集合:
k1=${map1.k1}<br>
k2=${map1.k2.username}--- ${map1.k2.password}
判断变量是否有值或是否存在:${empty key值}
List list2=new ArrayList();
list2.add("aa");
request.setAttribute("list222",list2);
判断list中是否有数据:${empty list222}
3.JSTL
(1) 什么是JSTL
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。
(2) JSTL的作用和语法格式,作用:简化jsp页面编写代码
- 下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/下。
- 在JSP页面中引入<%@ taglib prefix=”页面使用的名称” uri=”功能范围的路径”%>
(3) 核心标签
①核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
② 核心标签的分类
表达式操作 out、set、remove、catch
流程控制 if、choose、when、otherwise
迭代操作 forEach、forTokens
URL操作 import、param、url、redirect