zoukankan      html  css  js  c++  java
  • JSP九大内置对象详解

    JSP九大内置对象详解

    JSP内置对象(9个内置对象):
    1.PageContext javax.servlet.jsp.PageContext JSP的页面容器
    2.request javax.servlet.http.HttpServletrequest 获取用户的请求信息
    3.response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
    4.session javax.servlet.http.HttpSession 用来保存每一个用户的信息
    5.application javax.servlet.ServletContext 表示所有用户的共享信息
    6.config javax.servlet.ServletConfig 服务器配置信息,可以取得初始化参数
    7.out javax.servlet.jsp.jspWriter 页面输出
    8.page java.lang.object)
    9.exception java.lang.Throwable
    四种属性范围:
    page(pageContext):只在一个页面中保存属性。 跳转之后无效。
    request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效
    session:再一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效
    application:在整个服务器上保存,所有用户都可使用。 重启服务器后无效
    注意:如果设置过多的application属性范围会影响服务器性能。
    pageContext.PAGE_SCOPE
    pageContext.REQUEST_SCOPE
    pageContext.SESSION_SCOPE
    pageContext.APPLICATION_SCOPE
    pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);

    • Request常用的方法:
      1.01 getParameter(String strTextName) 获取表单提交的信息。

    String strName=request.getParameter("name");

        1.02 getProtocol() 获取客户使用的协议。

    String strProtocol=request.getProtocol();

        1.03 getServletPath() 获取客户提交信息的页面。

    String strServlet=request.getServletPath();

        1.04 getMethod() 获取客户提交信息的方式,get|post。

    String strMethod = request.getMethod();

        1.05 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。

    String strHeader = request.getHeader("accept");

        1.06 getRermoteAddr() 获取客户的IP地址。

    String strIP = request.getRemoteAddr();

        1.07 getRemoteHost() 获取客户机的名称。

    String clientName = request.getRemoteHost();

        1.08 getServerName() 获取服务器名称。

    String serverName = request.getServerName();

        1.09 getServerPort() 获取服务器的端口号。

    int serverPort = request.getServerPort();

        1.10 getParameterNames() 获取客户端提交的所有参数的名字。

    Enumeration enum = request.getParameterNames();
    while(enum.hasMoreElements()){
        String s=(String)enum.nextElement();
        out.println(s);
    }

      1.11 getHeaderNames()     取出全部头信息。

      <%
      Enumeration enu = request.getHeaderNames();//取出全部头信息
      while(enu.hasMoreElements()){
      String name = (String)enu.nextElement();
      String value = request.getHeader(name);
      %>
      <h1><%=name %>--<%=value %></h1>
      <%    
      }
      %>

    1、request对象

    request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。

    2、response对象

    response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。

    3、session对象

    session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。

    4、application对象

     application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

    5、out 对象

    out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

    6、pageContext 对象

    pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

    7、config 对象

    config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

    8、page 对象

    page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

    9、exception 对象

    exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

    ====================================================================================================================================

    JSP有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用

    JSP九大内置对象分为四类:

    • 输入输出对象:out对象、response对象、request对象
    • 通信控制对象:pageContext对象、session对象、application对象
    • Servlet对象:page对象、config对象
    • 错误处理对象:exception对象

    九种对象简介:

    1. out对象:用于向客户端、浏览器输出数据。
    2. request对象:封装了来自客户端、浏览器的各种信息。
    3. response对象:封装了服务器的响应信息。
    4. exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
    5. config对象:封装了应用程序的配置信息。
    6. page对象:指向了当前jsp程序本身。
    7. session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
    8. application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
    9. pageContext对象:提供了对jsp页面所有对象以及命名空间的访问。

    一.out对象

    out对象是一个输出流,用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。

    out对象方法介绍:

    方法名

    说明

    print或println

    输出数据

    newLine

    输出换行字符

    flush

    输出缓冲区数据

    close

    关闭输出流

    clear

    清除缓冲区中数据,但不输出到客户端

    clearBuffer

    清除缓冲区中数据,输出到客户端

    getBufferSize

    获得缓冲区大小

    getRemaining

    获得缓冲区中没有被占用的空间

    isAutoFlush

    是否为自动输出

    二.request对象

    request对象封装了从客户端到服务器发出的请求信息。

    request对象方法介绍:

     

    方法名

    说明

    isUserInRole

    判断认证后的用户是否属于某一成员组

    getAttribute

    获取指定属性的值,如该属性值不存在返回Null

    getAttributeNames

    获取所有属性名的集合

    getCookies

    获取所有Cookie对象

    getCharacterEncoding

    获取请求的字符编码方式

    getContentLength

    返回请求正文的长度,如不确定返回-1

    getHeader

    获取指定名字报头值

    getHeaders

    获取指定名字报头的所有值,一个枚举

    getHeaderNames

    获取所有报头的名字,一个枚举

    getInputStream

    返回请求输入流,获取请求中的数据

    getMethod

    获取客户端向服务器端传送数据的方法

    getParameter

    获取指定名字参数值

    getParameterNames

    获取所有参数的名字,一个枚举

    getParameterValues

    获取指定名字参数的所有值

    getProtocol

    获取客户端向服务器端传送数据的协议名称

    getQueryString

    获取以get方法向服务器传送的查询字符串

    getRequestURI

    获取发出请求字符串的客户端地址

    getRemoteAddr

    获取客户端的IP地址

    getRemoteHost

    获取客户端的名字

    getSession

    获取和请求相关的会话

    getServerName

    获取服务器的名字

    getServerPath

    获取客户端请求文件的路径

    getServerPort

    获取服务器的端口号

    removeAttribute

    删除请求中的一个属性

    setAttribute

    设置指定名字参数值

    request对象演示:

    完成一个简单的用户注册信息界面,将注册信息发送到欢迎界面上。

    用户注册界面表单设置:

    <form action="do_register.jsp" method="post">
        用户名:
        <input type="text" name="userName"><br>
        技能:
        <input type="checkbox" name="skills" value="java">java
        <input type="checkbox" name="skills" value="python">python
        <input type="checkbox" name="skills" value="ruby">ruby
        <input type="checkbox" name="skills" value="golang">golang
        <br>
        <input type="submit" value="提交">
        <input type="reset" value="重置">
    </form>

    用户注册信息处理界面使用getParameter方法将用户的表单信息提取出来

    String name=request.getParameter("userName");
    String[] skillArr=request.getParameterValues("skills");

    将skillArr数组转换成字符串:

    String skills="";
    if (skillArr!=null&&skillArr.length>0){
        for (String skill:skillArr
             ) {
            skills=skills+skill+" ";
        }
    }

    将数据使用setAttribute保存起来

    request.setAttribute("userName",name);
    request.setAttribute("skills",skills);

    使用jsp的forword指令将页面跳转到welcome.jsp

    <jsp:forward page="welcome.jsp"></jsp:forward>

    setAttribute和getAttribute用于在web组件之间共享信息
    getparameter方法用于接收服务器通过set和post方法传输的数据
    注意没有setparameter方法

    welcome.jsp页面配置:

    <html>
    <head>
        <title>技能展示界面</title>
    </head>
    <body>
    信息展示界面:<br><br>
    <%--<%=%>这是表达式<%%>这是jsp程序处理--%>
    姓名:<%=request.getAttribute("userName")%><br>
    技能:<%=request.getAttribute("skills")%>
    </body>
    </html>

    三.response对象

    response对象主要用于对客户端的请求进行回应。
    以及处理http的连接信息,例如设置http文件头,设置cookie对象等。

    response对象方法:

    方法名

    说明

    addCookie

    添加一个Cookie对象

    addHeader

    添加Http文件指定名字头信息

    containsHeader

    判断指定名字Http文件头信息是否存在

    encodeURL

    使用sessionid封装URL

    flushBuffer

    强制把当前缓冲区内容发送到客户端

    getBufferSize

    返回缓冲区大小

    getOutputStream

    返回到客户端的输出流对象

    sendError

    向客户端发送错误信息

    sendRedirect

    把响应发送到另一个位置进行处理

    setContentType

    设置响应的MIME类型

    setHeader

    设置指定名字的Http文件头信息

     
     

    四.session对象

    session对象:是一个jsp内置对象,它在第一个jsp被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离  开这个服务器结束(或者超时),被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要创建session对象。

    http是无状态的连接协议,需要使用session来存放用户每次的登陆信息

    session对象方法:

    方法名

    说明

    getAttribute

    获取指定名字的属性

    getAttributeNames

    获取session中全部属性名字,一个枚举

    getCreationTime

    返回session的创建时间

    getId

    获取会话标识符

    getLastAccessedTime

    返回最后发送请求的时间

    getMaxInactiveInterval

    返回session对象的生存时间单位千分之一秒

    invalidate

    销毁session对象

    isNew

    每个请求是否会产生新的session对象

    removeAttribute

    删除指定名字的属性

    setAttribute

    设定指定名字的属性值

    接下来通过一个登陆的小例子来演示下session对象的应用:

    登陆表单设置:

    <form action="do_login.jsp" method="post">
        userName:<input type="text" name="userName"><br/>
        password:<input type="password" name="password"><br/>
        <input type="submit" value="submit">
        <input type="reset" value="reset">
    </form>

    登陆逻辑处理界面,使用getParameter获取到用户名和密码:

    String userName=request.getParameter("userName");
    String password=request.getParameter("password");

    对用户名和密码进行判断:

    if (userName!=null&&password!=null){
        session.setAttribute("userName",userName);
        response.setHeader("refresh","2;URL=welcome.jsp");
    }

    在欢迎界面使用getAttribute获取当前的用户名:

    <%if(session.getAttribute("userName")!=null){%>
    <%--getAttribute方法是使用指定的key获取session中的value值。获取到的是一个object对象
    在使用的时候需要根据具体的类型进行类型转换。
    这里取出的是一个字符串,直接调用会使用他的toString方法,因此不用进行转换--%>
    欢迎 <%=session.getAttribute("userName")%>
    <a href="logout.jsp">注销</a>
    <%}else{%>
    请先登陆
    <a href="login.jsp">登陆</a>
    <%}%>

    判断session对象是否是新创建

    <%if (session.isNew()){%>
    
    <br/>
    <br/>
    欢迎新用户
    <%}else{%>
    <br/>
    <br/>
    欢迎老用户
    <%}%>

    在登出界面里清除session对象信息,并跳转到欢迎界面中去:

    session.invalidate();//清除掉session对象
    response.setHeader("refresh","2;URL=welcome.jsp");

    五.application对象

    application对象代表当前的应用程序。存在于服务器的内存空间中。
    应用一旦启动便会自动生成一个application对象。如果应用没有被关闭,
    此application对象便一直会存在。直到应用被关闭
    application的生命周期比session更长。
    应用:
    为多个用户共享全局信息。比如当前的在线人数等。

    application对象方法:

    方法名

    说明

    getAttribute

    获取应用对象中指定名字的属性值

    getAttributeNames

    获取应用对象中所有属性的名字,一个枚举

    getInitParameter

    返回应用对象中指定名字的初始参数值

    getServletInfo

    返回Servlet编译器中当前版本信息

    setAttribute

    设置应用对象中指定名字的属性值

    可以使用application对象来实现页面访问次数记录的功能:

    <%
        Object obj=application.getAttribute("counter");
        if (obj==null){
            application.setAttribute("counter",new Integer(1));
            out.println("该页面被访问了1次<br/>");
        }else {
            int countValue=new Integer(obj.toString());
            countValue++;
            out.println("该页面被访问了"+countValue+"次<br/>");
            application.setAttribute("counter",countValue);//java会自动装箱
    
        }
    %>

    六.config对象

    config对象表示当前jsp程序的配置信息
    一般项目中,jsp被用作模版技术,也就是位于表示层
    而位于表示层的jsp文件一般是不需要配置信息的
    所以此对象在jsp程序中其实很少使用
    config对象是servletConfig类的一个实例。

    config对象方法:

    方法名

    说明

    getServletContext

    返回所执行的Servlet的环境对象

    getServletName

    返回所执行的Servlet的名字

    getInitParameter

    返回指定名字的初始参数值

    getInitParameterNames

    返回该JSP中所有的初始参数名,一个枚举

     

    七.page对象

    page对象有点类似与java编程中的this指针,他指向了当前jsp页面本身。
    page对象是java.lang.object类的一个实例

    page对象拥有一个toString方法,下面是官方定义的方法介绍:

    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    包名+类名+@+hashcode值

    page对象的方法:

    方法名

    说明

    toString

    将当前项目的信息打印出来

    getClass

    返回当前的object类

    hashCode

    返回page对象的hashCode值

    equals

    用于比较对象是否与当前对象相同

    八.exception对象

    exception对象表示jsp引擎在执行代码时抛出的异常
    如果想要使用exception对象,那么需要配置编译指令的isErrorPage属性为true

    即在页面指令中设置:<%@page isErrorPage=“true”%>

    九:pageContext对象

    pageContetx对象是jsp页面中所有对象功能的最大集成着。
    使用他可以访问所有的jsp内置对象。

    pageContext对象方法:

    方法名

    说明

    forward

    重定向到另一页面或Servlet组件

    getAttribute

    获取某范围中指定名字的属性值

    findAttribute

    按范围搜索指定名字的属性

    removeAttribute

    删除某范围中指定名字的属性

    setAttribute

    设定某范围中指定名字的属性值

    getException

    返回当前异常对象

    getRequest

    返回当前请求对象

    getResponse

    返回当前响应对象

    getServletConfig

    返回当前页面的ServletConfig对象

    getServletContext

    返回所有页面共享的ServletContext对象

    getSession

    返回当前页面的会话对象

  • 相关阅读:
    实验二
    实验一
    网络对抗技术 实验四 恶意代码技术
    网络对抗技术 实验三 密码破解技术
    网络对抗技术 实验二 网络嗅探与欺骗
    网络对抗技术 实验一 网络侦查与网络扫描
    实验6
    实验5
    caogao
    实验四
  • 原文地址:https://www.cnblogs.com/liuyangv/p/8059848.html
Copyright © 2011-2022 走看看