其他分享
首页 > 其他分享> > JSP02----jsp的内置对象(四个域对象、out和request对象)简介

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

作者:互联网

1、jsp的九大内置对象

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

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

2、四个域对象的作用范围

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

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        <%
            pageContext.setAttribute("key","pageContext对象!!!");
            request.setAttribute("key","request对象!!!");
            session.setAttribute("key","session对象!!!");
            application.setAttribute("key","application对象!!!");
        %>
            pageContext对象是否还在:<%=pageContext.getAttribute("key")%><br/>
            request对象是否还在:<%=request.getAttribute("key")%><br/>
            session对象是否还在:<%=session.getAttribute("key")%><br/>
            application对象是否还在:<%=application.getAttribute("key")%><br/>
</body>
</html>

在这里插入图片描述
第2次,请求转发(一次请求,但是jsp页面访问了两次),pageContext对象销毁

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
        <%
            pageContext.setAttribute("key","pageContext对象!!!");
            request.setAttribute("key","request对象!!!");
            session.setAttribute("key","session对象!!!");
            application.setAttribute("key","application对象!!!");
        %>
            pageContext对象是否还在:<%=pageContext.getAttribute("key")%><br/>
            request对象是否还在:<%=request.getAttribute("key")%><br/>
            session对象是否还在:<%=session.getAttribute("key")%><br/>
            application对象是否还在:<%=application.getAttribute("key")%><br/>

        <% request.getRequestDispatcher("/jspdemo002.jsp").forward(request,response);%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

        <h1>jspdemo002界面</h1>
        pageContext对象是否还在:<%=pageContext.getAttribute("key")%><br/>
        request对象是否还在:<%=request.getAttribute("key")%><br/>
        session对象是否还在:<%=session.getAttribute("key")%><br/>
        application对象是否还在:<%=application.getAttribute("key")%><br/>
</body>
</html>

在这里插入图片描述
第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" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

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

        <% out.write("这是out输出1!!!"); %><br/>
        <% out.write("这是out输出2!!!"); %><br/>

</body>
</html>

在这里插入图片描述
但是如果把out输出换到response之前,依旧是先输出response对象响应的。

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

        <% out.write("这是out输出1!!!"); %><br/>
        <% out.write("这是out输出2!!!"); %><br/>

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

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

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

        <% out.write("这是out输出1!!!"); %><br/>
        <% out.write("这是out输出2!!!"); %><br
            <% out.flush();%>
        <% out.write("这是out输出3!!!"); %><br/>
        <% out.write("这是out输出4!!!"); %><br/>

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

在这里插入图片描述

标签:对象,request,JSP02,session,jsp,pageContext,out
来源: https://blog.csdn.net/chenxingxingxing/article/details/123185969