Servlet
主要内容:
1)状态跟踪

一、状态跟踪
HTTP协议是无状态协议,即请求与请求之间没有任何关系,也就是不会记住任何数据。
但若想在请求间传递数据,怎么办?web里的三个基本容器对象可以解决。

(1)request
在同一请求中有效,常用于服务器内部跳转中
1)存放数据
HttpServletRequest.setAttribute(String key,Object value);
2)获取数据
HttpServletRequest.getAttribute(String key);
(2)session与cookie
1)Cookie:在多个连接或请求中有效,数据保存在客户端,在服务器端创建cookie
i)向客户端保存cookie
Cookie cookie=new Cookie(String key,String value);
HttpServletResponse.addCookie(cookie);
ii)获取cookie数据
浏览器在每次请求时,会将所有cookie数据发送到服务器端
Cookie[] cookies=HttpServletRequest.getCookies();
Cookie.getValue(String key);
iii)生命周期
Cookie.setMaxAge(int num); 单位是秒
num<0:会话cookie,存活于浏览器会话结束前,默认为-1。
num>0:持久Cookie,存活于num秒之前。
cookie小结:
① cookie 是在服务端创建
② cookie 是保存在浏览器这端
③ cookie 的生命周期可以通过 
cookie.setMaxAge(2000);
☞ 如果不设置setMaxAge则该cookie的生命周期当浏览器关闭时,就消亡.
④ cookie 可以被多个浏览器共享
⑸如果重名就会替换存在的cookie值.
⑥ 一个web应用可以保存多个cookie,但保存在同一个cookie文本在客户端浏览器下
⑦ cookie存放的时候是以明文方式存放,因此安全较低.,我们可以通过加密后保存.
cookie细节:
⑴ 一个浏览器最多放入 300cookie,一个web站点,最多 20cookie,而且一个cookie大小限制子4k
⑵cookie生命周期的再说明:
1. cookie默认生命周期是会话级别
2. 通过setMaxAge() 可以设置生命周期
setMaxAge(正数) , 即多少秒后该cookie失效
setMaxAge(负数), 相当于该cookie生命周期是会话级别

cookie.setMaxAge(0);
response.addCookie(cookie);//一定带上这句话,否则不能删除
⑶ cookie存放中文,怎么处理
存放:
String val=java.net.URLEncoder.encode("顺平","utf-8");
Cookie cookie=new Cookie("name",val);
取出:
String val=java.net.URLDecoder.decode(cookie.getValue(), "utf-8");
out.println("name ="+val);

2)session:在多个连接或请求中有效,数据保存在服务器端
其与名为JSESSIONID的cookie密切相关
i)获取Session对象
HttpSession session=HttpServletRequest.getSession();

HttpSession session=HttpServletRequest.getSession(boolean create);
这里的boolean值默认为true,当容器检测到一个已存在的session,就用原来的那个session ,否则create新的session
当这里的boolean值为false时候,当容器检测到一个已存在的session,就用原来的那个session ,没有也不会去create新的session
ii)存放数据
session.setAttribute(String key,Object value)
iii)获取数据
session.getAttribute(String key);
iiii)生命周期
1)关闭浏览器
2)当服务器手动调用
session.invalidate()
3)session的不活动时间超过了session的最大存活期。
注意:最大存活期默认30分钟
配置web.xml:
<session-config>
<session-timeout>10</session-timeout>
</session-config>

Session 小结:
 
① session是存在服务器的内存中
② 一个用户浏览器,独享一个session域对象
③ session中的属性的默认生命周期是30min ,你可以通过 web.xml来修改
④ 
u 3种session生命周期的设置
(1)一个地方是 tomcat/conf/web.xml
  <session-config>
        <session-timeout>30</session-timeout>//表示30分钟的意思
</session-config>
对所有的web应用生效
(2)另外一个地方,就是在单个web应用的下去修改 web.xml
<session-config>
  <session-timeout>30</session-timeout>session精确到分钟,cookie精确到秒
  </session-config>
如果发生冲突,则以自己的web应用优先级高
(3)session.setMaxInactiveinterval(60) //发呆六十秒后session失效

session的更深入理解: 
为什么服务器能够为不同的浏览器提供不同session?
因为每个浏览器去访问web站点的时候,如果发出的http请求头没有带JSESSIONID头就会自动给你创建一个并返回

(3)ServletContext
ServletContext是在服务器,是被所有客户端共享服务器启动时创建,服务器关闭/web应用关闭/web应用reload()时销毁
如何获取servletContext:
 this.getServletContext();  
this.getServletConfig().getServletContext();
1)存放数据
ServletContext.setAttribute(String key,Object value);
2)获取数据
ServletContext.getAttribute(String key);
3)删除属性:
   SetvletContext.removeAttribute(“属性名”);

servlet学习笔记三的更多相关文章

  1. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  2. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  5. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  9. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

随机推荐

  1. vs2010运行C程序时,运行结果窗口一闪而过

    摘要:vs2010运行C程序时,运行结果窗口一闪而过; ------------------------------------------------------------ Ctrl F5测试运行 ...

  2. 【每日scrum】NO.4

    1.掌握了如何求两点间的最短距离这个算法.

  3. 4月7号周二课堂练习:NABC

    团队项目——7-magic 分析特点:游戏简单容易上手 NABC分析: N(needs需求)现在存在的很多游戏操作比较,游戏规则也比较繁琐,用户很难或者不愿意去玩操作难度比较大的游戏,容易上手的游戏比 ...

  4. [转载]ubuntu的版本

    http://bbs.chinaunix.net/thread-2126589-2-1.html  希望他说的是对的 ubuntu 发布的linux里面有一个非常具有迷惑性的版本-desktop.因为 ...

  5. MVC4 网站发布(整理 + 部分转载 + 部分问题收集和解决方案)

    网站发布步骤: 这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接 ...

  6. 你所必须掌握的三种异步编程方法callbacks,listeners,promise

    目录: 前言 Callbacks Listeners Promise 前言 coder都知道,javascript语言运行环境是单线程的,这意味着任何两行代码都不能同时运行.多任务同时进行时,实质上形 ...

  7. Netsharp快速入门(之19) 平台常用功能(插件操作)

    作者:秋时 暗影  转载须说明出处 6.2     插件操作 6.2.1  停用/启用 1.在平台工具-插件管理,右击对应的插件可以使用启用和停用功能.插件停用后会把所有相关的页签.程序集.服务全部停 ...

  8. [原创] zabbix学习之旅二:yum安装

    对于允许连接公网的环境下,显然通过yum安装是最为简单方便的,也是官网推荐的安装方式.通过这种方式安装,会将php.apache.zabbix本身都一并安装,解决了烦人的依赖包问题.   本文将介绍如 ...

  9. 利用 js 实现弹出蒙板(model)功能

    关于 js 实现一个简单的蒙板功能(model) 思路: 创建一个蒙板, 设置蒙板的堆叠顺序保证能将其它元素盖住 position: absolute; top: 0; left: 0; displa ...

  10. WebService相关概念介绍

    最近重新拾起WebService,之前用过Axis2开发过服务,但是非常具体的概念还不是很清楚,在此粗略总结一下. 本文重点研究以下几个问题:     1.WebService以及相关的概念介绍    ...