比较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()
比较page、request、session、application的使用范围(转自用)的更多相关文章
- page,request,session,application四个域对象的使用及区别
转自:page,request,session,application四个域对象的使用及区别 1.page指当前页面.只在一个jsp页面里有效 .2.request 指从http请求到服务器处理结束, ...
- java web作用域page request session application
转载自:http://blog.csdn.net/wyd458549392147/article/details/6944481 1.page指当前页面.只在一个jsp页面里有效 . 2.reques ...
- JSP属性的四种保存范围(page request session application)
JSP提供了四种属性的保存范围,分别为page.request.session.application 其对应的类型分别为:PageContext.ServletRequest.HttpSession ...
- request, session, application辨析(待更新)
作用域 request < session < application 分析 1. request 只在一次请求中有效,当请求发送变化时,信息将失效. 2. session 在当前一次会话 ...
- Struts2里如何取得request,session,application
第一种:取得MAP类型的request,session,application在java文件里写 package com.xjtu.st; import java.util.Map; import c ...
- request,session,application
JSP 的3个内置对象request,session,application,其实都有一个作用域,这些对象内部有一个Map成员用于存放数据,比如session对象的setAttribute(key,v ...
- struct2访问或添加request/session/application
访问或添加request/session/application 1 通过ActionContext //这样放置 public String execute() { ActionConte ...
- JavaWeb -pageContext/request/session/application
pageContext/request/session/application总结 一.范围差异 1. pageContext jsp页面容器 当前页面有效 2. request 请求对象 同一次请求 ...
- Strut2 ognl取出存放在request,session,application和对象栈的中的值
1.取出request,session,applicaiton中的值 a.往里面加入request,session,application中加入值 public String testServlet( ...
- Struts2初学 Struts2在Action获取内置对象request,session,application(即ServletContext)
truts2在Action中如何访问request,session,application(即ServletContext)对象???? 方式一:与Servlet API解耦的方式 可以使用 ...
随机推荐
- Metlnfo CMS全版本漏洞收集
根据https://www.seebug.org/appdir/MetInfo 进行书写. [版本:Metlnfo 4.0] 漏洞标题:Metlnfo cms任意用户密码修改 漏洞文件:member/ ...
- 树莓派开发系列教程2--树莓派3B介绍及系统烧写、基本配置
注意:树莓派系列的3篇文章里面的图片因为博客转移过程丢失了,非常抱歉 前言 树莓派系列里涉及到需要额外电脑来协助处理的部分(如烧写系统,远程访问等等),统一在运行着Ubuntu15系统的mac air ...
- linux initcall 介绍 (转自http://blog.csdn.net/fenzhikeji/article/details/6860143)
现在以module_init为例分析initcall在内核中的调用顺序 在头文件init.h中,有如下定义: #define module_init(x) __initcall(x); 很明显 ...
- Ubuntu下安装Sublime Text3
1. 下载软件 Ctrl+Alt+T 调出命令窗口执行下面命令下载安装包: sudo add-apt-repository ppa:webupd8team/sublime-text-3 2. 更新软件 ...
- 到底什么是Upnp?[转载]
本文出自:http://www.cnblogs.com/nehu/archive/2006/05/13/399342.html 解释一. 准确地说,UPnP(Universal Plug and Pl ...
- C/C++——C语言数组名与指针
版权声明:原创文章,转载请注明出处. 1. 一维数组名与指针 对于一维数组来说,数组名就是指向该数组首地址的指针,对于: ]; array就是该数组的首地址,如果我们想定义一个指向该数组的指针,我们可 ...
- python模块之itertools
在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器 ...
- sshpass-免交互SSH登录工具
sshpass用于自动向命令行提供密码,适用于ssh,scp,rsync,pssh,pscp等ssh系列的命令和工具 #安装sshpass yum install sshpass -y #注:当第一次 ...
- geoip 扩展包根据ip定位详情
教程:https://laravel-china.org/courses/laravel-package/2024/get-the-corresponding-geo-location-informa ...
- CentOS系统yum源配置修改、yum安装软件包源码包出错解决办法apt.sw.be couldn't connect to host
yum安装包时报错: Could not retrieve mirrorlist http://mirrorlist.repoforge.org/el6/mirrors-rpmforge error ...