zoukankan      html  css  js  c++  java
  • JSP学习笔记

    时间:2016-11-17 13:46

    ——JSP入门


    1、什么是JSP
        JSP(Java Server Pages)是JavaWeb服务器端的动态资源,它与HTML页面的作用是相同的,用来显示数据和获取数据。

        JSP是:
            1)JSP运行在服务器端。
            2)JSP的全称是Java Server Pages
            3)JSP的基础是Servlet(相当于对Servlet进行包装,JSP翻译之后,会生成一个Servlet文件)
            4)JSP是综合技术
                JSP = html + css + java + jsp标签(语法)+ javascript
            5)JSP文件被修改时,不需要重启服务器。
            6)JSP如何访问:http://ip地址:8080/web应用名/jsp文件
            7)JSP是一种动态网页技术。

    2、为什么需要JSP
        程序员在开发过程中,发现Servlet做界面非常不方便。
        JSP+Java类(service、JavaBeans)+Servlet,就会构成MVC的开发模式。
        MVC模式是目前软件公司中通用的开发模式。

    3、JSP的作用
        Servlet:
            缺点:不适合设置HTML响应体,需要大量的print来输出页面标签。
            优点:动态资源,可以编程。

        HTML:
            缺点:HTML是静态页面,不能包含动态信息。
            优点:不用为输出HTML标签而发愁。

        JSP:
            优点:在原有HTML的基础上添加Java脚本,构成JSP页面。

    4、JSP和Servlet的分工
        JSP:
            作为请求发起页面:例如显示表格、超链接。
            作为请求结束页面:例如显示数据。
        Servlet:
            作为请求中处理数据的环节。

    5、JSP的组成
        JSP = HTML + Java脚本 + JSP标签(指令)
        JSP中无需创建即可使用的对象一共有9个,被称为9大内置对象,例如request对象、out对象。
        3种Java脚本:
            *   <% ... %>:Java代码片段(常用),用于定义0 ~ N条Java语句。
                (方法内可以写什么,这里就可以写什么)
                语句;

            *   <%= ...%>:Java表达式,用于输出一条表达式(或变量)的值。
                (response.getWriter().println(这里可以放什么,他就可以放什么))
                表达式

                *   <%! ... %>:声明,用来创建类的成员变量和成员方法(一般不用,但容易被考到)
                (类中可以放什么,它就可以放什么)
                声明

        案例:
            演示JSP中Java脚本的使用。
                1)获取表单数据
                2)把字符串转换成int类型
                3)进行加法运算得到结果
                4)将结果保存到request域中
                5)转发到result.jsp中

            演示JSP与Servlet的分工。

    6、JSP原理(理解)
        1)JSP其实是一种特殊的Servlet
            *   继承了org.apache.jasper.runtime.HttpJspBase(HttpJspBase间接实现了Servlet接口)
            *   当JSP页面第一次被访问时,服务器会把JSP翻译成Java文件(这个Java文件其实是一个Servlet类)
            *   然后再把java文件编译成.class
            *   然后创建该类对象
            *   最后调用它的service()方法
            *   第二次请求同一JSP时,直接调用service()方法,不再初始化对象。
        2)在Tomcat的work目录下可以找到JSP对应的.java源文件。
        3)查看JSP对应.java文件:
            *   java脚本
            *   html

    7、JSP注释
        <%--  --%>:当服务器把JSP编译成java文件时就已经忽略了注释部分,也就是.java文件中就不会保存注释部分了。
        <!-- <%=num %>-->:该表达式会执行,并且获取num的值,但是会被HTML注释掉,不会显示在页面中。

    ——JSP原理细节分析

    1、Web服务器如何调用并执行一个JSP页面?
        见JSP运行机制。

    2、JSP页面中的HTML标签如何被发送到客户端?
        使用out.write("  ");写入客户端页面,因为JSP翻译之后是一个Servlet文件,而out又是Servlet的内置对象,所以可以直接使用。
        out.write()和out.print()方法完全相同,输出字符串用write,输出变量用print。

    3、JSP页面中的Java代码服务器是如何执行的?
        先将JSP文件转换成一个Servlet文件,然后编译为class文件,再执行。
        在<%  %>中定义的变量,会转换为service方法的局部变量。
        在<%!  %>中定义的变量或者方法,会转换为Servlet的成员属性或者成员方法。

    4、Web服务器在调用JSP时,会给JSP提供一些什么Java对象。
        九个内置对象。
        application、pageContext、request、session、page、response、exception、out、config。


    ——JSP运行机制

    1、JSP运行机制

            图片

        如果是第一次访问该JSP文件,Web服务器就会将该文件转换成一个Servlet文件(xxx_jsp.java,这个文件本身就是一个Servlet文件),然后再将其编译成(.class文件),然后将class文件加载到内存中,成为一个单例对象。
        如果是第二次访问该JSP文件,则不再进行编译等操作,直接访问内存中的单例对象。

        如何判断是否已经访问过该JSP文件?
            Web服务器有一套管理机制,会判断JSP文件是否已经被访问过(是否存在对象)。
            因此,JSP也是单例的,换而言之,因为Servlet是单例的,所以JSP也是单例的。
            如果某个JSP文件被修改了,再次访问该JSP就相当于第一次访问该文件。

            图片

        查看JSP生成的Servlet:
            tomcat根目录/work/Catalina/localhost

    2、JSP基本组成
        模板数据
            模板数据是JSP容器不处理的部分,例如JSP页面中的HTML内容。
        元素
            概念:
                元素是必须由JSP容器处理的部分,例如Java代码。
            1)指令
            2)脚本
            3)动作
            4)注释

    ——JSP指令元素

        指令元素主要用于为转换阶段提供整个JSP页面的相关信息,该指令不产生任何的输出信息到当前的输出流中。
        一般都会把JSP指令放到JSP文件最上方,但这不是必须的。
        指令元素用于从JSP发送一个信息到容器,比如设置全局变量,文字编码,引入包等。


        在一个JSP页面中,可以有0~N个指令。

    1、page
        页面属性指令,对整个页面进行配置。
        page指令是最为常用的指令,也是属性最多的指令。
        page指令没有必须的属性,都是可选属性,例如:<%@page %>,没有属性也可以。
        在JSP页面中,任何指令都可以重复出现。

        1)格式:
            <%@ page attr1="value1" attr2="value2" ...%>,一般都会把JSP指令放在JSP文件的最上方,但这不是必须的。

        2)注意:
            page指令以<%@开始,以%>结束。
            <%@不要有空格,%>也不要有空格。
            各属性名值对之间用空格隔开。
            因为page指令是对整个页面进行设置,所以通常将page指令放在JSP页面的开头位置。

        3)page指令示例:
            <%@ page pageEncoding="UTF-8" %>

        4)page指令中常用属性有:
            language="xxx":JSP中嵌入的代码通常是Java。

            import="包.* ":在该JSP页面中引入包或者某个具体的类。

            errorPage="相对JSP页面的路径":当JSP页面出现错误时,自动跳转到指定的JSP页面,要求使用相对路径,当使用"/"作为开始路径时,表示当前Web应用的根目录,如果不以"/"开头,则表示相对于本JSP页面的路径。

            isErrorPage=[false | true]:指定该JSP页面是否专门用作error页面,如果设为true,则可以在该页面直接使用Exception内置对象。

            contentType="text/html;charset=utf-8":相当于添加一个响应头:Content-Type,指定网页以什么方式显示页面,写了此属性之后,就不需要设置:response.setContentType("text/html;charset=utf-8");

            pageEncoding="utf-8":指定当前JSP页面的编码,指定服务器以什么编码将JSP编译成.java文件。

        5) 以下属性默认为true:
            session=[true | false]:默认true,是否在JSP页面获取session对象。
                这个session就是Servlet中的HttpSession。
                当设置为false时,无法在JSP中使用session对象。
            buffer=[none | 8k | 指定大小]:设置out对象使用的缓冲区,默认8K。
            autoFlush=[true | false]:当buffer满后,是否自动刷新到浏览器。
            isThreadSafe=[true | false]:默认true,表示该JSP的线程安全由程序员控制,false则对应的Servlet实现线程安全接口。

        6)page指令的pageEncoding和contentType
            ①pageEncoding指定当前JSP页面的编码,这个编码是给服务器看的,服务器需要知道当前JSP使用的编码,不然服务器无法正确的将JSP翻译成java文件,所以这个编码只需要与真实的页面编码一致即可。

                在MyEclipse中,在JSP文件上点击右键,选择属性就可以看到当前JSP页面的编码了。

                如果两个属性只提供一个,那么另一个默认值为已设置的那一个。
                如果两个属性都没有设置,那么默认为ISO-8859-1。
                如果JSP页面中存在中文,则一定要设置该属性。

            ②contentType属性与response.setContentType()方法的作用相同,它会完成两项工作,一是设置响应字符流的编码,二是设置content-type响应头,例如:
                <%@page contentType="text/html;charset=utf-8"%>

        7)page指令的import属性
            import指令可以出现多次,只有它可以出现多次。
            import属性值对应的是Java文件中的import语句。
            import属性值可以使用逗号:
            <%@page import="java.util.*,java.net."%>

        8)page指令的errorPage和isErrorPage
            在一个JSP页面出错之后,Tomcat会响应给用户错误信息(500页面)。
            如果不希望Tomcat给用户输出错误信息,那么可以使用page指令的errorPage来指定错误页面,也就是自定义错误页面,例如:
                <%@page errorPage="xxx.jsp"%>
            这时,在当前JSP页面出现错误时,会将请求转发到xx.jsp页面,此时响应码为200。

            isErrorPage为指定当前页面是否为处理错误的页面,属性分为true和false,当设置为true时,响应码为500。
            仅仅当isErrorPage设置为true时,JSP文件才可以使用内置对象中的exception对象。
            将异常信息输出到页面:
                exception.printStackTrace(reqponse.getWriter());

            哪个内置对象不可以随意使用:exception和session

            提示:IE会在响应码为500时,并且响应正文的长度小于等于512B时不给予显示,而是现实“网站无法显示该页面”字样,这时只需要添加一些相应内容即可。

        9)在web.xml文件中配置错误页面
            不止可以通过JSP的page指令来配置错误页面,还可以在web.xml文件中指定错误页面,这种方式与page指令无关。
            <error-page>
                <error-code>404</error-code>
                <location>/error404.jsp</error-page>
            </error-page>
            <error-page>
                <error-code>500</error-code>
                <location>/error500.jsp</location>
            </error-page>
            <error-page>
                <exception-type>java.long.RuntimeException</exception-type>
                <location>/error.jsp</location>
            </error-page>
            如果没有配置这个<error-page>,在抛出RuntimeException时会转发到error500.jsp页面,即响应码为500。

            优先级:内容越细致,匹配度越小的优先级越高。

            <error-page>有两种使用方式:
                *   <error-code>和<location>子元素
                *   <exception-type>和<location>子元素
                其中<error-code>是指定响应码,<location>指定转发的页面,<exception-type>是指定抛出的异常。

            在上述配置标签中:
                *   当出现404时,会跳转到error404.jsp页面
                *   当出现RuntimeException异常时,会跳转到error.jsp页面
                *   当出现非RuntimeException异常时,会跳转到error500.jsp页面
                    这种方式会在控制台看到异常信息,而使用page指令时不会在控制台打印异常信息。

        10)page指令的autoFlush和buffer
            buffer表示当前JSP的输出流(out隐藏对象)的缓冲区大小,默认为8kb。

            autoFlush表示在out对象的缓冲区满时如何处理。
            true(默认)表示缓冲区满时把缓冲区自动数据刷新到客户端。
            false表示当缓冲区满时,抛出异常。
            默认值为true。

        11)page指令的isELIgnored
            该指令的属性表示当前JSP页面是否忽略EL表达式,默认值为false,表示不忽略(即支持EL表达式)。
            老版本默认true。

        12)page指令的其他属性
            *   language:只能是Java,这个属性可以看出JSP最初设计时的野心,希望JSP可以转换成其他语言,但是到现在JSP只能转换为Java代码。
            *   info:JSP说明性信息。
            *   isThreadSafe:当前的JSP是否支持并发访问。
                默认为false,为true时,JSP生成的Servlet会实现一个过时的标记接口SingleThreadModel,这时JSP就只能处理单线程的访问。
            *   session:默认为true,表示当前JSP页面可以使用session对象,如果为false表示当前JSP页面不能使用session对象。
            *   extends:指定当前JSP页面生成的Servlet父类。



    2、include(静态导入)
        该指令用于引入一个文件(通常是JSP文件),JSP引擎会把两个JSP文件翻译成一个Servlet文件,然后编译成一个class文件,因此也称为静态引入。
        与RequestDispatcher的include()方法功能相似,包含与被包含是两个Servlet,即两个class文件,它们只是在运行时合并了。
        被引入的JSP文件,只需要保留page指令即可,<html><body>标签不要写。

        include指令在哪一行引入,就将被引入的代码写在哪一行。

        <%@include %>该指令是在JSP编译成java文件的时候完成的。

        格式:
            <%@ include file="文件名"%>

        应用:
            为了保证网站的整体风格,常将文件头部和尾部做成单独的文件,网站其他页面使用包含指令进行包含。

        <%@ include file=" " %>:静态引入
        <jsp:include file=" "></jsp:include>:动态引入
        相同点:
            把一个文件引入到另外一个文件中。
        不同点:
            静态引入:>%@include%>(合并)
                运行前就引入。
                把两个JSP翻译成一个Servlet,所以被引入的文件不要包含<html><body>等标签。
                静态包含时需要注意变量的使用,因为在运行前就引入,所以变量等数据会被当做一个字符串来处理。
            动态引入:<jsp:include>(调用)
                运行时才引入。
                把两个JSP文件分别翻译,生成两个文件,所以被引入的JSP文件包含有<html><body>也不会报错。

        <%@include%>才是真正的合并文件,而<jsp:include>仅仅是调用,把输出结果合并。
            调用:org.apache.jasper.runtime.JspRuntimeLibrary.include(request,response,"xx.jsp",out,false); 

    3、taglib(导入标签库)
        该指令允许在JSP页面中使用自定义的标签。
        <myTag:xx  属性  >
        <myTag:youTag num1="123">

        两个属性:
            prefix:指定标签库在本页面中的前缀,由程序员自己定义,表示当前页面所有库中的标签必须使用该前缀名称,用于区分不同标签库。
            uri:指定标签库的位置。

        格式:
            <%@taglib prefix="c" uri="xxxxx.xxx.com"%>

        使用:
            <c:xxx>


    ——JSP脚本元素

        脚本元素可以理解为就是Java代码片段。
        脚本段(scriplet):<% Java代码%>
        表达式:<%= 表达式%>
            注意区分表达式和语句:
                <%= 12*5%>:是表达式
                <%= 12*5;%>:是语句,单独存在会报错。
        声明(declaration):<%! 声明Java代码%>
            <%! 变量声明%>
            <%! 方法声明%> 
        当有!的时候会将代码放到类中、service方法外,也就是该Servlet中,而不加!的时候,变量会默认放在service方法中(方法不会放到service中),也就是说,方法声明必须加 ! 。
     
    ——JSP页面注释

        JSP页面模块注释:<%-- --%>
        HTML注释:<!-- -->
        区别:
            <!-- -->会在Servlet中对应生成out.write("<!-- -->");这样在返回给浏览器的静态页面中也会生成<!-- -->,只是用户看不到而已。
            <%-- --%>在Servlet中没有任何输出,建议使用<%-- --%>

    ——JSP基础动作标签

        动作标签的作用是用来简化Java脚本的。
        JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,可以直接拿来使用。
        如果JSP动作标签不够用,可以自定义标签,JavaWeb一共提供了20个JSP动作标签。
        JSP动作标签格式:
            <jsp:标签名 ... >

        动作标签是由服务器来解释执行的,它与Java代码一样,都是在服务器端执行的。
        HTML标签由浏览器来执行

    1、<jsp:include>:
        在页面得到请求时动态包含一个文件。

        <jsp:include>标签和<@include>指令是不同的:
            include指令是在编译时期完成的,即把当前JSP和被包含的JSP合并成一个JSP文件,然后再编译成一个Servlet。
            include动作标签是在运行时期完成的包含,即当前JSP和被包含的JSP都会各自生成一个Servlet,然后在执行当前JSP的Servlet时完成包含另一个JSP的Servlet,它与RequestDispatcher的include()方法是相同的。

            include指令才是真正的合并。
            include动作标签相当于调用。

        <jsp:include page="文件路径" flush="true | false"> </jsp:include>
        例如:
            <jsp:include page="文件路径" flush="true | false">
                <jsp:param name="参数名1" value="参数1的值"/>
                <jsp:param name="参数名2" value="参数2的值"/>
            </jsp:include>

        当a.jsp动态包含b.jsp时,编译后的a.java文件中会有如下代码:
    图片

    2、<jsp:forward>:
        它与RequestDispatcher的forward方法一样,留头不留体。 
        forward动作元素用来实现网页跳转,即当前页面跳转到其他指定页面。
        跳转的目标页面可以是静态的HTML页面、JSP页面或者Servlet类。
            <jsp:forward page="文件路径" flush="true | false"></jsp:forward>
        例如:
             <jsp:forward page="文件路径" flush="true | false" >
                <jsp:param name="参数名1" value="参数1的值"/>
                <jsp:param name="参数名1" value="参数1的值"/>
            </jsp:forward>
        不能将JSP页面直接放置在WebRoot目录下,否则可以根据地址栏中的JSP地址直接获取到该JSP文件。 
            <a href="http://IP地址:8080/地址">获取JSP文件</a>
        为了避免通过浏览器访问到源文件,可以将JSP文件放置到WEB-INF下,Tomcat有一个默认的保护机制:
            不能通过浏览器访问WEB-INF。
        通常情况下会在WEB-INF外放置一个充当入口的JSP文件,内部代码为:<jsp:forward page="/WEB-INF/xxx.jsp"></jsp:forward>
        当通过该指令进入WEB-INF之后,就可以任意访问WEB-INF目录下的所有文件了。 

    3、<jsp:param>:设置传送参数,通常与<jsp:include>结合使用。
        param动作元素必须配合include动作元素、forward动作元素和plugin等元素,在加载外部程序或是网页跳转的时候,传递参数给另外一个JSP程序。

        用来给转发或包含的页面传递参数。
        通过request.getParameter(name);方法来获取参数。

        <jsp:forward page="b.jsp">
            <jsp:param value="value1" name="name1" />
            <jsp:param value="value2" name="name2" />
        </jsp:forward>
        当页面转发到b.jsp之后,就可以使用request.getParameter(name);来获取参数了。

    4、<jsp:useBean>:创建一个JavaBean实例,使用JavaBean组件。
        useBean动作元素用来在JSP中创建并使用一个JavaBean。
        实际工作中常用JavaBean作组件开发,而在JSP中只需要声明并使用这个组件,这样可以较大限度的实现静态内容和动态内容的分离。
            <jsp:useBean id="bean的名称" scope="有效范围" class="包名.类名"></useBean>

    5、<jsp:setProperty>:设置JavaBean的初始值。
        setProperty动作元素设置Bean中的属性值。
        <jsp:setProperty name="bean的名称" property="*" />
        <jsp:setProperty name="bean的名称" property="属性名称" />
        <jsp:setProperty name="bean的名称" property="属性名称" param="参数名称" />
        <jsp:setProperty name="bean的名称" property="属性名称" value="属性值" />

    6、<jsp:getProperty>:获取JavaBean的属性值。
        getProperty动作元素用于获取Bean中的属性值并将其转换为字符串,用于在页面中显示。
        <jsp:getProperty name="bean的名称" property="属性名称" />

    7、<jsp:plugin>:使用插件

    8、<jsp:fallback>

    ——JSP内置对象

    out(JspWriter)

        out对象是JSPWriter类的实例,是向客户端输出内容时常用的对象。
        等同于response.getWriter()
        out向客户端输出字节流数据。
        方法摘要:
            out.println(" "); 

    page(this)

        page对象就是当前JSP页面本身(JSP本身就是个类),它是Object类的实例:Object page = this;

    application(ServletContext)

        Servlet类的对象。

        application对象实现了用户间数据的共享,可存放全局变量,它的作用域最大,开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在,这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作,在任何地方对此对象属性进行操作,对将影响到其他用户对此对象的访问(static),服务器的启动和关闭决定了application对象的生命,它是ServletContext的实例。

    exception(Throwable)

        只有在错误页面中可以使用该对象。 
        对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生该对象,如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译,它实际上是Throwable的对象。

    pageContext(PageContext,只在JSP中有该对象)

        当前页面上下文对象。
        用于操作当前页面和当前页面标签的共享数据。
        pageContext对象提供了对当前JSP页面内所有的对象及名字空间的访问,也就是说它可以访问到本页面所在的session,也可以获取所在的application的某一属性值。
        *   一个顶9个
        *   是域对象,具有set、get、remove方法

        *   代理其它域对象:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);
            指定向session域中添加数据。

        *   全域查找:pageContext.findAttribute("xxx");
            在四大域对象中按照范围从小到大的顺序依次查找。
            为了方便全域查找,在起名时一般定义为session_xxx,pagecontext_sss。

        *   获取其它8个内置对象
            getSession()等方法。

    config(ServletConfig)

        对应Servlet中的ServletConfig。

        config对象是在一个Servlet初始化时,JSP引擎向他传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成(以及服务器的有关信息(通过传递一个ServletContext对象)。
        该对象代表JSP对应的Servlet的配置,可以得到web.xml中的参数 -- ServletConfig。 

    request(HttpServletRequest)

        客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
        它是HttpServletRequest类的实例,作用域是同一个请求之内,页面跳转通过forward跳转页面,则目标页面可以拿到request中的属性值,redirect是重定向,属性值会丢失。
        方法摘要:
            getParameter(String name);
                通过表单中的name值来获取对应属性。
            getParameterValues(String name);
                通过name来获取字符串数组,返回值是String[ ]。
            setAttribute(String name,Object obj)
                设置名字为name的obj的值为obj。
            getAttribute(String name);
                返回由name指定的属性值,如果不存在就返回null。
            getCookie(); 

    response(HttpServletResponse)

        response对象包含了响应客户请求的有关信息,但是JSP中很少用到它,它是HttpServletResponse类的实例。
        方法摘要:
            addCookie(Cookie cookie)
            sendRedirect("路径名"); 

    session(HttpSession)

        session对象是指客户端与服务器的一次会话,从客户连接到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例,用于保存用户的信息,跟踪用户的行为。
        不是每个JSP页面中都可以使用该对象,如果在某个JSP页面中设置<%@page session="false" %>,说明这个页面中不能使用session。
        方法摘要:
            setAttribute(String name,Object obj);
            getAttribute(String name);




        这9个对象中有很多是极少使用的:config、page、exception
        这9个对象中有两个对象不是每个JSP页面都可以使用的:exception、session

    Servlet三大作用域:
            ServletContext
            session
            request

    JSP四大作用域:
        pageContext(1,范围最小)
            域对象,存放的数据只能在当前页面使用。
        request(2,范围第二小)
            域对象,存放的数据只在一次request中有效。
        session(3,范围第二大)
            域对象,存放的数据在一次会话中有效。
        application(4,范围最大)
        域对象,存放的数据在整个Web应用运行期间均有效。

    内置对象所对应的类:
        request                    HttpServletRequest
        response                 HttpServletResponse
        session                    HttpSession
        exception                 Exception
        page                         this(当前对象,也就是当前JSP页面)
        config                       ServletConfig
        application                ServletContext
        pageContext             PageContext
        out                            JspWriter



        request对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象常用的方法有:getParameter、getParameterNames 和getParameterValues 通过调用这几个方法来获取请求对象中所包含的参数的值。

        response 对象代表的是对客户端的响应,也就是说可以通过response 对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用

        pageContext 对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性常用的方法有 :findAttribute、getAttribute、getAttributesScope 和getAttributeNamesInScope一般情况下pageContext对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理。

        session    对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。

        application 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。

        out 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了pirnt和println之外,还包括clear、clearBuffer、 flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法

        config对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。

        page对象代表了正在运行的由JSP文件产生的类对象,不建议一般使用。

        exception对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用四个作用域。
  • 相关阅读:
    Python笔记17(Django之路由系统)
    Python笔记16(Django介绍与安装)
    Python笔记16(Web框架本质)
    序列的区间操作
    并查集(入门)
    (补题 Uva 3027)Corporative Network
    (补题 cf 1167C)News Distribution
    (补题 CF 1013B 模拟)And
    (补题 CF 1234C)Pipes
    (补题 POJ 1679 次小生成树)The Unique MST
  • 原文地址:https://www.cnblogs.com/wwwwyc/p/6375275.html
Copyright © 2011-2022 走看看