JSP内置对象

JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的对象,本文介绍JSP的内置对象及一些常用的方法。

1、out对象

(1)out对象是JspWriter的实例,是向客户端输出内容常用的对象。

(2)常用方法:

void println() //向客户端打印字符串

void clear() //清除缓冲区内容,如果在flush之后调用会抛出异常

void clearBuffer() //清除缓冲区内容,如果在flush之后调用不会抛出异常

void flush() //将缓冲区内容输出到客户端

int getBufferSize() //返回缓冲区字节数大小,如不设缓冲区则为0

int getRemaining() //返回缓冲区还剩多少可用

boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常

void close() //关闭输出流

(3)小例子

  <body>
  <h1>out内置对象</h1><hr>
  <% 
    out.println("<h2>静夜思</h2><br>");
    out.println("床前明月光<br>");
    out.println("疑是地上霜<br>");
    out.flush();
    //out.clear();  //这里会抛出异常
    out.clearBuffer();  //这里不会抛出异常
    out.println("举头望明月<br>");
    out.println("低头思故乡<hr>");
  %>
     缓冲区大小:<%=out.getBufferSize() %><br>
     缓冲区剩余空间:<%=out.getRemaining() %><br>
     缓冲区满时是否自动清空:<%=out.isAutoFlush() %>
  </body>

页面显示:

这里写图片描述

2、request、response对象

2.1 request对象

Web程序的请求与相应模式:用户/客户端发送请求(request),服务器给用户响应(response)

(1)客户端的请求信息被封装在request对象中,通过他才能了解到客户的需求,然后做出响应,它是HttpServletRequest对象的实例。Request对象 具有请求域,即完成客户端的请求之前,该对象一直有效。

(2)常用方法:

String getParameter(String name) //返回name指定参数的参数值

String[] getParameterValues(String name) //返回包含参数name的所有值的数组

void setAttribute(String,Object) //存储此请求中的属性

object getAttribute(String name) //返回指定属性的属性值

String getContentType() //得到请求体的MIME类型

String getProtocol() //返回请求用的协议类型及版本号

String getServerName() //返回接受请求的服务器主机名

int getServerPort() //返回服务器接受此请求所用的端口号

String getCharacterEncoding() //返回字符编码方式

void setCharacterEncoding() //设置请求的字符编码方式

int getContentLength() //返回请求体的长度,以及字节数

String getRemoteAddr() //返回发送此请求的客户端IP地址

String getRealPath(String path) //返回一虚拟路径的真实路径

String request.getContextPath() //返回上下文路径

(3)小例子

写一个用户注册页面 reg.jsp ,当用户点击“提交”按钮后跳转到 regRequest.jsp

reg.jsp

<body>
    <h1>用户注册</h1> <hr>
    <form name="regForm" action="regRequest.jsp" method="post">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username"/></td>
            </tr>
            <tr>
                <td>兴趣:</td>
                <td>
                    <input type="checkbox" name="favorite" value="sports"/>运动
                    <input type="checkbox" name="favorite" value="read"/>看书
                    <input type="checkbox" name="favorite" value="paint"/>画画    
                    <input type="checkbox" name="favorite" value="sing"/>唱歌
                </td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" name="submitBnt" value="submit"/></td>
            </tr>
        </table>
    </form>
  <br>
  <br>
  <%
  /*URL传递参数引起的中文乱码问题通过修改tomcat服务器的
    配置文档server.xml解决*/ 
  %>
  <a href="regRequest.jsp?username=李四" >测试URL传参数</a>
  </body>

regRequest.jsp

  <body>
    <h1>request内置对象</h1><hr>

    <% 
    //解决页面显示中文乱码问题,无法解决URL传递中文出现的乱码问题
    request.setCharacterEncoding("utf-8");
    //设置一个属性password,它的值是123456
    request.setAttribute("password","123456");    
    %>

         用户名:<%=request.getParameter("username") %><br/>

         兴趣:<%
         if(request.getParameterValues("favorite")!=null){
             String[] favorites=request.getParameterValues("favorite");
             for(String str:favorites){
                out.println(str+"&nbsp;&nbsp;");
             }
         }
        %><br>
         密码:<%=request.getAttribute("password") %><br>
         请求的MIME类型:<%=request.getContentType() %><br>
         协议类型及版本号:<%=request.getProtocol() %><br>
         服务器主机名:<%=request.getServerName() %><br>
         服务器端口号:<%=request.getServerPort() %><br>
         请求文件的长度:<%=request.getContentLength() %><br>
         请求客户端的IP地址:<%=request.getRemoteAddr() %><br>
         请求的真实路径:<%=request.getRealPath("regRequest.jsp") %><br>
         请求的上下文路径:<%=request.getContextPath() %><br> <%//虚拟路径 %>

  </body>

用户注册页面显示:

这里写图片描述

点击“提交”按钮后,页面显示:

这里写图片描述

2.2 response对象

(1)response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。response对象具有页面作用域 ,即访问一个页面时,该页面内的response对象只能对这次访问有效,其他页面的response对象对当前页面无效。

(2)常用方法:

String getCharacterEncoding() //返回响应用的是何种字符编码

void setContentType(String type) //设置响应的是MIME类型

PrintWriter getWriter() //返回可以向客户端输出字符的一个对象(注意比较:PrintWriter与内置对象out的区别)

sendRedirect(java.lang.String location) //重新定向客户端的请求

(3)小例子

response.jsp

<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>
<%
    //设置响应的MIME类型
    response.setContentType("text/html;charset=utf-8");  


    out.println("<h1>response内置对象<h1>");
    out.println("<hr>");
    //强制清空缓冲区
    //out.flush();

    PrintWriter outer=response.getWriter();
    //PrintWriter的对象的输出总是提前于response内置的out对象
    outer.println("大家好,我是response对象生成的输出流outer对象");

    //请求重定向:客户端发送请求时,转到另一个页面
    //response.sendRedirect("reg.jsp"); 

    //请求重定向
    //response.sendRedirect("regRequest.jsp");

    //请求转发
    //request.getRequestDispatcher("regRequest.jsp").forward(request,response);

%>

页面显示:

这里写图片描述

3、session对象

(1)session对象简介

session表示客户端与服务器的一次会话。

Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。

session实际上是一个特定的时间概念。

session保存在服务器内存中,为不同的用户保存不同的session。

session对象是一个JSP内置对象。

session对象在第一个JSP页面被装载时自动创建,完成会话期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。

当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种方法知道这是一个客户,就需要session对象。

session对象是HttpSession类的实例。

(2)session对象常用方法

long getCreationTime(); //返回session创建时间,单位ms

public String getId();  //返回session创建时JSP引擎为它设的唯一ID号

public Object setAttribute(String name,Object value);   //使用指定名称将对象绑定到此会话

public Object getAttribute(String name);    //返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null

String[] getValueNames();   //返回一个数组,包含此session中所有可用属性

int getMaxInactiveInteval();    //返回两次请求间隔多长时间此session被取消,单位s

(3)session的生命周期

当客户端第一次访问某一个jsp或Servlet时,服务器会为当前会话创建一个SessionId,每次客户端向服务端发送请求时,都会将此 SessionId携带过去,服务端会对此SessionId进行校验。

活动:某次会话当中通过超链接打开的新页面属于同一次会话;

只要当前会话页面没有全部关闭,重新打开浏览器窗口访问同一项目资源时属于同一次会话;

除非本次会话的所有页面都关闭后再重新访问某个JSP或Servlet,将会创建新的会话。(注意事项:注意原有会话还存在,只是 这个旧的SessionId仍然存在于服务端,只不过再也没有客户端会携带它然后交予服务端校验。除非已经超时,原有会话才会结束)。

(4)session的销毁只有三种方式

  • 调用了session.invalidate()方法;
  • Session过期(超时);
  • 服务器重新启动

(5)小例子

session_page1.jsp

<body>
    <%
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
        Date date=new Date(session.getCreationTime());
        session.setAttribute("username","black");
        session.setAttribute("password","123456");
        session.setAttribute("age",20);
        //设置当前session最大生成期限  单位是s
        //session.setMaxInactiveInterval(10);
        //销毁当前会话,在这里销毁后面的内容都不会显示
        //session.invalidate();
     %>
    <h1>session内置对象</h1> <hr>
    session.set
    session创建时间:<%=sdf.format(date) %><br>
    session的ID编号:<%=session.getId() %><br>
    session中获取用户名:<%=session.getAttribute("username") %><br>
    session中的属性有:
    <% 

        String[] names=session.getValueNames();
        for(String name:names){
            out.println(name+"&nbsp;&nbsp;");
        }
    %>
    <br>
    <br>
    <br>

    <a href="session_page2.jsp" target="_blank">点击跳转到session_page2.jsp</a> 
    <%
        //销毁当前会话
        //session.invalidate();
     %>
  </body>

session_page2.jsp

<body>
    <h1>This is session_page2.</h1> <hr>


    <%
        /*取得的ID编号和session_page1的相同,也能获取page1设置的
        session的属性,说明和session_page1是同一个会话*/ 
    %>
    session的ID编号:<%=session.getId() %><br>
    session获取用户名:<%=session.getAttribute("username") %><br>

  </body>

访问session_page1.jsp
这里写图片描述

点击session_page1.jsp页面中的超链接,跳转到session_page2.jsp
这里写图片描述

4、application对象

(1)application对象简介

  • application对象实现了用户间数据的共享,可存放全局变量

  • application对象开始于服务器的启动,终止于服务器的关闭

  • 在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作

  • 在任何地方对application对象属性的操作,都将影响到其他用户对此的访问

  • 服务器的启动和关闭决定了application对象的生命

  • application对象是ServletContext类的实例

(2)application对象常用方法

public void setAttribute(String name,Object value)     //使用指定名称将对象绑定到此会话

public Object getAttribute(String name)     //返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null

Enumeration getAttributeNames()     //返回所有可用属性名的枚举

String getServerInfo()     //返回JSP/Servlet引擎名及版本号

(3)小例子

  <body>
    <h1>application内置对象</h1>
    <hr>
    <%
        application.setAttribute("place","Shanghai");
        application.setAttribute("email","123421");
        application.setAttribute("phone","832947819");
    %>
         所在城市为:<%=application.getAttribute("place")%><br>
    application中可用的属性有:
    <%
    Enumeration attributes=application.getAttributeNames();
    while(attributes.hasMoreElements()){
        out.println(attributes.nextElement()+"&nbsp;&nbsp;");
    }
    %><br>
    JSP/Servlet的引擎或版本号为:<%=application.getServerInfo() %>
  </body>

页面显示:
这里写图片描述

5、page对象

(1)page对象简介
page对象就是指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。它的常用方法跟Object这个类的常用方法是一样的

(2)常用方法

class.getClass()     //返回此Object的类

int hashCode()     //返回此Object的hash码

boolean equals(Object obj)     //判断此Object是否与指定的Object对象相等

void copy(Object obj)     //将此Object拷贝到指定的Object对象中

Object clone()     //克隆此Object对象

String toString()     //将此Object对象转换成String类的对象

void notify()     //唤醒一个等待的线程

void notifyAll()          //唤醒所有等待的线程

void wait(int timeout)     //使一个线程处于等待直到timeout结束或被唤醒

void wait()     //使一个线程处于等待直到被唤醒

6、pageContext对象

(1)pageContext对象简介

pageContext对象提供了对JSP页面所有的对象及名字空间的访问

pageContext对象可以访问到本页所在的session,也可以取本页面所在的application的某一属性值

pageContext对象相当于页面中所有内容的集大成者

pageContext对象的本类名也叫pageContext

(2)常用方法

JspWriter getOut()     //返回当前客户端响应被使用的JspWriter流(out)

HttpSession getSession()     //返回当前页中的HttpSession对象(session)

Object getPage()     //返回当前页的Object对象(page)

ServletRequest getRequest()     //返回当前类的ServletRequest对象(request)

ServletResponse getResponse()     //返回当前类的ServletResponse对象(response)

void setAttribute(String name,Object attribute)     //设置属性及属性值

Object getAttribute(String name,int scope)     //在指定范围内取属性的值

int getAttributeScope(String name)     //返回某属性的作用范围

void forward(String relativeUrlPath)     //使当前页面重导到另一页面

void include(String relativeUrlPath)     //在当前位置包含另一文件

7、config对象

(1)config对象简介

主要用在Servlet当中,config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)

(2)常用方法

ServletContext getServletContext()     //返回含有服务器相关信息的ServletContext对象

String getInitParameter(String name)     //返回初始化参数的值

Enumeration getInitParameterNames()     //返回Servlet初始化所需所有参数的枚举

8、exception对象

(1)exception对象简介

exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个JSP页面要应用存对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象

(2)常用方法

String getMessage()     //返回描述异常的信息

String toString()     //返回关于异常的简短描述信息

void printStackTrace()     //显示异常及其栈轨迹

Throwable fillInStackTrace()     //重写异常的执行栈轨迹

errorPage="exception.jsp"     //表示当前页面发生异常时交由exception.jsp页面去处理
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值