【转】比较page、request、session、application的使用范围
(1)直接在web contain中进行对象的实例化。
内置对象 |
类型 |
作用域 |
pageContext |
javax.servlet.jsp.pageContext |
page |
request |
javax.servlet.http.HttpServletRequest |
request |
response |
javax.servlet.http.HttpServletResponse |
page |
session |
javax.servlet.http.HttpSession |
session |
application |
javax.servlet.ServletContext |
application |
config |
javax.servlet.ServletConfig |
page |
out |
java.servlet.jsp.JspWriter |
page |
page |
java.lang.Object |
page |
exception |
java.lang.Throwable |
page |
(2)jsp内置对象分类
与servlet有关的隐含对象:page,config
与input/output有关的隐含对象:out,request,response
与jsp执行时有关的context的隐含对象:session,application,pageContext
与error有关的隐含对象:exception
(3)属性的设置和取得
设置属性:public void setAttribute(String name,Object.value)
取得属性:public void getAttribute(String name)
(4)四种属性保存范围
在一个页面范围内:page
在一次服务器请求范围内:request
在一次会话范围内:session
在一个应用服务器范围内:application
(5)page范围
Page范围通过PageContext对象来设置,将属性保存在一次请求范围之内,必须使用服务器端跳转<jsp:forward/>
(6)session范围
只保留一个用户的信息
(7)application范围
所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。
Application,session,request都需要跨多个页,属性保存时内存开销大。如果能使用request就不适用session,能使用session的就不要使用application。
(8)pageContext默认情况下表示一个页面的保存范围
public void setAttribute(String name,Object value,int scope)
public static final int APPLICATION_SCOPE:application范围
public static final int SESSION_SCOPE:session范围
public static final int REQUEST_SCOPE:request范围
public static final int PAGE_SCOPE:page范围
四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session,request范围
session对象
(1)session功能
Session对象主要用于保存用户的各种信息,直到它的生命周期超过或被人为释放掉为止,可以通过session对象来判断此用户是否是合法用户。
Session对象是javax.Servlet.http.HttpSession接口的实例化对象,session属于http协议范畴之内的对象,所以只有唯一http包下有此接口,没有任何继承关系,用户只要一连接到服务器,则立刻分配一个session给用户。
(2)主要方法
session.getID():服务器上通过session来分别不同的用户,sessionID:任何链接到服务器上的用户,服务器都会为之分配唯一的一个不会重复的sessionID。由服务器统一管理,人为不能控制。
session.getId().length():id的长度为32位
session.isNew():判断是否是新的用户
session.invalidate():使session失效
session.getCreationTime():得到session的创建时间,返回long类型,通过Date得到时间
session.getLastAccessedTime():得到最后一次操作时间,返回long类型
实例:
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*"%>
<%
long l = session.getCreationTime() ;
long l2 = session.getLastAccessedTime() ;
%>
<h1>session CREATE : <%=new Date(l)%></h1>
<h1>session last access: <%=new Date(l2)%></h1>
<h1><%=(l2-l)/1000%></h1>
假如需要求出用户在线时间,使用以下公式:最后操作时间—创建的时间
(3)session属性的设置
session.setAttribute(String name,Object value)
session.getAttribute(String name)
session.removeAttribute(String name)
(4)两种写法的区别
if(name.equals("mldn")&&pass.equals("password")):假如其中的name和pass没有被初始化,那么在执行此句子的时候会出现nullpointexception。
if("mldn".equals(name)&&"password".equals(pass)):如果使用该写法则不会出现错误。
(5)session用法:验证用户是否登陆。
(6)session与cookie
Session和cookie用于跨网页共享数据。Session记录独有的个人信息,在不同页面中传递,使用setAttribute,getAttribute方法;Cookie保存于客户端,供浏览器与web服务器互通数据用的纯文字文件,当ie执行的时候会在计算机中产生一个cookie。Session比cookie更安全,session比cookie更占用资源,session使用了cookie的机制,如果cookie被禁用,则session也无法使用。
application与config对象
(1)application简介
Application对象主要的作用就是保存公共信息,属于javax。Servlet。ServletContext,此工作目录的路径不是固定的,有可能此工作目录在c盘上或是在d盘得到的工作目录的真实路径。Application是在整个服务器中保持的只有一个实例的对象。
(2)属性操作: setAttribute(),getAttribute(),removeAttribute()
(3)真实路径: application.getRealPath(String path),其中String path是"/"。在实际使用中用getServletContext()方法代替application。格式如下:
getServletContext().getRealPath("/")
this.getServletContext.getRealPath("/")
(4)Jsp安全性Config对象
(a) 在j2ee中安全性体现在工作目录的WEB-INF文件夹,页面保存在此文件夹下,外面无法发现此文件夹内的文件,如果要使此文件夹内的文件能被用户访问,则修改WEB-INF文件夹下存在的web.xml文件,web.xml文件属于整个web站点的配置文件。
<……mapping start>
<servlet>
<servlet-name></servlet-name>
<jsp-file></jsp-file>
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern>/浏览器中输入的地址</url-pattern>
</servlet-mapping>
<……mapping end>
修改web.xml之后重启服务器。
(b)config对象
Config对象一般用来取得服务器的初始化配置参数,若要使用此对象应在WEB-INF/web.xml之中配置。Config对象在javax.Servlet.servletConfig中取得初始化参数的方法:
public string getInitParameter(String name)
通过此种功能,可以将数据库链接的一些信息写在配置文件之中,下面两种方法类似,是取得全部配置参数的:
public Enumeration getInitParameterNames()
request.getParameterNames()
转载于:https://www.cnblogs.com/janeaiai/p/5015620.html
【转】比较page、request、session、application的使用范围相关推荐
- 观看慕课老师milanlover视频JavaBean+Jsp动作元素+page/request/session/application作用域范围+Model1
Javabeans类写在src包里. 建一个实体类的po包,建一个用户类. 使用普通方式创建javabean实例: 新建Users.java: package com.po; /*用户类*/ publ ...
- JSP之四大作用域(pageContext,request,session,application)
JSP的四大作用域的存储和获取数据的方式一样,差别在于取值的范围不同. 四大域各自作用范围为: pageContext:当前JSP页面有效 request:请求有效 session:会话有效(关闭浏览 ...
- 暑期项目经验(九) -- request session application
request.session.application 一.基础知识 可以看看 浅谈:request,session,application (http://blog.csdn.net/hzc543 ...
- 通过ActionContext获取request session application 以及ActionContext的简单解析
ActionContext:action的上下文对象. 获取application : // 获取ActionContext对象 是action的上下文对象 ActionContext actionC ...
- 对request,session,application作用域形象理解
看到一篇比较有意思的文章,分享一下.原网址:http://blog.csdn.net/rushkid02/article/details/8063792 几乎所有的Web开发语言都支持Session功 ...
- 网页计数器 javabean session application 多种方法实现
运用session,javabean,servlet实现网页计数器 目录 一.运行结果 二.原理 1.session 2.Javabean 但是有个小问题 3.application 三.代码分享 ...
- django Sometimes request.session.session_key is None
参考 https://stackoverflow.com/questions/39181655/sometimes-request-session-session-key-is-none 加入 一句 ...
- request,response,session,application,out对象的常用调用的函数
1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 序号 方 法 说 明 1 objec ...
- java中使用request,application,session,cookie对象
导入包: import javax.servlet.ServletContext; import javax.servlet.http.Cookie; import javax.servlet.htt ...
最新文章
- 机器学习模型部署都有哪些坑?
- [jstips]向数组中插入一个元素
- java如何写安卓接口文档_android、java制作sdk以及自动生成文档
- MongoDB数据库操作---mongoose操作
- 2.2 清除标注错误的数据
- Vue.js 与 ActiveX 控件
- 拓端tecdat|基于keras平台CNN神经网络模型的服装识别分析
- 作为测试人员,不要说有错误,要说有什么错误
- UNIX环境高级编程 学习笔记 第十八章 终端I/O
- 选哪个:游戏开发和传统软件开发?
- 计算机在信息处理中的作品用,计算机信息处理技术在办公自动化中的运用
- Python 模拟登录知乎
- JWT、JWE、JWS 、JWK 到底是什么?该用 JWT 还是 JWS?
- 今日头条(java后台开发)——实习生面试
- linux6.5安装中文字体,Linux(CentOS6.5)系统安装Windows字体
- NPOI导出EXCEL 打印设置分页及打印标题
- RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name的解决方法
- 每秒处理10万高并发订单支付系统架构
- win7产生大量evtx文件_Windows XML Event Log (EVTX)单条日志清除(四)——通过注入获取日志文件句柄删除当前系统单条日志记录...
- OTA本质与实现流程分析