JavaWeb | JSP内置对象

目录:

    • 1.认识JSP内置对象
    • 2.JSP内置对象的特点
    • 3.九大内置对象
      • 3.1 out对象的作用
        • 向 “客户端” 输出各种数据内容
        • 对 “服务器” 上的输出缓冲区进行管理
      • 3.2 request对象的作用
        • 能够获取客户端的基本信息
      • 3.3 response对象的作用
          • 利用response对象进行 “重定向”
          • 利用response设置HTTP头
      • 3.4 "重定向" 和 "请求转发" 的区别
        • 3.4.1 从浏览器的地址显示上来看
        • 3.4.2 从数据共享来看
        • 3.4.3 从功能来看
        • 3.4.4 从效率来看
    • 4.(不断补充中.....)

1.认识JSP内置对象

  • JSP内置对象就是指在JSP页面中内置的不需要定义可以在网页中直接使用对象
  • JSP有九种内置对象 :( 九大内置对象 )
    (1) out对象: 负责管理对客户端的输出。
    (2) request对象 : 负责得到客户端的请求信息。
    (3) response对象 : 负责向客户端发出晌应
    (4) session对象 : 负责保存同一客户端一次会话过程中的一些信息。
    (5) application对象 : 表示整个应用的环境信息。
    (6) exception对象 : 表示页面上发生的异常,可以通过它获得页面异常信息。
    (7) page对象 : 表示的是当前JSP页面本身,就像Java类定义中的this一样。
    (8) pageContext对象 : 表示的是此JSP的上下文。
    (9) config 对象 : 表示此JSP的ServletConfig.

2.JSP内置对象的特点

  • 内置对象自动载入的,因此它不需要直接实例化。(可直接在JSP页面调用/使用JSP内置对象)
  • 内置对象是通过Web容器来实现和管理的。
  • 所有JSP页面中,直接调用内置对象都是合法的。

3.九大内置对象

3.1 out对象的作用

  • 用来向客户端输出各种数据类型的内容

  • 对应用服务器上输出缓冲区进行管理

    一般情况下,out对象都是向浏览器端输出 文本型 的数据,所以可以用out对象直接编程生成一个动态的HTML文件,然后发送给浏览器,达到显示的目的。

向 “客户端” 输出各种数据内容

通过out对象的两个 输出方法 来向客户端中输出各种数据内容。

  • void print()

  • void println()

    两者的区别out.print()函数在输出完毕后并不换行,而out.println()函数在输出完毕后会结束当前行( 会换行),下一个输出语句将会在下一行开始输出

    不过,在输出中换行,在网页上并不会换行。在网页上换行应该打印字符串"< br>"。

对 “服务器” 上的输出缓冲区进行管理
  • out对象还可以实现对 应用服务器上的输出缓冲区管理

  • 以下是out对象常用的与 管理缓冲区有关的函数

    (1)void close() : 关闭输出流,从而强制终止当前页面的剩余部分向浏览器输出。
    (2)void clearBuffer() : 清除缓冲区里的数据,并且把数据写到客户端去。
    (3) void clear() : 清除缓冲区里的数据,但 不把数据写到客户端去
    (4) int getRemaining() : 获取缓冲区中没有被占用的空间的大小
    (5)void flush() : 输出缓冲区的数据。out.flush()函数也会清除缓冲区中的数据,但是该函数先将之前缓冲区中的数据输出到客户端,然后再清除缓冲区中的数据。
    (6) int getBufferSize() : 获得缓冲区的大小

    out管理缓冲区使用得比较少,因为通常使用服务器端默认的设置,而不需要手动管理

request 对象 :

  • request代表了客户端请求信息,主要是用来获取客户端参数
    它对应的类型是javax. servlet.http.HttpServletRequest。该对象在前面的内容中用到,如URL传值表单开发中。

3.2 request对象的作用

能够获取客户端的基本信息
  • request对象的一个主要用途就是它 能够获取客户端的基本信息。主要有以下几种方法:

    (1) String getMethod() : 得到提交方式
    (2) String getRequestURI() : 得到请求的URL地址
    (3) String getProtocol) : 得到协议名称
    (4) String getServletPath() : 获得客户端请求服务器文件的路径。
    (5) String getQueryString() : 得到URL的查询部分,对于post来说,该方法得不到任何信息。
    (6) String getServerName() : 得到服务器的名称
    (7) String getServerPort() : 得到服务器端口号
    (8) String getRemoteAddr() : 得到客户端的IP地址

    <%@ page contentType="text/html;charset=gb2312" language="java" %>
    <html>
    <head>
        <title>Two.jsp</title>
    </head>
    <body>
    提交方式: <%= request. getMethod() %><br>
    请求的URL地址: <%= request. getRequestURI()%><br>
    协议名称: <%= request. getProtocol()%><br>
    客户端请求服务器文件的路径: <%= request. getServletPath()%><br>
    URL的查询部分: <%= request. getQueryString()%><br>
    服务器的名称: <%= request. getServerName()%><br>
    服务器端口号: <%= request. getServerPort() %><br>
    远程客户端的IP地址: <%= request. getRemoteAddr()%><br>
    </body>
    </html>
    

response对象 :

  • responserequest 是一组 相对应内置对象
  • response可以理解为 客户端的响应request可以理解为 客户端的请求,二者所表示的范围相对应的两个部分,具有很好的对称性
  • response对应的类(接口) 是 javax.servlet.http.HttpServletResponse

3.3 response对象的作用

利用response对象进行 “重定向”
  • 重定向就是跳转到另一个页面 / 实现程序的跳转,可以用response对象进行重定向,方法如下:

    response.sendRedirect(目标页面路径); 
    

    responseTest1.jsp

    <%@ page  language="java"  pageEncoding="gb2312" import="java.util.*" %>
    <html>
    <head>
        <title>responseTest1.jsp</title>
    </head>
    <body>
    <form action="responseTest2.jsp">
    <input type= "submit" value= "提交">
    </form>
    </body>
    </html>
    

    responseTest2.jsp

    <%@ page  language="java"  pageEncoding="gb2312" import="java.util.*" %>
    <html>
    <head>
        <title>responseTest2.jsp</title>
    </head>
    <body>
    <%
         //重定向到另一个页面
        response.sendRedirect("responseTest3.jsp"); //相对路径
    %>
    </body>
    </html>
    

    responseTest3.jsp

    <%@ page  language="java"  pageEncoding="gb2312" import="java.util.*" %>
    <html>
    <head>
        <title>responseTest3.jsp</title>
    </head>
    <body>
      欢迎来到学校管理系统!
    </body>
    </html>
    
利用response设置HTTP头
  • HTTP头一般用来 设置网页的基本属性,可以通过 responsesetHeader() 方法进行设置,代码如下。

    <%
       response.setHeader("Pragma","No - cache" );
       response. setHeader( "Cache - Control" ,"no - cache");
       response. setDateHeader("Expires",0);
    %>
    

    这都表示在客户端缓存不保存页面的副本

    <%--表示客户端浏览器每隔5秒钟定期刷新一次。--%>
    <%
       response. setHeader( "Refrsh","5");
    %>
    

3.4 “重定向” 和 “请求转发” 的区别

<%
//重定向到另一个页面(重定向实现"页面跳转")
response.sendRedirect("文件名"); //相对路径
%>

<%-- JSP动作 实现“页面”跳转 --%>
<jsp:forward page="文件名">jsp:forward>

重定向请求转发都能实现页面跳转 ,但两者又有区别具体区别分析如下

3.4.1 从浏览器的地址显示上来看
  • forward属于服务器端去请求资源服务器直接访问目标地址,并对该目标地址响应内容进行读取,再把读取的内容发给浏览器,因此 客户端浏览器的地址不变
  • redirect是告诉客户端使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍,所以地址显示栏会变
    ( forward进行页面跳转时,客户端浏览器地址 不会改变redirect进行页面跳转时,客户端浏览器地址 会改变)
3.4.2 从数据共享来看

forward转发的页以及转发到的目标页面够共享request里面的数据,而redirect转发的页以及转发到的目标页面不能共享request里面的数据

3.4.3 从功能来看
  • redirect能够 重定向当前应用程序的其他资源,还能够重定向同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源

  • forward只能在同一个Web应用程序内资源之间转发请求,可以理解为 服务器内部的一种操作

    如 : redirect可以重定向百度网址,但forward请求转发百度网址报错

3.4.4 从效率来看

forward效率较高,因为跳转仅发生在服务器端redirect效率相对较低,因为相当于又进行了一次请求

4.(不断补充中…)

你可能感兴趣的:(JavaWeb,java,servlet,开发语言,JavaWeb,JSP内置对象,JSP九大内置对象)