JSP---JSP中4个容器-pageContext使用-阿里云开发者社区

开发者社区> 谙忆> 正文

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

简介: 这里重点只讲pageContext容器的用法哦。 因为另外的3个容器(request,session,application)在前面的servlet中已经演示过很多遍了 容器 作用域 pageContex 仅仅是当前页面,无法传参 request 当前页面,可以传参 session 同一个JSESSIONID共用一个 application 只要服务器还没重新启动,就一直存在 详细介绍: pageContext – 它的作用范围仅为当前JSP页面。
+关注继续查看

这里重点只讲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>

演示结果:

演示用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) );
    %>

演示结果:

演示pageContext.findAttribute():

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

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

演示结果:

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

pageEncoding是jsp文件本身的编码 ,把jsp文件编译成java的时候给编译器用的 。
contentType的charset是指服务器发送给客户端时的内容编码 ,是浏览器解析网页的时候用的
如果两个任意设置了其中一个,另一个即会与此保持一致。但,contentType除可以设置charset外,还可以设置MIME类型,如text/html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Zuul整合Swagger,使用ZuulFilter解决下游服务context-path
问题起因:使用Zuul网关服务,需要整合下游系统的swagger,但是下游服务存在context-path配置,无法正确跳转,最后使用ZuulFilter解决。 1.Zuul整合下游swagger 首先介绍一下Zuul如何整合下游服务swagger,很好理解,就是通过Zuul的swagger地址,实现将下游服务的swagger都放入同一个页面内,流转图如下: 1.
340 0
蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器
Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。
672 0
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 上一篇文章中一直围绕着CNN处理图像数据进行讲解,而CNN除了处理图像数据之外,还适用于文本分类。
1460 0
使用@ContextConfiguration注解后,提示找不到配置文件
使用@ContextConfiguration注解后,提示找不到配置文件
78 0
JSP---JSP中4个容器-pageContext使用
这里重点只讲pageContext容器的用法哦。 因为另外的3个容器(request,session,application)在前面的servlet中已经演示过很多遍了 容器 作用域 pageContex 仅仅是当前页面,无法传参 request 当前页面,可以传参 session 同一个JSESSIONID共用一个 application 只要服务器还没重新启动,就一直存在 详细介绍: pageContext – 它的作用范围仅为当前JSP页面。
765 0
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(下)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 在上一篇文章中,已经介绍了Keras对文本数据进行预处理的一般步骤。
1769 0
SSM框架之关于使用JSP作为视图展示问题解决方案
JSP作为视图层展示数据,已经有很长一段时间了,不管是在校学习还是企业工作,总会或多或少接触这个。特别是对于一些传统中小型或者一些几年前的企业而言,有很多使用JSP作为视图展示层。 JSP本质是就是Servlet,Servlet可以说也是JSP。
1549 0
+关注
谙忆
GitHub: https://github.com/chenhaoxiang
714
文章
40
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载