本篇说一下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中,由于路径中/问题引发非常多路径问题,这里主要说一下/的两种含义:

  1. 当前web应用的根路径:由Servlet容器处理则web应用的根路径

     ->请求转发时

    ->web.xml中url配置时

    ->各种定制标签中
  2. 当前web网站的根路径:浏览器解析

    ->超链接

    ->表单中的action中

    ->请求重定向时候

避免这些错误的方式就是使用绝对路径。

最后提一下①表单反复提交和验证码的机制问题:

由于这两个执行的原理同样。基本上一起提一下:

1 在表单原始界面生成验证码图片(①产生字符串)。并把图片中字符放入session

2 表单中输入验证码(①不用输入自己产生)

3 Servlet中获取两个值比較,一致则受理成功,销毁session中验证码,不一致则打回又一次

OK。这一篇临时说这些吧




Servlet基础梳理(四)的更多相关文章

  1. servlet基础梳理(一)

    将近一个月没看servlet了,再加上第一次学习也没有深入.仅仅是笼统的看了一遍,编了一点基础案例就过去了,如今再去看感觉跟没学过一样.这里再用一点时间把这些基础都梳理一下,加深印象并为以后高速复习做 ...

  2. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  3. java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理

    本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...

  4. java基础梳理--朝花夕拾(一)

    简介: Java是一种撰写跨平台应用软件的面向对象语言,1995年由Sun Microsystems公司推出. 2009年04月20日,甲骨文74亿美元收购Sun,取得java的版权. 2011年7月 ...

  5. js基础梳理-如何理解作用域和作用域链?

    本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关 ...

  6. js基础梳理-究竟什么是变量对象,什么是活动对象?

    首先,回顾下上篇博文中js基础梳理-究竟什么是执行上下文栈(执行栈),执行上下文(可执行代码)?的执行上下文的生命周期: 3.执行上下文的生命周期 3.1 创建阶段 生成变量对象(Variable o ...

  7. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  8. Bootstrap<基础十四> 按钮下拉菜单

    使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...

  9. JSP数据交互(二)和Servlet基础

    01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. ...

随机推荐

  1. **Git本地仓库图解

    Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录 ...

  2. hdu6070

    hdu6070 题意 给出 \(n\) 个数, \(\frac{x}{y}\) 表示某个区间不同数的个数除以区间的长度,求 \(\frac{x}{y}\) 最小值. 分析 设 \(size(l, r) ...

  3. Codeforces #480 Tutorial

    Problem A,B,C: 简单的模拟,注意A中p mod q时对q=0特殊处理(注意范围) Problem D: Brief Intro: 给定长度为N的数组A,将A中所有连续子序列分成最少的组, ...

  4. POJ 1912 A highway and the seven dwarfs (凸包)

    [题目链接] http://poj.org/problem?id=1912 [题目大意] 给出一些点,表示一些屋子,这些屋子共同组成了村庄,现在要建一些高速公路 问是否经过了村庄. [题解] 这些屋子 ...

  5. [luogu3455]ZAP-Queries

    有时候我们会遇到一类问题:求$f(n)$,当然它是不好直接计算的,但如果$F(n)=\sum\limits_{d|n}f(d)$或$F(n)=\sum\limits_{\substack{n|d\\d ...

  6. dubbo安装(转载)

    1.   概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂 ...

  7. maven-pom-build

    地址: http://blog.csdn.net/taiyangdao/article/details/52374125

  8. java-继承-类变量与实例变量

    父类中的类的变量(静态属性)与其子类共享一份. 父类中的实例变量与其子类各自维护各自的.

  9. Android 架构 3.实现

    以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码.IDE采用Android Studio,Demo实现的功能为用户注册.登录和展示一个券列表,数据采用我们现有项目的测试数据,接 ...

  10. 解决ThinkPHP3.2.3框架,PDO驱动查询出来的字段名全是小写的bug

    找到文件:ThinkPHP\Library\Think\Db\Driver.class.php 找到代码: // PDO连接参数 protected $options = array( PDO::AT ...