一、JSP中的3496
(1)三大指令 : page include taglib
(2)四大域对象 :pageContext request session application
(3)九大内置对象 :out request response session application config page pageContext exception
exception:异常处理
errorPage = "指定异常处理页面"
isErrorPage = "true"① 错误界面——>通过 errorPage = "" 指定异常处理的界面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp" %> <!-- errorPage="" 指定异常处理的页面 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% //JSP页面中 出现运行时异常的现象可以通过exception解决 out.println(10/0); %> </body> </html>
② 在异常处理界面通过 isErrorPage = "true" 表示此页面用于处理异常
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="true"%> <!--isELIgnored="true" 当前页面处理异常 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <hr> <h2>当前网页已丢失,请稍后查看!!!</h2> <p> <a href="index.jsp">返回主页</a> </p> <hr> </body> </html>
③ 最后主界面显示(此页面为普通页面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2>欢迎回到首页呐!!!</h2> </body> </html>
(4)六大动作标签: include forward param useBean setxxx getxxx
二、四大域对象
(1)域对象的概述:① 作用: 临时的存储有效的数据,四个作用域保存的值② 范围不同,存储的方式是一样
③ 都是通过setAttribute和getAttribute
④ 域对象的范围:pageContext<request<session<application(2)pageContext: 只在当前JSP页面中有效,其它页面访问无效
request: 只在同一个请求当中访问有效,其它无效
session: 只在同一个会话(打开浏览器与关闭浏览器的过程)中访问有效,其它无效(浏览器关闭或者session失效)
application:只要服务器没有关闭,期间访问都有效。显示区别:
① 在本界面获取定义值的值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>四大域对象 (本页面)</h1> <% pageContext.setAttribute("糯米团子1", "糯糯糯糯"); request.setAttribute("糯米团子2", "米米米米"); session.setAttribute("糯米团子3", "团团团团"); application.setAttribute("糯米团子4", "子子子子"); %> <hr> <h3>本页面定义不同属性的键(通过jsp表达式的方式进行输出作用域保存的值)</h3> <%=pageContext.getAttribute("糯米团子1")%> <br> <%=request.getAttribute("糯米团子2")%> <br> <%=session.getAttribute("糯米团子3")%> <br> <%=application.getAttribute("糯米团子4")%> <br> <hr> <!-- 超链接跳转 属于重定向 --> <a href="demo3.jsp">跳转</a> <!-- 转发获取 --> <%-- <jsp:forward page="demo4.jsp"></jsp:forward> --%> <hr> <% pageContext.setAttribute("糯米团子", "糯糯糯糯"); request.setAttribute("糯米团子", "米米米米"); session.setAttribute("糯米团子", "团团团团"); application.setAttribute("糯米团子", "子子子子"); %> <hr> <h3>本页面定义相同属性的键(通过jsp表达式的方式进行输出作用域保存的值)</h3> <%=pageContext.getAttribute("糯米团子")%> <br> <%=request.getAttribute("糯米团子")%> <br> <%=session.getAttribute("糯米团子")%> <br> <%=application.getAttribute("糯米团子")%> <br> <hr> <a href="demo3.jsp">跳转</a> <!-- 转发获取 --> <%-- <jsp:forward page="demo4.jsp"></jsp:forward> --%> </body> </html>
显示结果:
② 通过超链接获取定义值的值
<!-- 超链接跳转 属于重定向 --> <a href="demo3.jsp">跳转</a>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <hr> <h2>第三方页面(超链接)</h2> <hr> <h3>不同属性的键</h3> <%=pageContext.getAttribute("糯米团子1")%> <br> <%=request.getAttribute("糯米团子2")%> <br> <%=session.getAttribute("糯米团子3")%> <br> <%=application.getAttribute("糯米团子4")%> <br> <hr> <h3>相同属性的键</h3> <%=pageContext.getAttribute("糯米团子")%> <br> <%=request.getAttribute("糯米团子")%> <br> <%=session.getAttribute("糯米团子")%> <br> <%=application.getAttribute("糯米团子")%> <br>
结果显示:
③ 通过转发获取定义值的值
<!-- 转发获取 --> <jsp:forward page="demo4.jsp"></jsp:forward>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <hr> <h2>第三方页面(转发)</h2> <hr> <h3>不同属性的键</h3> <%=pageContext.getAttribute("糯米团子1")%> <br> <%=request.getAttribute("糯米团子2")%> <br> <%=session.getAttribute("糯米团子3")%> <br> <%=application.getAttribute("糯米团子4")%> <br> <hr> <h3>相同属性的键</h3> <%=pageContext.getAttribute("糯米团子")%> <br> <%=request.getAttribute("糯米团子")%> <br> <%=session.getAttribute("糯米团子")%> <br> <%=application.getAttribute("糯米团子")%> <br>
结果显示:
三、EL表达式
属于JSP的一个基础语法,作用:让数据调用的更简单。
基本语法:${域标志.数据名.属性名}
(1)EL表达式中四个隐式域对象
pageScope requestScope sessionScope applicationScope
注:利用EL表达式获取同一个键的值时,先获取最小作用域的值,以此类推
<hr> <h2>本界面中</h2> <h3>EL表达式获取域对象所保存的值</h3> <!-- 通过EL表达式的方式进行输出域对象所保存的值 --> <%=pageContext.getAttribute("糯米团子1") %>————${糯米团子1 } <br/> <hr> <h3>通过EL表达式获取同一个键不同的值</h3> ${糯米团子} <hr> <h3>通过EL表达式获取四个域对象分别保存的值</h3> <h3>EL表达式中提供了四个隐式域对象 </h3> ${pageScope.糯米团子 } <br/> ${requestScope.糯米团子 } <br/> ${sessionScope.糯米团子 } <br/> ${applicationScope.糯米团子}
显示:
(2)常用的所有运算符EL表达式中都有
例如:== eq > < >= 集合 ……
empty 判断EL表达式中的变量是否存在
简单使用:
<h2>常用的所有运算符EL表达式中都有</h2> ${123 } <br> ${"123" } <br> ${1==2 } <br> ${"nuomi"=="糯米" } <br> ${"nuomi" eq "nuomi" } <br> ${1>2 } <br> <% List<String> list = new ArrayList<String>(); list.add("nuonuomi"); list.add("nuomi"); session.setAttribute("list",list); %> ${list } <hr/> <!-- 保存实体 --> <% Student stu = new Student("诺糯米","女"); session.setAttribute("stu", stu); %> ${sessionScope.stu.username } <!-- empty 判断EL表达式中的变量是否存在 --> ${empty list }
结果显示:
四、JSTL库
(1)JSTL库是由JSP内部提供的一套标签库,纯JSP页面中不允许Java代码 需要使用JSTL提供的标签去替代。
(2)JSTL库使用步骤:
(①)导入依赖库 lib
(②)在指定的页面中通过taglib指令来引入具体的标签库依赖文件2.1 prefix="" 为标签库命令
2.2 uri="" 引入标签库的文件
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
(3)JSTL库中常用的标签
① out标签
简述:1.1 value 为存储的值
1.2 default 当value值访问的结果不存在时 会输出默认结果
测试:
<hr> <h2>通过JSTL库中的out标签进行值的输出</h2> <c:out value="${username }"></c:out> <br> <c:out value="${username1 }" default="nihao"></c:out>
② set标签
简述:2.1 var 存储的变量名
2.2 value 存储的值
2.3 scope 作用域(pageContext request session application)
使用:
<h2>通过JSTL库中的set标签进行对值的设置</h2> <c:set var="uname" value="糯米诺" scope="session"></c:set> ${uname } <c:out value="${uname }"></c:out>
③ if标签
实现对数据进行有效的判断
使用:
<hr> <c:if test="${1<12 }"> <c:out value="满足满足满足"></c:out> </c:if>
④ remove标签
移除
使用:
<c:set var="aiya" value="duoduoduoduo"></c:set> 移除前: <c:out value="${aiya }"></c:out> <!-- 移除 --> <hr/> <c:remove var="aiya" /> 移除后:<c:out value="${aiya }"></c:out>
⑤ foreach循环标签
5.1 sb 变量
5.2 begin 起始值
5.3 end 终值
5.4 step 每次增长的值
5.5 varStatus 获取数据对应的行号使用:
<hr> <c:forEach var="ninini" begin="1" end="100" step="2" varStatus="demo" > ${ninini }————${demo.index }————${demo.count } <br/> </c:forEach> <br/> <% List<Student> myList = new ArrayList<Student>(); myList.add(new Student("nuomiya1","女")); myList.add(new Student("nuomiya2","女")); myList.add(new Student("nuomiya3","女")); myList.add(new Student("nuomiya4","女")); myList.add(new Student("nuomiya5","女")); session.setAttribute("myList", myList); %> <c:forEach items="${myList }" var="stu"> ${stu.username } ${stu.sex } <br> </c:forEach>