《Day14》JSP技术下

本文详细介绍了JSP的九大内置对象,包括application、request、response等,解析了它们的作用和用法。同时,讲解了JSP的四大作用域对象及其优先级。此外,还探讨了EL表达式、JSP动作标签如<jsp:include>和<jsp:forward>的使用,并简述了JSTL标准标签库的核心功能和应用场景。
摘要由CSDN通过智能技术生成

第十四讲JSP技术(下)

一、JSP九大内置对象

(一)内置对象简介

​ JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。在JSP页面中,可以通过存取JSP内置对象实现与JSP页面和Servlet环境的相互访问。每个内部对象均有对应所属的ServletAPI类型。

在这里插入图片描述

在这里插入图片描述

在java’文件中声明好的类型

在这里插入图片描述

(二)内置对象详解

1、application:上下文对象 ,服务器启动,自动创建,是jsp的 的作用域对象,服务器关闭,对象销毁

  <%
   application.setAttribute("application", "application");
  %>
 
 <%=application.getAttribute("application") %>

2、request:请求对象,浏览器第一次发送请求的时候,服务器创建,请求结束,对象销毁

3、response:响应对象,浏览器第一次发送请求的时候,服务器创建,响应结束,对象销毁

~~~java

response.setContentType(“text/html;charset=utf-8”);
response.sendRedirect(“url”);
response.getWriter().print(“abc”);
~~~

4、config:配置对象,通过这个对象,可以获取其他8个对象,可以设置初始化的数据,以便于获取

5、page:当前页面对象,就是this对象

6、session:会话对象,浏览器第一次发送请求的时候,服务器创建,保存在服务器端,默认的会话时间是30分钟,浏览器的一次开关

7、exception:异常对象 需要设置 page指令中 isErrorPage=“true”

在这里插入图片描述

8、out :输出对象,PrintWriter out = response.getWriter() out.print();

9、pageContext:最小的作用域范围对象,只在当前页面有效,

项目根路径模板
 <%
      //项目根路径模板
      String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
      application.setAttribute("path", path);
    %>

<img src="${path }/img/1.jpg">

二、JSP四大作用域对象

​ pageContext:当前页面作用域对象

request:请求对象 一次请求之间

session:会话对象,浏览器关闭之间或者30分钟有效期

​ application:上下文对象 服务器开关之间

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
      pageContext.setAttribute("pageContext", "pageContext");
      request.setAttribute("request", "request");
      session.setAttribute("session", "session");
      application.setAttribute("application", "application");
    %>
   <%--  pageContext:<%=pageContext.getAttribute("pageContext") %> --%> <br>
    pageContext:${
   pageScope.pageContext}<br>
    request:${
   request }<br>
    session:${
   session }<br>
    application:${
   application }
      
</body>
</html>

三、EL进阶

当域对象中存储内容的key值相同时,优先取作用域最小的值。

如果要获取每个值:前面加 域对象Scope.key

	<%
      pageContext.setAttribute("a", "pageContext");
      request.setAttribute("a", "request");
      session.setAttribute("a", "session");
      application.setAttribute("a", "application");
    %>
    
    ${pageScope.a } <br>
    ${requestScope.a }<br>
    ${sessionScope.a }<br>
    ${applicationScope.a }<br>

四、JSP动作标签

语法:

<jsp:动作标签名 属性=”值”></jsp:动作标签名>

  1. 转发:<jsp:forward page=""></jsp:forward>

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    
    <%
    	/* 请求转发只能转发到当前项目中 */
        // request.getRequestDispatcher("http://www.baidu.com").forward(request, response);
       //重定向可以重定向到其他项目,以及其他服务器
       //response.sendRedirect("http://www.baidu.com");
       response.sendRedirect("http://127.0.0.1:9527/SMS-WEB/login.jsp");
    %>
    </head>
    <body>
      <%--  <jsp:forward page="el.jsp"></jsp:forward> --%>
      <%--  <jsp:forward page="../http://www.baidu.com"></jsp:forward> --%>
    </body>
    </html>
    
  2. 包含:<jsp:include page=""></jsp:include>

	<!--  动态包含  -->
    <jsp:include page="top.jsp"></jsp:include>
    	我是中间页面
    <jsp:include page="bottom.jsp"></jsp:include> 
    
    
    <!--静态包含  -->
    <%@ include file="top.jsp" %>
   	 我是中间页面
   	<%@ include file="bottom.jsp" %> 

​ 静态包含(指令) 动态包含(动作标签)【面试题】

静态包含:会将多个页面拼接为1个页面,只会生成一个java文件,多个页面中不能有同名变量

动态包含:会以调用方法的形式,包含其他页面,生成多个java文件,多个页面中可以有同名变量

案例:可以包含项目的根路径模板

​ path.jsp

~~~jsp

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here <% //项目根路径模板 String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath(); application.setAttribute("path", path); %> ~~~

其他页面 写在页面的最上方

 <%@ include file="path.jsp" %>

五、JSTL标准标签库

1 jstl简介

​ JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

​ 作用:使用jstl的标签形式代替了jsp页面上的java代码

2 分类:
  1. 核心标签库

  2. 格式化标签库

  3. SQL标签库

  4. 函数标签库

使用步骤:

1.下载jar包并导入到项目中:

在这里插入图片描述

2.使用taglib指令引用标签库

在这里插入图片描述

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

3.使用

一.核心标签库

  1. 通用标签:set remove out

      <%
       	   request.setAttribute("name", "admin");
       	   request.getAttribute("name");
       	   request.removeAttribute("name");
       	%>
       	<%--  <c:set var="name" value="admin" scope="session" ></c:set> --%>
        <c:set var="name" value="admin" scope="request" ></c:set>
        <c:out value="${name }"></c:out>
        <c:remove var="name"/>
    

    2.分支判断if choose


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿福真的不想掉头发

大爷?赏点?

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

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

打赏作者

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

抵扣说明:

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

余额充值