JSP内建对象及其实例讲解

JSP内建对象及其实例讲解

1.内建对象的介绍

  JSP里有以下的内部对象:

 

  • request 对象
  • response 对象
  • pageContext 对象
  • session 对象
  • application 对象
  • out 对象
  • config 对象
  • page 对象
  • exception 对象
    九个内置对象。

 

1.1 out

   out 对象被封装成 javax.servlet.jsp.JspWriter 接口。它表示为客户打开输出流,PrintWriter 使用它向客户端发送输去流。它主要用来向客户端输出数据。

   主要的方法有:

 

  • out.print(type)、out.println(type) 输出类型的值
  • out.newLine() 输出一个换行字符。
  • out.flush()   输出缓冲区里的数据。
  • out.close()   关闭输出流
  • out.clearBuffer() 清除缓冲区里的数据,并把数据输出到客户端
  • out.clear()   清除缓冲区里的数据,但不会把数据输出到客户端
  • out.getBufferSize() 获得缓冲区的大小
  • out.getRemaining()  获得缓冲区中没有被占用的空间的大小

     

     

  • out.isAutoFlush() 返回布尔值。如果AutoFlush为真,则返回true;反之,返回false。
1.2 request

 

    request 对象代表请求对象,他被包装成HttpServetRequest接口。通过getParameter方法可以得到request的参数,通过GET、POST、HEAD等方法可以得到request的类型,通过Cookies、referer等可以得到请求的Http头。

    来自客户端的请求经Servlet容器处理后,有request对象进行封装。它作为jspService()方法的一个参数由容器传递给JSP页面。

主要方法有:

 

  • isUserInRole(String role):判断认证的用户是否属于逻辑的role中的成员。
  • getAttribute(String name):返回由name指定的属性值,如果指定的属性不存在,则会返回一个null值。
  • getAtrributeNames():返回request对象的所有属性的名字集合,其结果是一个枚举的实例。
  • getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组。
  • getCharacterEncoding():返回请求中的字符编码方式。
  • getContentLength():方法请求的Body的长度,如果不确定长度,返回-1。
  • getHeader(String name):获得Http协议定义的文件头信息。
  • getHeaders(String name):返回指定名字的request Header的所有值,其结果是一个枚举的实例。
  • getHeaderNames():返回所有request Header的名字,其结果是一个枚举的实例。
  • getInputStream():返回请求的输入流,用于获得请求中的数据。
  • getMethod():获取客户端向服务器端传送数据的方法,如:get、post、header、trace等。
  • getParameter(String name):获取客户端传送服务区的参数值,该参数是由Name指定的,通常是表单中的参数。
  • getParameterNames():获得客户端传送到服务器端的所有参数参数的名字,其结果是一个枚举实例。
  • getParameterValues(String name):获取指定参数的所有值,参数有name指定。
  • getProtocol():获取客户端向服务器端传送数据所依存的协议名称。
  • getQueryString():获取查询字符串,该字符串是由客户端以Get方法向服务器端传送的。
  • getRequestURI():获取发出请字符串的客户端地址、
  • getRomteAddr():获取客户端的IP地址。
  • getRomteHost():获取客户端的名称。
  • getSession([Boolean create]):返回和请求相关的session。create参数四可选的。当有参数create且这个参数为True时,如果客户端还没有创建session,那么就创建一个Session。
  • getServerName():获取服务器的名字。
  • getServletPath():获取客户端所请求的脚本文件的文件路径。
  • getServerPort():获取服务器的端口号。
  • removeAttribute(String name):删除请求中的一个属性。
  • setAttribute(String name,java.lang.Object objt):设置名字为name的request参数的值。

     

     

 

1.3 response

    response 被包装成HttpServletResponse 接口。它封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。和request一样,他由容器产生,作为jspService()方法的参数被传入JSP。因为输出流是缓冲的,所以可以设置Http状态码和response头。

   response 对象的主要方法有:

 

  • addCookies(Cookies cookies):添加一个Cookies对象,用来保存客户端的用户信息。
  • addHeader(String name,String value):添加Http文件头信息,该Header将传到客户端去,如果已经存在同名的Header,就覆盖。
  • containsHeader(String name):判断是不是存在名字为 name 的Http文件头,返回Boolean型。
  • encodeURL():使用SessionId来封装URL,如不必封装就返回原值。
  • flushBuffer():强制把当前缓冲区的内容发送到客户端。
  • getBufferSize():返回缓冲区的大小。
  • getOutputStream():返回到客户端的输出流对象。
  • sendError(int):向客户端发送错误信息。
  • sendRedirect(String localtion):把响应请求发送到另外一个位置进行处理。
  • setContentType(String contentType):设置响应的MIME类型。
  • setHeader(String name,String value):设置指定名字的Http文件头的值,如果该值已经存在,则新值会覆盖旧值。
例程:在response中使用Cookies的例子(reponse.jsp)

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="javax.servlet.http.Cookie" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

String userName="starxing";

Cookie[] cookie = request.getCookies();

Cookie cookie_reponse = null;

List list = Arrays.asList(cookie);

Iterator it=list.iterator();

while(it.hasNext())

{

   Cookie temp =(Cookie)it.next();

   if(temp.getName().equals(userName+"_access_time"))

   {

      cookie_reponse=temp;

      break;

   }

}

out.println("当前时间为:" + new Date()+"<BR>");

if(cookie_reponse!=null)

{

   out.println("上一次访问时间:" + cookie_reponse.getValue());

   cookie_reponse.setValue(new Date().toString());

}

else

{

   cookie_reponse = new Cookie(userName + "_access_time",new Date().toString());

}

response.addCookie(cookie_reponse);

response.setContentType("text/html");

response.flushBuffer();

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'reponse.jsp' starting page</title>

   

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

   

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

  </head>

 

  <body>

   

  </body>

</html>

1.4 session

    session 对象用来保存每个用户信息,以便跟踪每个用户的操作状态。其中Session信息保存在容器里,session的ID保存在客户机的Cookies中,在很多服务器上,如果浏览器支持Cookies的话,就直接使用Cookies,如果不支持或者废除了Cookies的话,就自动转化为URL-rewriting(重写URL,这个URL包含客户端的信息),session自动为每个流程提供了方便的存储信息的方法。

    session在系统退出后自动消失,session对应HttpSession接口。

   session对象的主要方法有:

 

  • getAttribute(String name):获得与指定名字name相联系的属性。
  • getAttributeNames():返回session对象存储的每一个属性对象,其结果为枚举类型。
  • getCreateionTime():返回Session创建时间,最小单位为千分之一秒。
  • getId():返回唯一的标识,每个session的ID是不用的。
  • getLastAccessedTime():返回和当前session对象相关的客户端最后发送请求的时间,最小单位为千分之一秒。
  • getMaxInactiveInterval():返回总时间(秒),负值标识session永远不会超时。该值为session的生存时间。
  • invalidate():销毁session。
  • isNew():如果客户端不接受使用session,那么没有请求中都会产生一个session对象。
  • removeAttribute(String name):删除与指定name相联系的属性。
  • setAttribute(String name,Object value):设置name的属性值为value,并存储到session对象中。
   session对象和客户端的会话紧密联系在一起的,他有容器自动创建。

 

例程:

用户登录是填写的表单(session_login.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <title>session_login.html</title>

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

        <meta http-equiv="description" content="this is my page">

        <meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

    </head>

    <body>

    <form method=post action="check_login.jsp">

        <table>

            <tr>

                <td>

                    name:

                </td>

                <td>

                    <input type=text >

                </td>

            </tr>

            <tr>

                <td>

                    password:

                </td>

                <td>

                    <input type=text >

                </td>

            </tr>

            <tr colspan=2>

                <td>

                    登录类型:

                    <input type=radio value=manager Checked>

                    管理员

                    <input type=radio value=user>

                    普通用户

                </td>

            </tr>

            <tr colspan=2>

                <td>

                    <input type=submit value=login>

                </td>

            </tr>

        </table>

    </form>

    </body>

</html>

验证的过程(check_login.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'check_login.jsp' starting page</title>

   

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

   

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

  </head>

 

  <body>

    <%

       String name");

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

       String type = request.getParameter("type");

       out.print(name+"<BR>"+password+"<BR>"+type);

       if(name.equals("starxing"))

       {

          session.setAttribute("name",name);

          session.setAttribute("type",type);

          response.sendRedirect("loginsucess.jsp");

       }

       else

       {

          response.sendRedirect("session_login.html");

       }

    %>

  </body>

</html>

loginsucess.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'loginsuccess.jsp' starting page</title>

   

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

   

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

  </head>

 

  <body>

   <BR>

   <HR>

   <%=session.getAttribute("name")%>

   <%

      if(session.getAttribute("type").equals("manager"))

      {

    %>

     <A href="manager.jsp">进入管理界面</A>

    <%

      }

      else

      {

     %>

     <A href="user.jsp">进入用户界面</A>

     <%

      }

   %>

  </body>

</html>

1.5 pageContext

    pageContext 对象被封装成javax.servlet.jsp.pageContext接口,它为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中已命名对象的访问。它的创建和初始化都是由容器来完成的,JSP页面力可以直接使用 pageContext 对象的句柄。pageContext 对象的getXXX()、setXXX()和findXXX()方法可以用来根据不同的对象范围实现对对这些对象的管理。pageContext对象主要是管理对属于JSP特殊可见部分中已经命名对象访问。他的创建和初始化通常对JSP程序员是透明的,JSP程序员可以从JSP中获取到用来代表 pageContext 对象的句柄,因此也就可以使用 pageContext 对象的各种API。

   pageContext对象常用方法:

  • foward(String relativeUrlPath):把页面重定向到另外一个页面或者Servlet组件上。
  • getAttribute(String name[,int scope]):sope参数是可选的。该方法用来检索一个特定的已经命名的对象的范围,并且还可以通过调用getAttributeNamesScope()方法,检索第某个特定范围的每个属性String字符串名字的枚举。
  • getException():返回当前的Exception对象。
  • getRequest():返回当前的request对象。
  • getResponse():返回当前的Response对象。
  • getServletConfig():返回当前页面的servletConfig对象。
  • getservletContext():返回servletContext对象。
  • getSession():返回当前页面的Session对象。
  • findAttribute():方法则是可以用来按照页面、请求、会话已经应用程序范围的顺序实现对某个已命名属性的搜索。
  • setAttribute():用来设置默认页面范围或特定范围之中的已命名对象。
  • removeAttribute():用来删除默认页面范围或特定范围之中的已命名对象。

 

    例程:(pagecontext_form.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>pagecontext_form.html</title>

   

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="this is my page">

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

   

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

   

  </head>

 

  <body>

    <FORM method="post" action="pagecontext1.jsp">

       <TABLE>

          <TR><td>name:</td>

          <td><input type="text" ></TD>

          </TR>

          <TR colspan=2>

          <TD><input type="submit" value="login">

          </TD></TR>

       </TABLE>

    </FORM>

  </body>

</html>

pagecontext1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="javax.servlet.Servlet" %>

<%@ page import="javax.servlet.jsp.PageContext" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'pagecontext1.jsp' starting page</title>

   

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

   

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

  </head>

 

  <body>

     pageContext 的测试页面-在pagecontext中这一一些属性。<br>

    <%

    ServletRequest reg = pageContext.getRequest();

    String name");

    out.println("+ name + "<BR>");

    pageContext.setAttribute("userName",name);

    pageContext.getServletContext().setAttribute("sharevalue","多个页面共享的值!");

    pageContext.getSession().setAttribute("sessionvalue","只能在Session中才能共享的值!");

    out.println("<BR>pageContext.getAttribute('userName'):");

    %>

    <A href="./ch4/pagecontext2.jsp">next--> </A><BR>

    以下是这个页面的代码:<BR>

    <FONT color="red">

    ServletRequest reg = pageContext.getRequest();

    String name");

    out.println("+ name + "<BR>");

    pageContext.setAttribute("userName",name);

    pageContext.getServletContext().setAttribute("sharevalue","多个页面共享的值!");

    pageContext.getSession().setAttribute("sessionvalue","只能在Session中才能共享的值!");

    out.println("<BR>pageContext.getAttribute('userName'):");

    </FONT>

    <%

   

    %>

  </body>

</html>

pagecontext2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'pagecontext2..jsp' starting page</title>

   

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

   

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

  </head>

 

  <body>

    pageContext 的测试页面-获得前一个页面设置的值:<BR>

    <%

    out.println("<BR>pageContext.getAttribute('userName')");

    out.println(pageContext.getAttribute("userName"));

    out.println("<BR>pageContext.getSession().getAttribute('sessionValue')");

    out.println(pageContext.getSession().getAttribute("sessionvalue"));

    out.println("<BR>pageContext.getServletContext().getAttribute('shareValue')");

    out.println(pageContext.getServletContext().getAttribute("sharevalue"));

   

    %>

  </body>

</html>

1.6 application

    application 对象为多个应用程序保存信息的,对于一个容器来言,每个用户都共同使用一个application 对象,这个和session对象不一样的。服务器启动之后,就会自动创建application对于对象,知道服务器关闭位置。

1.7 config

  config 对象被封装成javax.servlet.ServletConfig 接口,他表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递这个Servlet。

  常用的方法有:

  • getServletContext():返回执行者的Servlet上下文。
  • getServletName():返回Servlet的名字。
  • getInitParameter(String name):返回名字为name的初始参数值。
  • getInitParameterNames():返回这个JSP的所有参数的名字。

 

例程:更新计数器(config.jsp)

 

1.8 page

    page 对象是 java.lang.Object 类的一个实例。他指的是JSP实现类的实例,也就是说他是JSP本身。

1.9 exception

   exception 对象是 java.lang.Throwable 类的一个实例。他指的是运行时的异常。

 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值