会话跟踪简介PPT资料.ppt
《会话跟踪简介PPT资料.ppt》由会员分享,可在线阅读,更多相关《会话跟踪简介PPT资料.ppt(20页珍藏版)》请在冰豆网上搜索。
用户授权技术不允许未经授权的用户访问网站上的某些资源,已授权用户,未授权用户,请求,请求,7,隐藏表单域,将会话跟踪字段的隐藏表单域添加到HTML页面,但是不会显示在客户端浏览器中,在GET和POST方法中指定用于存储有关会话消息的名称和值。
8,URL重写,URL(统一资源定位)重写技术将一个唯一的会话ID添加到URL结尾,以标识该会话。
例如,重写以下URL传递会话ID10,原始URL:
http:
/server:
post/servlet/Rewritten用附加信息重写的URL:
post/servlet/Rewritten/10用添加的参数重写的URL:
post/servlet/Rewritten?
sessionid=10用自定义修改重写的URL:
post/servlet/Rewritten;
$sessionid$10,9,Cookie2-1,Cookie用于存储Web服务器发送给客户端的信息。
服务器通过设置响应标题中的Set-Cookie方法来发送cookie。
其语法如下:
Set-Cookie:
Name=VALUE;
Comment=COMMENT;
Domain=DOMAINNAME;
Max-age=SECONDS;
Path=PATH;
secure;
Name指定Cookie的名称,VALUE指定Cookie名称的值,Max-age指定Cookie的生命周期(以秒表示),Domain指定Cookie有效的URL,secureHTTP指定Cookie是否可以在HTTP上交换,10,Cookie2-2,javax.servlet.http.cookies包提供由Cookie类实现的多种方法,publicintgetMaxAge();
返回Cookie的最大保存时间,publicvoidsetMaxAge(intage);
设置cookie的最大生命周期(以秒表示),11,演示URL和Cookie的示例2-1,演示:
示例5,以下示例讲解URL重写和Cookie的概念,response.setContentType(CONTENT_TYPE);
PrintWriterout=response.getWriter();
out.println();
out.println(UrlRedirectServlet);
StringcontextPath=request.getContextPath();
StringencodedUrl=response.encodeURL(contextPath+/cookiereader);
out.println(此页面将使用URL重写(如有必要));
out.println(转至default.jsp页面单击此处.);
getContextPath()返回上下文路径,encodeURL()将字符串转换为URL路径,12,演示URL和Cookie的示例2-2,Cookiecookie=null;
Cookiecookies=request.getCookies();
booleanhasCookies=false;
if(cookies!
=null)hasCookies=true;
if(hasCookies)out.println(“找到的每个cookie的名称和值);
for(inti=0;
icookies.length;
i+)cookie=cookiesi;
cookie.getName();
cookie.getValue();
如果请求的URL包含Cookie,则显示名称和值,演示:
示例6,13,会话跟踪示例,此示例演示会话跟踪的概念,演示:
示例7,PrintWriterout=response.getWriter();
HttpSessionsession=request.getSession();
response.setContentType(CONTENT_TYPE);
if(session.isNew()out.println(“新建的会话.);
elseout.println(“已有会话.);
out.println(“会话ID:
+session.getId();
out.println(创建时间:
);
out.println(newDate(session.getCreationTime();
out.println(最后访问日期:
out.println(newDate(session.getLastAccessedTime();
此示例将各种会话属性作为输出结果显示出来。
14,Servlet通信方法,publicvoidinclude(ServletRequestreq,ServletResponseres);
Servlet访问网络资源以满足客户端请求Servlet使用RequestDispatcher接口的forward()和include()方法访问网络资源,将请求从一个Servlet转送到同一个服务器上的另一个Servlet,publicvoidforward(ServletRequestreq,ServletResponseres);
在一个Servlet中包含另一个Servlet的内容,15,Servlet间通信2-1,以下示例演示Servlet间通信,Stringuid=request.getParameter(txtuserid);
ServletContextcontext=getServletContext();
context.setAttribute(userid,uid);
RequestDispatcherdispatcher=getServletContext().getRequestDispatcher(/usersServlet2);
if(dispatcher=null)response.sendError(response.SC_NO_CONTENT);
dispatcher.forward(request,response);
out.close();
演示:
示例9,使用getServletContext()方法创建RequestDispatcher对象,用于访问另一个Servlet的内容,16,Servlet间通信2-2,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
Connectioncon=DriverManager.getConnection(jdbc:
odbc:
petclinicapps,sa,“sa);
Statements=con.createStatement();
ResultSetrs=s.executeQuery(Select*fromCustomerRegistrationwhereUserId=+obj.toString()+);
booleanflag=rs.next();
if(flag=true)password=rs.getString
(2);
confirm=rs.getString(3);
firstname=rs.getString(4);
lastname=rs.getString(5);
gender=rs.getString(6);
age=rs.getString(7);
调用第一个Servlet时,此Servlet创建与jdbc:
odbc驱动程序的连接,并获取用户的详细信息,17,Servlet上下文,将所有Servlet所共有的属性和资源存储于ServletContext接口对象。
处理上下文属性的方法为:
publicObjectgetAttribute(Stringname);
返回Servlet容器属性名称。
如果该名称没有属性则返回null,publicvoidsetAttribute(Stringname,Objectobject);
将对象绑定到Servlet上下文中给定的属性名称,publicvoidremoveAttribute(Stringname);
删除给定名称的属性,18,聊天程序的业务,要求使用Servlet编写聊天程序完成如下功能:
用户输入一个昵称后,可以参加聊天,该昵称用于聊天应用程序的用户名用户通过在一个文本框中输入发送的消息后点击命令按钮参与聊天用户应看见所有参与聊天的人和他们的全部聊天记录。
没有其他的权限控制用户应能够使用中文聊天,19,总结,可以使用会话跟踪对客户端发出的一系列请求进行跟踪不同的会话跟踪技术包括用户授权、隐藏表单字段、URL重写和CookieServlet使用RequestDispatcher接口的forward()和include()方法进行通信Servlet上下文用于存储不同Servlet的信息ServletConfig接口的getServletContext()方法用于配置Servlet上下文,20,