JSP---JSP中4个容器-pageContext使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: JSP---JSP中4个容器-pageContext使用

这里重点只讲pageContext容器的用法哦。

因为另外的3个容器(request,session,application)在前面的servlet中已经演示过很多遍了



容器                 作用域
pageContex         仅仅是当前页面,无法传参
request            当前页面,可以传参
session            同一个JSESSIONID共用一个
application       只要服务器还没重新启动,就一直存在


详细介绍:


pageContext – 它的作用范围仅为当前JSP页面。


request – 对于用户的一次请求有效,请求/响应结束即消失。

更多细节:

一个请求通过Servlet访问资源,在Servlet中将数据封装到request中,这在单位中是通常的做法。必须记住、必须记住、必须记住。

然后将请求转发到JSP页面,在从JSP页面上将封装到request中的信息取出。MVC

注意我上面说的是转发,而不是重定向。

对于用户的一次请求,并且请求完成后,数据将不再使用可使用request进行封装,以节省内存。


session – 对于用户的一次会话有效,通常我们用此域来封装用户登录的信息。也必须记住。


application – 在整个Web项目的生命周期内有效,不建议使用或谨慎使用。实际项目中根本不用。

开发原则 – 能用小的域尽量使用小的域。

setAttribute()和getAttribute:

第一种:

index.jsP;

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <h2>演示一下JSP中的4个容器---重点是pageContext,因为之前3个在servlet中学了</h2>
    <%
        //从小到大的4个容器
        pageContext.setAttribute("name", "page-jack");
        request.setAttribute("name", "request-jack");
        session.setAttribute("name", "session-jack");
        application.setAttribute("name", "application-jack");
    %>
    OKOK-------<br/>
    <%
        //读取4个容器中的name属性值
        out.println(pageContext.getAttribute("name"));
        out.println("<br/>");
        out.println(request.getAttribute("name"));
        out.println("<br/>");
        out.println(session.getAttribute("name"));
        out.println("<br/>");
        out.println(application.getAttribute("name"));
    %>
  </body>
</html>


演示结果:

image.png

演示用pageContext设置4个容器的属性:

index.jsp:

<%
        //从小到大的4个容器
        //这一段的功能等价于那4个容器设置属性,这里全部通过pageContext.setAttribute()实现
        pageContext.setAttribute("name", "PAGE-Jack",PageContext.PAGE_SCOPE);
        pageContext.setAttribute("name", "REQUEST-Jack",PageContext.REQUEST_SCOPE);
        pageContext.setAttribute("name", "SESSION-Jack",PageContext.SESSION_SCOPE);
        pageContext.setAttribute("name", "APPLICATION-Jack",PageContext.APPLICATION_SCOPE);
    %>
    <br/>
    <%
    //这一段的功能等价于之前用4个容器分别读取属性值,这里全部通过pageContext.getAttribute()实现
        out.println( pageContext.getAttribute("name", PageContext.PAGE_SCOPE) );
        out.println("<br/>");
        out.println( pageContext.getAttribute("name", PageContext.REQUEST_SCOPE) );
        out.println("<br/>");
        out.println( pageContext.getAttribute("name", PageContext.SESSION_SCOPE) );
        out.println("<br/>");
        out.println( pageContext.getAttribute("name", PageContext.APPLICATION_SCOPE) );
    %>

演示结果:

image.png



演示pageContext.findAttribute():


pageContext.findAttribute()方法会依次从pageContext、request、session和application中(页面、请求、会话、app)查找对应的属性,找到一个,后面的就不会再去找了。如果没有就返回null.


<%
        out.println( pageContext.findAttribute("name") );
    %>


演示结果:

image.png



顺便提一下ContentType与pageEncoding的区别:


pageEncoding是jsp文件本身的编码 ,把jsp文件编译成java的时候给编译器用的 。

contentType的charset是指服务器发送给客户端时的内容编码 ,是浏览器解析网页的时候用的

如果两个任意设置了其中一个,另一个即会与此保持一致。但,contentType除可以设置charset外,还可以设置MIME类型,如text/html


目录
相关文章
|
Java 容器 前端开发
JSP---JSP中4个容器-pageContext使用
这里重点只讲pageContext容器的用法哦。 因为另外的3个容器(request,session,application)在前面的servlet中已经演示过很多遍了 容器 作用域 pageContex 仅仅是当前页面,无法传参 request 当前页面,可以传参 session 同一个JSESSIONID共用一个 application 只要服务器还没重新启动,就一直存在 详细介绍: pageContext – 它的作用范围仅为当前JSP页面。
1025 0
|
11天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
49 2
|
21天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
17天前
|
关系型数据库 MySQL API
|
1天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
20 5
|
5天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
6天前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
23 1
|
8天前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
8天前
|
JavaScript 开发者 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
8天前
|
安全 Docker 微服务
深入理解Docker容器技术:从基础到实践
深入理解Docker容器技术:从基础到实践