码迷,mamicode.com
首页 > Web开发 > 详细

JSP其余内置对象及四大范围对象的使用

时间:2020-01-16 01:16:25      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:head   信息   内置对象   设置   std   自己   bsp   pre   运行   

一、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:异常对象

JSP其余内置对象及四大范围对象的使用

标签:head   信息   内置对象   设置   std   自己   bsp   pre   运行   

原文地址:https://www.cnblogs.com/yeyueweiliang/p/12199238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!