JSP+四大域对象+EL表达式+JSTL的使用
JSP语法
- JSP注释
<%-- --%>
<%-- 这是JSP注释 --%>
快捷键command+/
- JSP代码块
<% %>
<%
System.out.println(“hello”); //输出在控制台上
out.println(“hello jsp”); //输出在页面
%>
- JSP表达式
<%= %>
jsp表达式 <%=“hello”%> 相当于等于out.println(“hello”);
- JSP声明
<%! %>
ps:一般都是变量或方法
jsp声明 [变量或方法] <%!String s = “abc” %>
不加! 代表的是局部变量
加! 代表的是成员变量
四大域对象
域对象名称|作用范围|级别|使用状况
- PageContext |页面范围|当前页面可用|很少使用;JSP
- Request|请求范围|请求或请求转发|请求转发之后,再次转发无效
- HttpSession|会话范围|多次数据共享|不同客户端不能数据共享
- ServletContext|应用范围|整个应用可用|尽量少用
八大隐式对象
斜体的对象可以操作四大域对象的数据
隐式对象 | 作用 |
---|---|
pageContext | 获取所有域对象和隐式对象 |
applicationScope | 操作应用域对象数据 |
sessionScope | 操作会话域对象数据 |
requestScope | 操作请求域对象数据 |
pageScope | 操作页面域对象数据 |
header | 获取请求头数据 |
headerValues | 获取多个请求头数据 |
param | 获取请求参数数据 |
paramValues | 获取多个请求参数数据 |
initParam | 获取全局配置参数数据 |
cookie | 获取Cookie对象 |
//操作四大域对象数据
<% requerst.setAttribute("name","zhangsan") %>
${requestScope.name}
EL表达式
语法:${表达式内容}
EL表达式都可以用四大域对象和八大隐式对象获取数据
- 获取基本数据类型
<% pageContext.setAttribute("a",10); %>
${num}
- 获取自定义对象
<%
Student stu = new Student("张三",23);
request.setAttribute("stu",stu);
%>
${stu} //显示的地址值
${stu.name} //获取stu对象的name值
${stu.age}
- 获取数组类型
<%
String[] arr = {"zhangsan","lisi"};
session.setAttribute("arr",arr);
%>
${arr} //显示的地址值
${arr[0]} //获取数组arr的0索引的值
${arr[1]}
- 获取List集合
<%
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
application.setAttribute("list",list);
%>
${list} //显示所有元素,原理是重写了toString方法
${list[0]} //获取0索引的值
- 获取Map集合
<%
HashMap<String,Student> map = new HashMap<>();
map.put("stu1",new Student("张三",20));
map.put("stu2",new Student("李四",21));
pageContext.setAttribute("map",map);
%>
${map} //显示地址值
${map.stu1.name} //获取stu1对象的name值
${map.stu1.age} //获取stu1对象的age值
注意点:
1)EL表达式没有空指针异常;
2)EL表达式没有索引越界异常;
3)EL表达式没有字符串拼接;
4)EL表达式运算符和Java相同;
JSTL: JSP标准标签库
- 导入jar包
- 导入JSTL标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--流程控制--%>
<%--获取数据 使用core库的if语句 对成绩进行判断--%>
${pageContext.setAttribute("score","A")}
<c:if test=" ${score eq 'A'}">
优秀
</c:if>
<%--多条件判断--%>
<c:choose>
<c:when test="${score eq 'A'}">优秀</c:when>
<c:when test="${score eq 'B'}">良好</c:when>
<c:when test="${score eq 'C'}">及格</c:when>
<c:when test="${score eq 'D'}">不及格</c:when>
<c:otherwise>请输入正确的成绩</c:otherwise>
</c:choose>
<%--循环的使用--%>
<%
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
pageContext.setAttribute("list",list);
%>
<%--遍历集合 遍历出来的值赋给新的数组--%>
<c:forEach items="${list}" var="arr">
${arr}
</c:forEach>