JavaWEB快速入门之域对象&EL表达式&JSTL库

本文详细介绍了JSP中的核心概念,包括三大指令(page, include, taglib)、四大域对象(pageContext, request, session, application)以及九大内置对象。同时,讲解了如何处理异常,特别是通过errorPage和isErrorPage属性。此外,还探讨了六大动作标签的功能。在四大域对象部分,展示了它们的作用域和在不同场景下的数据获取方式。接着,深入讲解了EL表达式的使用,包括其基本语法和隐式域对象。最后,简述了JSTL库的引入、常用标签(如out, set, if, remove, forEach)及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ning_ning_03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值