Jsp 九大内置对象

  • 什么是内置对象?

    JSP 提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较烦琐的事情。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可

  • 四个作用域对象:

  • request对象

    request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。

     // 设置中文编码
    request.setCharacterEncoding("utf-8");
    // 按照参数名称,获取获取请求中的参数值
    request.getParameter("");
    // 根据目标地址,获取RequestDispatcher请求转发对象
    request.getRequestDispatcher("");
    // 在请求转发前,存入KV键值对
    request.setAttribute("key","value");
    // 在请求转发后,根据key获取value
    request.getAttribute("key");
    // 获取当前应用在服务器端的真实路径
    String realPath = request.getRealPath("");
    System.out.println("项目运行时的服务器真实路径:" + realPath);
    //获取项目运行时的应用的访问名称
    String contextPath = request.getContextPath();
    System.out.println("项目运行时的应用的访问名称:" + contextPath);
    //当前请求的方式
    String method = request.getMethod();
    System.out.println("当前请求的方式:" + method);
    // 获取发起本次请求的客户端IP地址
    String remote = request.getRemoteAddr();
    System.out.println("客户端的IP地址:"+remote);
    // 获取服务器本地的IP地址
    String local = request.getLocalAddr();
    System.out.println("服务器的IP地址:"+local);
    
  • session对象

    指的是客户端与服务器的一次会话 , 一次"会话"包含若干次"请求"。从客户连接到服务器的一个 WebApplication 开始 , 直到客户端与服务器断开连接为止 ; 它是 HTTPSession 类的实例 , 作用域为 session ( 会话期 )
    Session会话的生命周期:
    会话开始:客户端的第1次"请求"
    会话结束:1.客户端浏览器关闭;2.客户端超时(Tomcat默认为30分钟);3.服务器关闭;

    // 获取当前Session会话对象
    HttpSession session = request.getSession();
    System.out.println("Session ID: "+session.getId());
    //将当前KV键值对,存入Session会话(服务器端)
    session.setAttribute("key", "value");
    //从当前Session会话中,根据key获取value
    session.getAttribute("key");
    Date creationDateTime = new Date(session.getCreationTime());
    System.out.println("Session 的创建时间:"+creationDateTime);
    Date lastAccessedDateTime = new Date(session.getLastAccessedTime());
    System.out.println("本次会话最后一次访问时间:" + lastAccessedDateTime);
    //使用Session保存访问次数
    HttpSession session = request.getSession();
    int count = 0;
    if (session.getAttribute("count") != null) {
        // 获取之前存储的数值
        count = Integer.parseInt(session.getAttribute("count").toString());
        // 重新保存
        session.setAttribute("count", ++count);
    }else {
        // 第一次保存
        session.setAttribute("count", ++count);
    }
    //设置中文编码
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out = response.getWriter();
    out.print("您的访问次数为:<strong>"+session.getAttribute("count")+"</strong>");
    
  • application对象

    实现了用户间数据的共享 , 可存放全局变量 ; 它开始于服务器的启动 , 直到服务器的关闭 , 在此期间 , 此对象将一直存在 ; 这样在用户的前后连接或不同用户之间的连接中 , 可以对此对象的同一属性进行操作 ; 在任何地方对此对象属性的操作 , 都将影响到其他用户对此的访问 ; 服务器的启动和关闭决定了 application 对象的生命 ; 它是 ServletContext 类的实例。

     //使用application对象保存访问次数
    ServletContext application = request.getServletContext();
    int count = 0;
    if (application.getAttribute("count") != null) {
        // 获取之前存储的数值
        count = Integer.parseInt(application.getAttribute("count").toString());
        // 重新保存
        application.setAttribute("count", ++count);
    } else {
        // 第一次保存
        application.setAttribute("count", ++count);
    }
    //获取application应用的真实路径
    String realPath = application.getRealPath("");
    System.out.println("应用真实路径:" + realPath);
    //获取应用访问名称
    System.out.println("应用访问名称:" + application.getContextPath());
    //获取ession超时时间
    System.out.println("Session超时时间:" + application.getSessionTimeout());
    
  • pageContext 对象

    提供了对 JSP 页面内所有的对象及名字空间的访问 , 也就是说他可以访问到本页所在的 session , 也可以取本页面所在的 application 的某一属性值 , pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。

       // 将KV键值对,存入"pageContext"页面"范围内
      pageContext.setAttribute("key", "value");
    
  • 五个其它内置对象:

  • config 对象

    config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。

  • out对象:

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

        PrintWriter out = response.getWriter();
        out.print("<script>");
        out.print(" alert('修改成功');");
        out.print(" location='list_product.jsp';");
        out.print("</script>");
    
  • response 对象:

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

    //处理响应过程中的中文乱码
    response.setContentType("text/html;charset=utf-8");
    //获取响应输出对象
    PrintWriter out = response.getWriter();
    //重定向客户端的请求
    response.sendRedirect("product.html");
    
  • page 对象

    page 对象代表JSP本身,只有在 JSP 页面内才是合法的。 page 对象本质上是包含当前 Servlet 接口引用的变量,可以看作是 this 关键字的别名

  • exception 异常对象

    exception 对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置 isErrorPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。exception对象几乎定义了所有异常情况,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中定义的错误页面中,然后在错误页面中处理相应的exception对象。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358