JSP其余内置对象及四大范围对象的使用
Posted 夜月薇凉映银弩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:异常对象
以上是关于JSP其余内置对象及四大范围对象的使用的主要内容,如果未能解决你的问题,请参考以下文章