欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jsp学习笔记---内置对象

程序员文章站 2022-07-03 20:07:55
...

1、 Jsp的内置对象

什么是内置对象?
在jsp开发中,会频繁使用到一些对象,如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可!,这些创建好的对象就叫内置对象!!!!

八大内置对象

       类型                        内置对象             
HttpServletRequest                request   
HttpServletResponse               response  
ServletConfig                     config   
ServletContext                    application 
HttpSession                       session       
Throwable                         exception       
Object(this)                      page  
JspWriter                         out         
PageContext                       pageContext

pageContext对象
pageContext对象的类型是PageContext,叫jsp的上下文对象,可以获取其他八个内置对象

<%//1)可以通过pageContext对象获取其他8个内置对象
        response.getWriter().write("out对象是否相等:"+(out==pageContext.getOut())+"</br>");
        out.write("request对象是否相等:"+(request==pageContext.getRequest())+"</br>");
        out.write("response对象是否相等:"+(response==pageContext.getResponse())+"</br>");
        out.write("config对象是否相等:"+(config==pageContext.getServletConfig())+"</br>");
        out.write("session对象是否相等:"+(session==pageContext.getSession())+"</br>");
    %>

2、jsp域对象

作用: 保存数据和获取数据,用于共享数据
域对象方法:

                setAttribute("name",Object) 保存数据
                getAttribute("name")  获取数据
                removeAttribute("name") 清除数据

域对象作用范围:

                page域: 只能在当前jsp页面中使用(当前页面)
                request域: 只能在同一个请求中使用(转发)
                session域: 只能在同一个会话(session对象)中使用(私有的)
                context域: 只能在同一个web应用中使用。(全局的)

ServletContext ———————————-context域

HttpServletRequet —————————– request域

HttpSession ————————————–session域 –Servlet学习的

PageContext————————————–page域 –jsp学习的

域范围常量:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext.SESSION_SCOPE   

PageContext.APPLICATION_SCOPE
<%--
        2)pageContext作为域对象使用
                2.1 可以往不同域对象中存取数据
      --%>
    <%
        pageContext.setAttribute("message","默认");
        pageContext.setAttribute("message","request信息",PageContext.REQUEST_SCOPE);
        pageContext.setAttribute("message","session's messsage",PageContext.SESSION_SCOPE);//保存到sessio域中
        pageContext.setAttribute("message","application's messsage",PageContext.APPLICATION_SCOPE);//保存到context域中
        //request.setAttribute("message","request's message"); 等价于上面的代码
    %>
    <%
        String str=(String)pageContext.getAttribute("message");
        out.write(str);
    %>
        <%--
              原则: 
            1)在哪个域中保存数据,就必须从哪个域取出数据!!!
         --%>
        <%=pageContext.getAttribute("message",PageContext.PAGE_SCOPE) %><br/>
        <%=pageContext.getAttribute("message",PageContext.REQUEST_SCOPE) %><br/>
        <%=pageContext.getAttribute("message",PageContext.SESSION_SCOPE) %><br/>
        <%=pageContext.getAttribute("message",PageContext.APPLICATION_SCOPE) %><br/>

自动在四个域中搜索数据

<%--
        findAttribute(): 在四个域自动搜索数据
            顺序: page域 -> request域  -> session域 -> context域

     --%>
    <%--  <%=pageContext.findAttribute("message") %> --%> 

Servlet技术: 开发动态资源。是一个java类,最擅长写java代码

jsp技术: 开发动态资源。通过java代码最擅长输出html代码。

servlet:

                    1)接收参数
                    2)处理业务逻辑
                    3)把结果保存到域对象中
                    4)跳转到jsp页面

Jsp:

                    1)从域对象取出数据
                    2)把数据显示到浏览器
            servlet的数据    ->   jsp页面
            List<Contact>    使用域对象 共享数据