栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSP02----jsp的内置对象(四个域对象、out和request对象)简介

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSP02----jsp的内置对象(四个域对象、out和request对象)简介

1、jsp的九大内置对象

https://www.cnblogs.com/liuyangv/p/8059848.html

----------------------------------四个域对象--------------------------------------

pageContext对象:jsp上下文对象。request对象:请求对象,接受HTTP协议传送到客户端的数据。session对象:会话对象,服务器为每个用户生成一个session对象,保存用户信息。application对象:ServletContext具体实现,比session对象范围更广,服务器不关闭就一直存在。
--------------------------两个输出数据的对象-------------------------response对象:响应对象,将jsp处理过的数据传到客户端。out对象:输出流对象,相当于servlet程序中的writer.write(),用于返回数据到客户端。
---------------------------------其它对象-------------------------------page对象:page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。config对象:ServletConfig对象,用于取得服务器的配置信息。exception对象:显示异常信息,只有在包含 page指令isErrorPage=“true” 的页面中才可以被使用。 2、四个域对象的作用范围

pageContext对象:当前jsp页面有效request对象:一次请求有效session对象:一次会话有效(打开浏览器到关闭浏览器)application对象:整个工程内有效(不重启服务器会一直存在)

第1次访问jsp页面(四个对象都存在)

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


    Title


        <%
            pageContext.setAttribute("key","pageContext对象!!!");
            request.setAttribute("key","request对象!!!");
            session.setAttribute("key","session对象!!!");
            application.setAttribute("key","application对象!!!");
        %>
            pageContext对象是否还在:<%=pageContext.getAttribute("key")%>
request对象是否还在:<%=request.getAttribute("key")%>
session对象是否还在:<%=session.getAttribute("key")%>
application对象是否还在:<%=application.getAttribute("key")%>


第2次,请求转发(一次请求,但是jsp页面访问了两次),pageContext对象销毁

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


    Title


        <%
            pageContext.setAttribute("key","pageContext对象!!!");
            request.setAttribute("key","request对象!!!");
            session.setAttribute("key","session对象!!!");
            application.setAttribute("key","application对象!!!");
        %>
            pageContext对象是否还在:<%=pageContext.getAttribute("key")%>
request对象是否还在:<%=request.getAttribute("key")%>
session对象是否还在:<%=session.getAttribute("key")%>
application对象是否还在:<%=application.getAttribute("key")%>
<% request.getRequestDispatcher("/jspdemo002.jsp").forward(request,response);%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title



        

jspdemo002界面

pageContext对象是否还在:<%=pageContext.getAttribute("key")%>
request对象是否还在:<%=request.getAttribute("key")%>
session对象是否还在:<%=session.getAttribute("key")%>
application对象是否还在:<%=application.getAttribute("key")%>


第3次,再次访问jspdemo002.jsp页面,pageContext对象、request对象都销毁

第4次,关闭浏览器重新访问,pageContext对象、request对象、session对象销毁

第5次,重启服务器再访问,全部对象都销毁

由上可见,四个域对象作用范围:
application>session>request>pageContext

3、两个输出数据的对象

response、和out对象都可以把数据响应到客户端,他们两个大致相同。

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


    Title



        <% response.getWriter().write("这是response对象输出1!!!
"); %> <% response.getWriter().write("这是response对象输出2!!!"); %>
<% out.write("这是out输出1!!!"); %>
<% out.write("这是out输出2!!!"); %>


但是如果把out输出换到response之前,依旧是先输出response对象响应的。

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


    Title



        <% out.write("这是out输出1!!!"); %>
<% out.write("这是out输出2!!!"); %>
<% response.getWriter().write("这是response对象输出1!!!
"); %> <% response.getWriter().write("这是response对象输出2!!!
"); %>


原因是每次jsp代码加载完成之后,会自动生成一个out.flush()方法。而out.write()需要在out.flush()方法之后,才放到response缓冲区,所以out对象响应的内容都会在response对象之后。但是如果在代码中间加入out.flush(),那在此之前的out对象数据会先加载到response缓冲区先被输出出来。

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


    Title



        <% out.write("这是out输出1!!!"); %>
<% out.write("这是out输出2!!!"); %>
<% out.write("这是out输出3!!!"); %>
<% out.write("这是out输出4!!!"); %>
<% response.getWriter().write("这是response对象输出1!!!
"); %> <% response.getWriter().write("这是response对象输出2!!!
"); %>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749191.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号