04_第4章 会话跟踪

合集下载

Chapter04_Exercises

Chapter04_Exercises

C. 识别、控制和跟踪需求的变化
D. 以上选项都不是
11. (
)需求工程师的任务是将所有利益相关者的信息进行分类以便允许决策者选择一
个相互一致的需求集。
A. 真
B. 假
12. 下面的(
)不是在项目启动阶段被提出的“与环境无关”的问题。
A. 成功的解决方案将带来什么样的经济收益?
B. 谁反对该项目?
C. 谁将为该项目付款?
2. 请指出下面需求描述存在的问题,并进行适当的修改。
(1) 系统用户界面友好。 (2) 系统运行时应该占用尽量少的内存空间。 (3) 即使在系统崩溃的情况下,用户数据也不能受到破坏。 (4) ATM 系统允许用户查询自己银行帐户的现存余额。 (5) ATM 系统应该快速响应用户的请求。 (6) ATM 系统需要检验用户存取的合法性。 (7) 所有命令的响应时间小于 1 秒;BUILD 命令的响应时间小于 5 秒。 (8) 软件应该用 JAVA 语言实现。 答案要点: (1) 问题:“友好”是不可验证的。
B. 每个指定系统的实现
C. 软件体系结构的元素
D. 系统仿真所需要的时间
9. 组织需求评审的最好方法是(
)。
A. 检查系统模型的错误
B. 让客户检查需求
C. 将需求发放给设计团队去征求意见
D. 使用问题列表检查每一个需求
10. 使用跟踪表有助于(
)。
A. 在后续的检查运行错误时调试程序
B. 确定算法执行的性能
(2) 需求分析:分析和综合所采集的信息,建立系统的详细逻辑模型。 (3) 需求规格说明:编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。 (4) 需求验证:评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清

各状态码代表意义

各状态码代表意义

HTTP状态码大全100-199 用于指定客户端应相应的某些动作。

200-299 用于表示请求成功。

300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。

400-499 用于指出客户端的错误。

500-599 用于支持服务器错误。

HttpServletResponse中的常量代表关联不同标准消息的状态码。

在servlet程序中,你会更多地用到这些常量的标识来使用状态码。

例如:你一般会使用response.setStatus(response.SC_NO_CONTENT)而不是response.setStatus(204),因为后者不易理解而且容易导致错误。

但是,你应当注意到服务器允许对消息轻微的改变,而客户端只注意状态码的数字值。

所以服务器可能只返回HTTP/1.1 200 而不是HTTP/1.1 200 OK。

100 (Continue/继续)如果服务器收到头信息中带有100-continue的请求,这是指客户端询问是否可以在后续的请求中发送附件。

在这种情况下,服务器用100(SC_CONTINUE)允许客户端继续或用417 (Expectation Failed)告诉客户端不同意接受附件。

这个状态码是HTTP 1.1中新加入的。

101 (Switching Protocols/转换协议)101 (SC_SWITCHING_PROTOCOLS)状态码是指服务器将按照其上的头信息变为一个不同的协议。

这是HTTP 1.1中新加入的。

200 (OK/正常)200 (SC_OK)的意思是一切正常。

一般用于相应GET和POST请求。

这个状态码对servlet是缺省的;如果没有调用setStatus 方法的话,就会得到200。

201 (Created/已创建)201 (SC_CREATED)表示服务器在请求的响应中建立了新文档;应在定位头信息中给出它的URL。

202 (Accepted/接受)202 (SC_ACCEPTED)告诉客户端请求正在被执行,但还没有处理完。

JavaEE复习题选择题(有答案)

JavaEE复习题选择题(有答案)

JavaEE复习题选择题(有答案)第一章1、以下描述哪些方面与JAVAEE无关:(B)A、事务处理第三章1、Servlet程序的入口点是:(A)A、init()B、WEB-INF/lib/jarB、main()C、ervice()D、doGet()B、AppletC、资源管理D、分布式HelloWorld点击超级链接后下列哪一个ervlet方法将被调用:(A)A、doGetB、doPotC、GetD、Pot6、关于FORM表单提交的HTTP的GET方法不正确的是(C)A、不能向服务器提交二进制数据C、不能向服务器提交多值参数B、不能向服务器提交无限长度的数据D、参数附在URL后面D、web.某ml文3、在WEB应用程序的目录结构中,在WEB-INF文件夹中的lib目录是放(C)文件的。

B、.cla文件C、.jar文件7、ervlet的生命周期又一系列事件组成,把这些事件按照先后顺序排序,以下正确的是(B)A、加载类,实例化,请求处理,初始化,销毁B、加载类,实例化,初始化,请求处理,销毁C、实例化,加载类,初始化,请求处理,销毁D、加载类,初始化,实例化,请求处理,销毁8、在JAVAEE中,给定某Servlet的代码如下,编译运行该文件,以下陈述正确的是(B)。

PublicclaServlet1e某tendHttpServlet{}A、编译该文件时会提示缺少doGet()或者dopot()方法,编译不能够成功通过Publicvoidinit()throwServletE某ception{}Publicvoidervice(HttpServletRequetrequet,HttpServletReponere pone)}ThrowServletE某ception,IOE某ception{PrintWriterout=repone.getWriter();Out.println(“hello!”);B、编译后,把Servlet1.cla放在正确位置,运行该Servlet,在浏览器中会看到输出文字:hello!C、编译后,把Servlet1.cla放在正确位置,运行该Servlet,在浏览器中看不到任何输出的文字D、编译后,把Servlet1.cla放在正确位置,运行该Servlet,在浏览器中会看到运行期错误信息9、某web应用的上下文路径是root,配置文件web.某ml中有如下片段:procelt.ProceServletproce/proc以下说法正确的是(AB)。

网络数据包还原和内容分析系统的设计与实现

网络数据包还原和内容分析系统的设计与实现
( 捕获时间 、 捕获 长度 )

比 特数据
l示 网显l 结 果

应用数据还原层
I l 网件 文


J r
以太网数据 帧解 析 M C地址 ) A 敬椐谇辖屡
物 层 理
数据恸
(类 、MC 址 目 I首 I 组 J C 帧 型源 A地 、的 帧 部l P C l 分 R
网络运行状况保存起来。
传、 丢失和乱序问题 。模块实现的关键在于对第三个 问题 的处 理 。本 系统 主要 实现 了基 于 H F T P协议 、 T FP
协 议 、 MT S P协议 的会 话 重 聚 。 由于 U P协议 是 面 向 D
2 模块 设计与功能实现
21 数据 捕获 层 .
滤技 术对 还 原 后 的 应 用 数 据进 行 安 全性 检 验 。该 系统 能 够进 行 网络 信 息 实时监 控 . 效 地 实现 了局 域 网的 有
信 息 内容 监 管 关 键 词 :内容安 全 ; 话 还 原 ; 本分 析 会 文
中 图分 类 号 : P 9 T 33
文献标识码 : A
1 系统总体模 型
根 据 网 络体 系结 构 的层 次模 型 , 系 统 划分 为 数 本 据 包 捕 获 、 议 分 析 、 话 重 聚 、 用数 据 还 原 、 协 会 应 内容 分 析 与 过滤 五个 层 次结 构 进行 设 计实 现 , 统模 型如 系
图 1 示。 所
等网络安全产 品之后作为提高网络 系统 安全性 的一 个新的 、 重要 的发 展热 点 l 目前 , 些 发 达 国家 已在 l 1 。 一
( 源端口、 目的端口)
‘ {

内置对象

内置对象

12/41
2. request对象

Request对象包含所有请求的信息,request对象提供的方法 可分为4类:
– 设置和获取属性的方法: 如 getAttribute()、setAttribute() – 能够取得请求参数的方法: 如 getParameter()、getParameterValues() – 能够取得请求HTTP标头的方法: 如 getHeader()、setHeader() – 其他方法: 如 getRequestURL()、getRemoteAddr()、getSession()
5/41
属性与属性范围

属性的范围(Scope):是Web层中上下文对象的属性的生命周期和可见 性。其存在4种范围:
访问接口
ServletContext
属性范围名称
application
周期
应用实例生命周期内有效, 重新部署应用或服务器重启 失效
在对象会话期内有效,用户 正常退出、session超时、 重新部署session应用或重 新启动Web容器失效 只在HTTP请求服务期内有 效,可以通过请求转发实现 不同web组件共享。
PageContext
在单个JSP页面的上下文中 可见,直到这个页面全部处 理完毕后失效
当前页面
6/41
/j2ee_cn
Tomcat web容器
sesssionId
7/41
JSP内建对象
对象
request response pageContext
对应类
javax.servlet.ServletRequest javax.servlet.ServletResponse javax.servlet.jsp.PageContext

TP04

TP04

JSP中应用Cookie2-2
电子科大成都学院云计算系
------从登录验证页面表单中获取用户名-----<% String username=reqeust.getParameter("username"); //以key/value的形式创建Cookie Cookie uname=new Cookie("uname", username); response.addCookie(uname); ... ... 创建Cookie,使用response的 %> addCookie方法保存Cookie -----在显示页面显示用户名--------------<%//获取请求中的Cookie,以数组方式保存 使用reqeust获取 Cookie cookies[ ]=request.getCookies(); Cookie数组,通过 //循环遍历数组,得到key=uname的Cookie cookie的名称获取对应 for(int i=0;i<cookies.length;i++){ 的内容 Cookie ucookie=cookies[i]; if(ucookie.getName().equals("uname”));//判断Cookie的名称 %> 欢迎你:<%=ucookie.getValue() %>//获取key对应的value,输出显示 <% } %> 演示示例:使用Cookie保存用户名称
管理员界面 3 1、从session中提取该用户信息 2、如果用户信息存在,显示管理员界面内容 4、如果用户信息不存在,跳转到登录页面

使用session实现访问控制42 在控制页面获取用户请求的登录信息进行验

HTTP状态代码所代表服务器响应状态

HTTP状态代码所代表服务器响应状态

2,设置302和404状态代码:sendRedirect(String url)和sendError(int code,String msg)方法。 二者抛出IOException。
状态代码302命令浏览器连接到新的url。sendRedirect方法生成302响应及Location报头,给出新的url放入Location报头之前,系统自动将相对url转换为绝对url。
500-599:由服务器引发的错误。
2,Servlet与客户端交互使用的重要状态代码。
100(Continue,继续):表示客户端程序在询问是否可以在随后的请求中向服务器发送附加文档。服务器使用100(SC_CONTINUE)表示继续,417(SC_EXPECTATION_FAILED)表示不接受该附件。
Servlet不应该直接使用这个状态代码,应该实现getLastModified方法,由默认的Service方法来处理。
307和303区别:接收到303响应则继续进行get和post请求的重定向,接受到307,对于get请求继续重定向,而post则不再继续。
501:表示服务器不支持该客户程序发送的命令。
503:由于维护或超负荷工作引起服务器不能做出响应。
505:表示服务器不支持请求行中给出的HTTP版本。
四,重新连接,重定位,刷新的区别:
405:这个资源不容许使用请求方法访问。
415:服务器不知道如何处理请求附加文件类型。
417:回应100,告诉浏览器不接受该附件。
500:表示服务器运行混乱。由CGI程序或Servlet崩溃或返回不正确格式的报头引起。
100-199:信息性的标示用户应该采取的其他动作。
200-299:表示请求成功。

令牌机制在B/S应用系统中表单重复提交问题的研究与应用

令牌机制在B/S应用系统中表单重复提交问题的研究与应用
提交 的信息 并进 行处 理 .
在本文 中,控制器响应视 图接受请求时产
生. 令牌分别寄存在服务器端和客户端.服务端
通过会话跟踪来管理 ,客户端利用表单 的隐藏
次提交页面时携带 同步令牌 ,通过初始化令牌 、校验令牌 、销毁令牌 等步骤 ,解决 了表单重复提交 的问题.
并对其实现的过程进行 了分析和阐述 . 关键宇 :表单 ;同步令 牌 ;
中图 分 类 号 :T 3 1 2 P 1. 5 文 献 标 识 码 :A 文 章 编 号 :10 — 8 3 0 1 6 0 4 — 5 0 7 6 8 ( 1) — 0 9 0 2 0
第 3 卷第 6 2 期
2 1 年 1 月 01 2
韩 山 师 范 学 院 学 报
J un l f n h nNoma iest o r a sa r l o Ha Unv ri y
Vo .2 No. 13 6 De 20l1 c.
令牌机制在 BS /应用系统中表单 重复提交问题的研究与应用
的时 间 ,重 复提交 所 经过 的流程 处理 就引起 了资源浪 费- z .
本文阐述 了如何使用令牌机制来避免页面在提交请求时候 ,服务器重复执行提交的相同逻辑. 具 体实现的方法是 ,首先服务器端的将页面请求中的令牌值与当前用户的令牌值进行匹配,而且 ,在答 复客户端之前 ,产生一个新的令牌保存起来 ,如果用户重复提交页面的时候 ,就会导致客户端的令牌 和服务器端 的令牌不一样 ,如果两端的令牌相同或令牌不存在就不进行发送 、不处理逻辑 ,否则响应 请求.
手)
图 1表 单 重 复 提 交 问题
如图1 所示 ,客户端重复请求 了两次相同的内容 ,如果系统没有作出对应 的限制输入过滤机制 , 业务层 的E B J 将重复执行两次处理 的逻辑.用户这样操作后 ,数据库将 出现脏数据 ,( 当插入数据 时 ,E B J 生成表的主键 ,是 由后台 自动生成 ) ,或者系统会 出错 ( 如果用户输入的信 息已经包含 主
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法
void setAttribute(String key,Object value) Object getAttribute(String key) void removeAttribute(String key) void invalidate() void setMaxInactiveInterval(int interval) int getMaxInactiveInterval() String getId() long getCreationTime() long getLastAccessedTime()
过分析请求头的内容而得到客户端特有的信息,从而动态生成与该客 户端相对应的内容。 例如,在很多登陆界面中可以看到“记住我”类似的选项,如果勾选 后,下次再访问该网站时就会自动记住用户名和密码。另外,一些网
站根据用户的使用喜好,进行个性化的风格设置、广告投放等,这些
功能都可以通过存储在客户端的Cookie实现。
HttpSession对象会在用户第一次访问服务器时由容器创建(注意只有访问
JSP、Servlet等程序时才会创建,只访问HTML、IMAGE等静态资源并不 会创建),当用户调用其失效方法(invalidate()方法)或超过其最大不活 动时间时会失效。在此期间,用户与服务器之间的多次请求都属于同一个会 话。
//通过属性名将属性从会话域中移除
session.removeAttribute("username");
管理会话生命周期的方法
【示例】获取会话的最大不活动时间
int time = session.getMaxInactiveInterval(); //单位为“秒”
会话的最大不活动时间指会话超过此时间段不进行任何操作,会话自 动失效的时间。 HttpSession对象的最大不活动时间与容器配置有关,对于Tomcat 容器,默认时间为1800秒。
unameCookie.setMaxAge(7*24*60*60); //参数以秒为基本单位
Cookie技术应用
演示使用Cookie记录用户最近一次访问时间及访问次数。
讲师演示讲解
【代码4- 1】CookieExampleServlet.java
Cookie的缺点
Cookie的缺点主要集中在其安全性和隐私保护上,主要包括以下几种:
存取会话域属性的方法
【示例】存取会话域属性:
//存储会话域属性"username",值为"QST" session.setAttribute("username","QST"); //通过属性名"username"从会话域中获取属性值 String uname = (String)session.getAttribute("username");
管理会话生命周期的方法
通过web.xml设置会话的最大不活动时间:
<session-config> <!--单位为“分钟”--> <session-timeout>10</session-timeout> </session-config>
Cookie的访问路径
在默认情况下,Cookie只能被创建它的应用获取。Cookie的
setPath()方法可以重新指定其访问路径,例如:将其设置为在某个 应用下的某个路径共享,或者在同一服务器内的所有应用共享。 【示例】设置Cookie在某个应用下的访问路径
unameCookie.setPath("/chapter04/jsp/");
response.Байду номын сангаасddCookie( unameCookie );
其中:
参数为一个Cookie对象
生成的Cookie仅在当前浏览器有效,不能跨浏览器。
注意
获取并遍历客户端Cookie
存储在客户端的Cookie,通过HttpServletRequest对象的
getCookies()方法获取,该方法返回所访问网站的所有Cookie的对 象数组,遍历该数组可以获得各个Cookie对象。 【示例】
在使用Cookie时,要保证浏览器接受Cookie。对IE浏览器设置方法是:选择浏览器的工具菜单
注意
->“隐私”->“高级”->“接受”选项。
Cookie对象的创建
Cookie对象通过javax.servlet.http.Cookie类的构造方法来创建。
【示例】
Cookie unameCookie = new Cookie(“username”,“QST”);
4.2.2 Session技术
Session技术是指使用HttpSession对象实现会话跟踪的技术,是一种在服
务器端保持会话跟踪的解决方案。 HttpSession对象是javax.servlet.http.HttpSession接口的实例,也称为 会话对象。该对象用来保存单个用户访问时的一些信息,是服务器在无状态 的HTTP协议下用来识别和维护具体某个用户的主要方式。
Cookie可能被禁用,当用户非常注重个人隐私保护时,很可能会禁用浏览器的 Cookie功能; Cookie是与浏览器相关的,这意味着即使访问的是同一个页面,不同浏览器之间 所保存的Cookie也是不能互相访问的; Cookie可能被删除,因为每个Cookie都是硬盘上的一个文件,因此很有可能被 用户删除; Cookie的大小和个数受限,单个Cookie保存的数据不能超过4K,很多浏览器都 限制一个站点最多保存20个Cookie; Cookie安全性不够高,所有的Cookie都是以纯文本的形式记录于文件中,因此 如果要保存用户名密码等信息时,最好事先经过加密处理。
4.2 会话跟踪技术
会话跟踪技术是一种在客户端与服务器间保持HTTP状态的解决方案。
从开发角度考虑,是使上一次请求所传递的数据能够维持状态到下一 次请求,并且辨认出是否相同的客户端所发送出来的。 会话跟踪技术的解决方案主要分为以下几种:
Cookie技术
Session技术
URL重写技术
Cookie存活时间的设置
Cookie对象可以通过setMaxAge()方法设置其存活时间,时间以秒 为单位:
时间若为正整数,表示其存活的秒数; 时间若为负数,表示其为临时Cookie; 时间若为0,表示通知浏览器删除相应的Cookie。
【示例】设置存活时间为1周的持久Cookie
【示例】获取HttpSession对象
HttpSession session = request.getSession();
或HttpSession session = request.getSession(true);
HttpSession接口的方法
HttpSession接口提供了存取会话域属性和管理会话生命周期的方法:
【示例】设置Cookie在服务器下所有应用的访问路径
unameCookie.setPath("/");
Cookie的存活时间
Cookie有一定的存活时间,不会在客户端一直保存。
默认情况下,Cookie保存在浏览器内存中,在浏览器关闭时失效, 这种Cookie也称为临时Cookie(或会话Cookie)。 若要使Cookie较长时间的保存在磁盘上,可以通过Cookie对象的 setMaxAge()方法设置其存活时间,保存在磁盘上的Cookie也称为 持久Cookie。
理解URL重写技术的会话跟踪原理,掌握URL重写技术的使用
理解隐藏表单域的会话跟踪原理,了解隐藏表单域的使用
任务驱动
本章任务完成对“Q-ITOffer”锐聘网站的注册、登录、简历添加和
照片上传功能进行进一步的完善。具体任务分解如下:
【任务4-1】使用Session技术完善注册验证码功能 【任务4-2】使用Session技术完善登录功能
描述
以key/value的形式将对象保存在HttpSession对象中 通过key获取对象值 从HttpSession对象中删除指定名称key所对应的对象 设置HttpSession对象失效 设定HttpSession对象的非活动时间(以秒为单位),若超过 这个时间,HttpSession对象将会失效 获取HttpSession对象的有效非活动时间(以秒为单位) 获取HttpSession对象标识sessionid 获取HttpSession对象产生的时间,单位是毫秒 获取用户最后通过这个HttpSession对象送出请求的时间
获取HttpSession对象
HttpServletRequest接口提供了获取HttpSession对象的方法:
方法
getSession() getSession(boolean create)
描述
获取与客户端请求关联的当前的有效的Session,若没有 Session关联则新建一个 获取与客户端请求关联的当前的有效的Session,若没有 Session关联,当参数为真时,Session被新建,为假时,返 回空值
【任务4-3】使用Session技术改进简历添加和照片上传功能
【任务4-4】使用Cookie技术记住登陆信息
学习路线
无状态的HTTP协议
会话跟踪
会话跟踪技术
-
Cookie技术 Session技术 URL重写技术 隐藏表单域
贯穿任务实现
本章目标
知识点 HTTP协议的无状态性 会话跟踪的含义 Cookie的创建及使用 听 ★ ★ 看 ★ ★ 抄 改 写
Cookie[] cookies = request.getCookie(); if(cookies != null) for(Cookie c : cookies){ out.println("属性名:" + c.getName()); out.println("属性值" + c.getValue()); }
相关文档
最新文档