JSP内置对象

jsp内置对象分类

JSP内置对象_第1张图片

将这9个对象分为如下4类

1、与servlet有关的内置对象                  page 和config两个对象

2、与Input/Output有关的内置对象         out、request、response

3、与Context有关的内置对象                 session、application、pageContext

4、与Error有关的内置对象                      expection

jsp属性保存范围

在jsp中可以通过setAttribute()和getAttribute()这两个方法来设置和取得属性,从而实现数据的共享。在jsp中提供了4种属性保存的范围,分别为page、request、session、application

page范围

设置的属性在当前页面有效,通过pageContext的setAttribute()方法来设置,并通过getAttribute()方法来取得属性

  <% pageContext.setAttribute("name","James");%><br>
    <%
       out.print(pageContext.getAttribute("name"));
     %>
注意:如果给setAttribute()这个方法传一个参数的话,取的时候会得到一个null
request 范围

所谓request范围,就是在一次请求的范围有效。如果页面从一个页面跳转到另一个页面,那么该属性就失效了

。这里所说的跳转是客户端的跳转,比如客户端单击超链接跳转到其他页面,或者通过浏览器地址浏览其他的页面。如果服务器端使用<jsp:forward>,则该属性仍然有效。通过使用request的setAttribute()方法来设置属性,并通过request的getAttribute()方法来取得属性

session范围

是指客户端的浏览器与服务器一次会话范围,如果和服务器断开连接,那么这个属性也就失效了,通过session的setAttribute()方法来设置属性并通过session的getAttribute()方法来取得属性

index.jsp

       <% session.setAttribute("name","James");%><br>
    <a href="index2.jsp">点击会跳转到index2</a>
index2.jsp

 <% out.println(session.getAttribute("name")); %>
无论是客户端的跳转还是服务器端的跳转,都能过够获得session范围的属性,但是如果重新打开浏览器,就不能获得session的范围属性了

application范围
所谓application范围,也就是整个服务器端的范围,知道服务器停止以后才会失效,通过application的setAttribute()方法来设置属性,并通过application的getAttribute()方法来取得属性

       <% application.setAttribute("name","James");%><br>
    <a href="index2.jsp">点击会跳转到index2</a>
取得属性

  <% out.println(application.getAttribute("name")); %>
移除属性

只需调用响应对象的removeAttribute()方法就可以移除指定的属性

    <% pageContext.setAttribute("name","James");
          pageContext.setAttribute("sex","男");
          pageContext.setAttribute("age","24");
       %><br>
       <%
          pageContext.removeAttribute("sex");
        %>
       <%
          out.println(pageContext.getAttribute("name"));
          out.println(pageContext.getAttribute("sex"));
           out.println(pageContext.getAttribute("age"));
        %>
会输出 james  null  24
Request对象

Request对象不但可以用来设置和取得request范围,还可以用来获得客户端的请求参数、请求的来源、表头、cookies等

1、获得请求参数的方法

JSP内置对象_第2张图片

     <form action="index2.jsp">
       用户名:<input type="text" name="username">
       <input type="submit" value="提交">
     </form>

取得参数

<% out.println(request.getParameter("username")); %>
要解决乱码只需通过jsp对象的setCharacterEncoding()方法来设置参数的编码格式,同时必须为表单指定提交的方式

2、获得所有参数的名字

    <form action="index2.jsp" method="post">
       用户名:<input type="text" name="username">
        密码:<input type="text" name="userpas">
       <input type="submit" value="提交">
     </form>
取得所有参数

  <%request.setCharacterEncoding("gb2312"); %>
    <% Enumeration b=request.getParameterNames();%>
    <%  
    while(b.hasMoreElements()){
    out.println(b.nextElement()); 
    }
    %>
3、获得封装所有参数的map
可以通过request对象的getParameterMap()方法来获得封装所有参数值Map对象

  <form action="index2.jsp" method="post">
       用户名:<input type="text" name="username">
        密码:<input type="text" name="userpas">
        喜欢的运动:<input type="checkbox" name="sport" value="乒乓球">乒乓球
        <input type="checkbox" name="sport" value="羽毛球">羽毛球
        <input type="checkbox" name="sport" value="足球">足球
       <input type="submit" value="提交">
     </form>
获取属性

    <% Map mm=request.getParameterMap();
    String[] struser=(String[])mm.get("username");
    out.println(struser[0]);
    %>
request对象的其他方法

JSP内置对象_第3张图片

Response对象
response对象用来个客户端传送输出信息。response对象包含的方法

JSP内置对象_第4张图片

1、实现页面跳转

可以通过response对象的sendRedirect()方法设置页面重定向,从而实现页面跳转。这种跳转将会改变浏览器的url地址

<% response.sendRedirect("index2.jsp");%>

页面会直接跳到index2.jsp而且浏览器的地址也会变

2、实现页面自动刷新

实现的是每个一秒页面刷新一次

   <% 
          
          out.print(a++);
          response.addIntHeader("Refresh",1);
       %>
3、实现页面自动跳转

实现的是隔了10秒之后页面自动跳转到百度首页

<span style="font-size:24px;">  <% 
          response.setHeader("Refresh","10;URL=http://www.baidu.com");
       %></span>

Out对象

JSP内置对象_第5张图片

1、使用out对象求得缓冲区使用大小

通过out对象的getBufferSize()方法可以获得缓冲区的大小

<% 
          int all=out.getBufferSize();   //获得缓冲区的大小
          int remain=out.getRemaining();   //获得剩余缓冲区的大小
          int  use=all-remain;
          out.print(use);
       %>
Session对象

用来表示用户的会话状况,一般用于保存用户的各种信息,直到生命周期超时或者被认为释放掉为止

JSP内置对象_第6张图片
1、设置并获得session生命周期

     <% 
         session.setMaxInactiveInterval(60*2);         //设置session的生命周期为120秒
         out.print(session.getMaxInactiveInterval());   //获取session的生命周期
       %>
2、获得session的其他信息

<% 
           long createTime=session.getCreationTime();//获得session生成的时间
           out.println(createTime);
           String id=session.getId();   //获取session的id
           out.println(id);
       %>
Application对象

用来取得和设置sevlet的相关信息。application对象的生命周期是从服务器启动产生直到服务器关闭

     <% 
        pageContext.setAttribute("name","page_james");//设置page范围name属性
        request.setAttribute("name","request_james");//设置request范围name属性
        session.setAttribute("name","session_james");//设置session范围name属性
             application.setAttribute("name","application_james");//设置session范围name属性
     %>
     <%
           String pageStr=(String)pageContext.getAttribute("name",pageContext.PAGE_SCOPE);
           String requestStr=(String)pageContext.getAttribute("name",pageContext.REQUEST_SCOPE);
           String sessionStr=(String)pageContext.getAttribute("name",pageContext.SESSION_SCOPE);
           String applicationStr=(String)pageContext.getAttribute("name",pageContext.APPLICATION_SCOPE);
      %>
      <%="page范围:name属性值"+pageStr %><br>
      <%="request范围 name属性"+requestStr %><br>
      <%="session范围 name属性" +sessionStr%><br>
      <%="application  name属性" +applicationStr%>
config 对象



你可能感兴趣的:(JSP内置对象)