zoukankan      html  css  js  c++  java
  • JSP其余内置对象及四大范围对象的使用

    一、application

    String getContextPath():获取虚拟路径
    String getRealPath():获取虚拟路径对应的绝对路径

    实例

    application.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
           <%="当前目录的虚拟路径:"+application.getContextPath()+"<br/>" %>
           <%="当前虚拟路径"+application.getContextPath()+"对应的绝对路径:"+"<br/>"+application.getRealPath(application.getContextPath()) %>
    </body>
    </html>

    下面是测试截图

    /Myjsp为默认的路径,可以自己修改

     进行添加虚拟路径即可

     

     二、四大范围对象
     pageContext:JSP页面容器(page对象) ,当前页面有效(跳转页面无效)
     request:请求对象,同一次请求有效(请求转发有效,重定向无效)
     session:会话对象,同一次会话有效(换浏览器无效)
     application:全局对象,全局有效(整个项目运行期间有效,切换浏览器依然有效,
    重启Tomcat就无效)
     以上四个对象共有的方法
     Object getAttribute(String name):根据属性名,或者属性值。
     void setAttribute(String name,Object obj):设置属性值(新增,修改)。
      //如果name对象之前不存在,则创建一个name对象,并将obj的值赋给name。
      //如果name对象之前存在,则将name的值改为obj。
     void removeAttribute(String name):根据属性名,删除对象

    1、pageContext实例

    pageContext.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
           <%
              //创建name对象
              pageContext.setAttribute("name", "zzw");
              //在控制台打印name的值
              System.out.println(pageContext.getAttribute("name"));
              request.getRequestDispatcher("pc1.jsp").forward(request, response);
           %>
    </body>
    </html>

    pc1.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
            <%
               //在控制台打印页面跳转后的name值
               System.out.println(pageContext.getAttribute("name"));
            %>
    </body>
    </html>

     在跳转后name值为null,说明pageContext旨在当前页面有效

    2、request实例

    request.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
           <%
              //创建name对象
              request.setAttribute("name", "zzw");
              //在控制台打印name的值
              System.out.println(request.getAttribute("name"));
              //请求转发语句
              //request.getRequestDispatcher("rq1.jsp").forward(request, response);
              //重定向语句
              response.sendRedirect("rq1.jsp");
           %>
    </body>
    </html>

    rq1.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
            <%
               //在控制台打印页面跳转后的name值
               System.out.println(request.getAttribute("name"));
            %>
    </body>
    </html>

    使用请求转发语句进行页面跳转

     使用重定向进行页面跳转

     通过上述测试可以得出结果,同一次请求有效(请求转发有效,重定向无效)

    3、session实例

    session.jsp

    ss1.jsp

     在同一浏览器的不同页面打开都有效

     换用Chrome后,name值为null,说明失效

    session在同一次会话中有效。

    4、application实例

    application.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
             <%
              //创建name对象
              application.setAttribute("name", "zzw");
              //在浏览器打印name的值
              out.print(application.getAttribute("name"));
              //请求转发语句
              //request.getRequestDispatcher("al1.jsp").forward(request, response);
              //重定向语句
              response.sendRedirect("al1.jsp");
           %>
    </body>
    </html>

    al1.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
            al1.jsp<br/>
            <%
               //在浏览器打印页面跳转后的name值
               out.print(application.getAttribute("name"));
            %>
    </body>
    </html>

     在Firefox有效

     换用Chrome依然有效,说明application是全局有效。(整个项目运行期间有效,切换浏览器依然有效)

     重启Tomcat就无效。

     
     以上的四个对象
     1、通过setAttribute()来保存,通过getAttribute()获得
     2、上述范围对象,尽量使用最小的范围 ,因为对象的范围越大,造成的损耗越大

    三、其余jsp内置对象

     1、config:配置对象(服务器配置信息)
     2、 pageContext:JSP页面容器
     3、page:当前JSP页面对象(相当于java中的this)
     4 、exception:异常对象

  • 相关阅读:
    mysql 语句的查询过程解析
    postman 百度网盘下载 64位
    java 读取文内容(text,html)
    java把Word文件转成html的字符串返回出去
    spring boot 2.X上传文件限制大小
    nginx 做反向代理
    Linux下安装Redis
    微信小程序云开发个人博客项目实战(2)---引入-Vant-Weapp-小程序-UI-组件库
    微信小程序云开发个人博客项目实战(1)- 准备工作及引入 Vant Weapp 小程序 UI 组件库
    Video 视频播放防作弊和禁止下载
  • 原文地址:https://www.cnblogs.com/yeyueweiliang/p/12199238.html
Copyright © 2011-2022 走看看