比较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解耦的方式 可以使用 ...
随机推荐
- Python3 re模块正则表达式中的re.S
在Python的正则表达式中,有一个参数为re.S.它表示"."(不包含外侧双引号,下同)的作用扩展到整个字符串,包括"\n".看如下代码: import re ...
- [003] largest_subarray_with_equal_1&0
[Description] Given an array with only '1' and '0', find a largest length sub-array which contains e ...
- 【项目管理】git和码云的使用【转】
转自:https://www.cnblogs.com/riverdubu/p/6491944.html 缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给 ...
- 135.Candy---贪心
题目链接 题目大意:分糖果,每个小朋友都有一个ratings值,且每个小朋友至少都要有一个糖果,而且每个小朋友的ratings值如果比左右邻舍的小朋友的ratings值高,则其糖果数量也比邻舍的小朋友 ...
- 在Linux 系统上运行多个tomcat
--原来的不动,添加环境变量(.bash_profile)export JAVA_HOME=/home/public/jdk1.8.0_131export JRE_HOME=$JAVA_HOME/jr ...
- Homestead在windows7 下的搭建
遇到的问题有 1.Homestead 的版本问题,教程git版本是 v5,最新是v7的,如果用最新,就要求vagrant的版本是 2.0的: 2.启动homestead后,出现 No input fi ...
- [Matlab]Upper Triangularization & Back Substitution代码
用来做数值计算作业的代码,来自Numerical Methods Using Matlab (4th Edition) [John H. Mathews, Kurtis K. Fink],改了一下注释 ...
- AC日记——#2054. 「TJOI / HEOI2016」树
#2054. 「TJOI / HEOI2016」树 思路: 线段树: 代码: #include <cstdio> #include <cstring> #include < ...
- 某PCBA企业应用易普优APS实现高级计划排程案例
一.项目介绍 1.生产计划现状 某PCBA企业(以下简称A企业)的产品生产是典型的多品种.小批量.多变化的生产模式.其中产品种类有1000多种,主流的200多种,每个月数百个生产订单,分解到工序以后的 ...
- 【caffe-Windows】微软官方caffe之matlab接口配置,以及安装caffe的注意事项
1.在此之前,记录一下之前的错误,在参考博客[caffe-Windows]caffe+VS2013+Windows+GPU配置+cifar使用进行caffe的安装时,其中的一些步骤可以不做,具体见下图 ...