Servlet基础梳理(四)
本篇说一下session和路径的问题。
session:
是一种在server端保存http状态信息的方案。眼下有两种实现方式:基于Cookie或者URL重写。
基于cookie:第一次訪问server,server给响应的cookie中带有sessionid。再次请求时把cookie带回。匹配sessionID。
URL重写:在请求的url中将sessionid以參数形式进行提交,server获取并进行匹配。action="<%response.encodeURL("welcome.jsp")%>"
创建时机:
并不是第一次訪问serverjsp都会创建session。假设jsp设置session=false不创建
假设訪问的页面不是第一次訪问server的第一个资源。那么返回本次会话的session。自身不再创建
假设第一次訪问的是Servlet,仅仅有调用request.getsession()或request.getsession(true)才会创建session。
销毁:
调用session.invalidate()直接销毁
卸载web应用
超过session的过期时间默认半个小时:(session.getMaxInactiveInterval());能够设置(session.setMaxInactiveInterval()),在 web.xml中设置。时间单位为分钟。
对于session,最重要的两个方法:session.setAttribute(arg0, arg1);session.getAttribute(arg0)。
URL路径:
开发中尽量使用绝对路径,由于绝对路径一定没问题,相对路径可能有问题。写法例如以下:
response.sendRedirect(request.getContextPath()+"/shoppingCart/person.jsp");
在Servlet/jsp中,由于路径中/问题引发非常多路径问题,这里主要说一下/的两种含义:
- 当前web应用的根路径:由Servlet容器处理则web应用的根路径
->请求转发时
->web.xml中url配置时
->各种定制标签中 - 当前web网站的根路径:浏览器解析
->超链接
->表单中的action中
->请求重定向时候
避免这些错误的方式就是使用绝对路径。
最后提一下①表单反复提交和验证码的机制问题:
由于这两个执行的原理同样。基本上一起提一下:
1 在表单原始界面生成验证码图片(①产生字符串)。并把图片中字符放入session
2 表单中输入验证码(①不用输入自己产生)
3 Servlet中获取两个值比較,一致则受理成功,销毁session中验证码,不一致则打回又一次
OK。这一篇临时说这些吧
最新文章
- Android动画效果之初识Property Animation(属性动画)
- seajs学习一天后的总结归纳
- list中的中文转换编码显示
- leetcode4568
- Nim教程【四】
- 流行的ios开源项目
- STL--向量(vector)
- FilenameFilter用法
- 从一个新手容易混淆的例子简单分析C语言中函数调用过程
- javaIO(05)字节流和字符流的区别
- pager 命令
- mysql学习笔记3
- D - 1sting(相当于斐波那契数列,用大数写)
- windows MySQL 安装
- selenium2.0集成测试案例
- nstallation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED报这个错的原因???
- centos7系统下配置jdk环境变量
- laravel 使用构造器进行增删改查
- python2.7 处理unicode和ascii字符串混用问题
- 深度学习课程笔记(五)Ensemble
热门文章
- java 获取当前系统时间
- 转载 Ofbiz 入门教程
- laravel自定义公共函数
- JNI基础学习
- Python的异步编程[0] ->; 协程[1] ->; 使用协程建立自己的异步非阻塞模型
- 洛谷——P2758 编辑距离
- 第2天-css快速入门
- 火狐浏览器信息提取工具Dumpzilla
- 【离线】【递推】【multiset】 Codeforces Round #401 (Div. 2) C. Alyona and Spreadsheet
- 【pb_ds】【平衡树启发式合并】【并查集】bzoj2733 [HNOI2012]永无乡