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. C# 把引用的dll嵌入到exe文件中

    当发布的程序有引用其它dll, 又只想发布一个exe时就需要把dll打包到exe 当然有多种方法可以打包, 比如微软的ILMerge,混淆器附带的打包... 用代码打包的实现方式也有很好,本文只是其中 ...

  2. Log4Net学习【三】

    Log4Net配置详解 配置方式一 在相应的应用程序的配置文件中配置,(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例是Web应用程序,以Web.co ...

  3. github实践操作

    一.本地仓库的创建和提交 1.下载并安装Git http://msysgit.github.io/,安装完成后在本地电脑创建一个git仓库并初始化本地仓库 2.在git目录下创建一个Readme.tx ...

  4. django构建blog--页面部分(eclipse+pydev)

    本文介绍的是在eclipse+pydev 平台下,利用django 搭建blog的第2部分:页面部分(主要涉及3个部分:模板.视图.URL模式) 篇幅1:创建模板 blog目录下新建一个文件夹:tem ...

  5. Python 文件读和写

  6. windows python 打印utf-8乱码

    从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position ...

  7. boost之thread

    1.boost里的thread创建之后会立即启动. 代码示例: #include <iostream> #include <string> #include <vecto ...

  8. 【Dancing Link专题】解题报告

    DLX用于优化精确覆盖问题,由于普通的DFS暴力搜索会超时,DLX是一个很强有力的优化手段,其实DLX的原理很简单,就是利用十字链表的快速删除和恢复特点,在DFS时删除一些行和列以减小查找规模,使得搜 ...

  9. 【BZOJ】【1863】【ZJOI2006】trouble 皇帝的烦恼

    二分+DP Orz KuribohG 神题啊= = 满足单调性是比较显然的…… 然而蒟蒻并不会判断能否满足……QwQ 神一样的DP姿势:f[i]表示第 i 个与第1个最多有多少个相同,g[i]表示最少 ...

  10. JS设计模式——5.单体模式

    JS设计模式——5.单体模式 http://www.cnblogs.com/JChen666/p/3610585.html   单体模式的优势 用了这么久的单体模式,竟全然不知!用它具体有哪些好处呢? ...