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。这一篇临时说这些吧
Servlet基础梳理(四)的更多相关文章
- servlet基础梳理(一)
将近一个月没看servlet了,再加上第一次学习也没有深入.仅仅是笼统的看了一遍,编了一点基础案例就过去了,如今再去看感觉跟没学过一样.这里再用一点时间把这些基础都梳理一下,加深印象并为以后高速复习做 ...
- JSP/Servlet基础语法
相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...
- java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理
本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...
- java基础梳理--朝花夕拾(一)
简介: Java是一种撰写跨平台应用软件的面向对象语言,1995年由Sun Microsystems公司推出. 2009年04月20日,甲骨文74亿美元收购Sun,取得java的版权. 2011年7月 ...
- js基础梳理-如何理解作用域和作用域链?
本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关 ...
- js基础梳理-究竟什么是变量对象,什么是活动对象?
首先,回顾下上篇博文中js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?的执行上下文的生命周期: 3.执行上下文的生命周期 3.1 创建阶段 生成变量对象(Variable o ...
- Android基础测试题(四)
看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...
- Bootstrap<基础十四> 按钮下拉菜单
使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...
- JSP数据交互(二)和Servlet基础
01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. ...
随机推荐
- tcpdump学习(2):基本使用
安装好tcpdump之后,运行tcpdump: 1. tcpdump -D 获取网络适配器列表,以下是在Ubuntu上获取到的结果: root@holmesian-laptop:~# tcpdump ...
- 前段基础JavaScript
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.( ...
- hdu 5748(LIS)
Bellovin Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- 使用JQuery解析、处理JSON数据(应用在课程表)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [BZOJ1227][SDOI2009]虔诚的墓主人 组合数+树状数组
1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MBSubmit: 1433 Solved: 672[Submit][Stat ...
- 错误 NETSDK1068: 框架依赖型应用程序主机需要一个至少 “netcoreapp2.1” 的目标框架
错误 NETSDK1068: 框架依赖型应用程序主机需要一个至少 “netcoreapp2.1” 的目标框架 我有一个ASP.NET Core 2网站应用程序,编译运行都没有问题,但是发布时却出了错, ...
- Ubuntu 16.04下开启Mysql 3306端口远程访问
原文地址:传送门 0. 前言 网上看到很多开启Mysql远程访问端口,修改的配置文件我都没有找到. 特意查看了我的Linux版本 $ sudo lsb_release -a 显示如下: Distrib ...
- dfs序学习总结
dfs序: 每个节点在dfs中的进出栈的时间序列. 树是非线性结构,根节点连着子节点,那么dfs序...节点进出栈的时间先后? 从根节点入栈,然后左儿子入栈,左儿子出栈,右儿子入栈,右儿子出栈,根节点 ...
- 树状数组优化DP 【模拟赛】删区间
哇,难受得一匹. 看到题的一瞬间竟然只想到了\(n^3\)的区间\(DP\) 一.\(40pts\) 设\(f[i][j]\)代表删去\(i\)到\(j\)这一段区间的最小代价和. 然后直接写普通的区 ...
- Struts2遇到Caused by Action class not found这类问题怎么解决
刚才碰到个小坑,显示的错误是struts.xml找不到Action,明显不会有错的因为之前还是正常跑起来的,然后百度google搜了一通没解决,maven clean用了没反应还是照样报错. 最后在百 ...