Session的典型应用:

  1. 防止用户非法登录到某个页面。
  2. 网上商城的购物车
  3. 保存用户登录信息

注:多个请求要用的东西放在session中,多个会话之间要用的东西放在上下文中。

如何创建session?

Servelt API 中有HttpSession接口,来封装session对象。用HttpServletRequest来获取会话对象。

HttpSession  session=request.getSession();

主要方法:
1. getAttribute( String name )
获取指定名字name相联系的信息.

2.getAttributeNames()
返回Session对象中存储的每一个属性对象,其结果为一个类举的实例.

3. getCreationTime()
返回Session被创建的时间.最小单位为千分之一秒.

4.getId()
此方法返回惟一的标识,这些标识为每个Session而产生.当只有一个单一的值与一个Session联合时,或当日志信息与先前的Session有关时,它被当做键名用.

5.GetLastAccessedTime()
返回当前Session对象最后被客户发送的时间,最单位为千分之一秒.

6. GetMaxInactiveInterval()
返回总时间(秒),负值表示Session永远不会超时.该时间为该Session对象的生存时间.

7. removeAttribute( String name )
删除与提定名字name的相联系的信息.

8. setAttribute( String name , Java.lang.Object value )
设置指定名字name的属性值value,并将之存储在Session对象中.

9.session.invalidate()                                                                                                    是将session设置为失效,一般在退出时使用

问:会话的有效时间到底会有多长时间?

答:1.会话是由容器来创建的,长时间不用,容器会在30分钟后将它销毁,它是不能一直存放在服务器中的。

Tomcat中可以修改会话的时间

C:\Program File\Tomcat\cof\web.xml

第483行-485行

<session-config>

<session-timeout>30</session-timeout>

</session-config>

2.在项目中web.xml中可以设置会话的时间长度

<session-config>

<session-timeout>30</session-timeout>

</session-config>

1、2中session的有效时间应用于所有会话对象有效时间长。

3,对于某一个会话设置有效时间,在Servlet中用session.setMaxAge(秒)来设置

上下文的作用

利用上下文对象可以实现多个用户之间的数据共享。

上下文对象如何创建的?

Servelt中ServletContext  sc=this.getServletContext()

sc. setAttribute(String key,Object value)

sc. getAttribute(String key)

sc. getInitParameter(String path)

ServletContext和ServletConfig本来没有直接关系,但容器起动后,把得到上下文方法封装在servletConfig中,因为servlet继承了。

所以,在Servlet 中就可以直接使用ServletContext  sc=this.getServletContext()方法得到ServletContext

JSP中 application.getAttribute(String key);

 问:ServletContext 什么时使用?

答:  如果在一个应用中有多个Servlet和JSP都使用的变量,以后还可能被修改,就可以考虑用上下文参数

在web.xml中配置:

<context-param>

<param-name>level</param-name>

<param-value>1</param-value>

</context-param>

jsp中的session和上下文的更多相关文章

  1. 深入理解JavaScript中的作用域和上下文

    介绍 JavaScript中有一个被称为作用域(Scope)的特性.虽然对于许多新手开发者来说,作用域的概念并不是很容易理解,我会尽我所能用最简单的方式来解释作用域.理解作用域将使你的代码脱颖而出,减 ...

  2. 理解JavaScript中的作用域和上下文

    JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,部分归功于其独特的灵活性. 函数可以接收不同的的上下文和作用域.这些概念为JavaScrip ...

  3. 认识javascript中的作用域和上下文

    javascript中的作用域(scope)和上下文(context)是这门语言的独到之处,这部分归功于他们带来的灵活性.每个函数有不同的变量上下文和作用域.这些概念是javascript中一些强大的 ...

  4. Spring Boot 中修改端口和上下文路径

    通过修改application.properties内容来改变访问的端口号和上下文路径(很简单!) spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.vi ...

  5. Jsp中解决session过期跳转到登陆页面并跳出iframe框架的方法

    1.可以用javaScript解决在你想控制跳转的页面,比如login.jsp中的<head>与</head>之间加入以下代码: <script language=”Ja ...

  6. 对JSP中的Session 简单理解

    我的理解: 简单来说,要使用服务器端的session对象,就是要有其对应的key,即sessionid,它只认识sessionid. 下面我说的cookie,url重写或者隐藏表单,都是为了将其对应的 ...

  7. flask 状态保持session和上下文session的区别

    问题场景: 在falsk项目中导入了两个session:    首先,配置文件config.py文件中 有个 flask_session扩展导入了Session  ( from flask_sessi ...

  8. jsp中的session

    浏览器和服务器的异常通话 常用方法 setAttribute(String key,Object value);//设置值 getAttribute(String key); //取值 Invalid ...

  9. Flask 进阶session和上下文管理解析

    session的源码流程 将session放置在redis中 安装 pip install flask-session 使用 import redis from flask import Flask, ...

随机推荐

  1. linux运维、架构之路-shell编程(一)

    一.shell编程入门必备基础 1.vim编辑器的命令,vimrc设置 2.150个linux基础命令 3.linux中基础的系统服务crond,ssh网络服务,nfs,rsync,inotify,l ...

  2. python核心编程2 第七章 练习

    7-4. 建立字典. 给定两个长度相同的列表,比如说,列表[1, 2, 3,...]和['abc', 'def','ghi',...],用这两个列表里的所有数据组成一个字典,像这样:{1:'abc', ...

  3. 在Liunx Mint下无法切换到root用户

    提示 su: Authentication failure 以ubuntu的mint root用户默认是也是禁止的 需要手动打开才行 a)root启用 执行下面的操作:1.先解除root锁定,为roo ...

  4. Asp.Net Core 使用Docker进行容器化部署(二)使用Nginx进行反向代理

    上一篇介绍了Asp.Net 程序在Docker中的部署,这篇介绍使用Nginx对Docker的实例进行反向代理 一.修改Nginx配置文件 使用winscp链接Liunx服务器,在/ect/nginx ...

  5. redis 带入的挖矿病毒 qW3xT.2 wnTKYg 解决方法

    最近我的阿里云ecs 老是收到 云盾态势感知系统检测到异常 top -c 后发现一个 疑似病毒  /tmp/qW3xT.2 看到网友们的解决方案 试过之后效果不错,可以用的 知道wnTKYg是什么鬼之 ...

  6. pyecharts数据分析及展示

    仅仅从网上爬下数据当然是不够用的,主要还得对数据进行分析与展示,大部分人都看重薪资,但是薪资数据有的是*k/月,有的是*万/月,还有*万/年等等,就要对数据进行清理 将所有单位统一化,全部换算成统一单 ...

  7. 洛谷U32670 小凯的数字(比赛)

    题目网址 https://www.luogu.org/problemnew/show/U32670 题目背景 NOIP2018 原创模拟题T1 NOIP DAY1 T1 or DAY 2 T1 难度 ...

  8. linux里面的fork函数创建一个新进程

    由fork创建的新进程成为子进程,fork函数被调用一次,但是返回两次,

  9. EF报错“EntityValidationErrors”

          在使用EF更新实体的时候报错,显示界面如下:       点击查看详情:        在查看详细的窗体中,EntityValidationErrors里面的也看不到具体的错误原因.在网上 ...

  10. CWindowWnd类源码分析

    CWindowWnd代码在UIBase.h和UIBase.cpp文件里.主要实现的是一个基本窗口的创建与消息处理. 相关代码: 头文件: class UILIB_API CWindowWnd { pu ...