石排东莞网站建设,wordpress自豪的采用,免费建电子商务网站,正能量软件不良网站下载目录 会话管理预习报告
一、实验目的
二、实验原理
三、实验预习内容
1. 什么是会话#xff0c;一个会话的生产周期从什么时候#xff0c;到什么时候结束#xff1f;
2. 服务器是如何识别管理属于某一个特定客户的会话的#xff1f;
3. 什么是Cookie#xff0c;它的…目录 会话管理预习报告
一、实验目的
二、实验原理
三、实验预习内容
1. 什么是会话一个会话的生产周期从什么时候到什么时候结束
2. 服务器是如何识别管理属于某一个特定客户的会话的
3. 什么是Cookie它的作用是什么Cookie会给客户端带来安全隐患吗
4.如何使用隐藏表单域传递会话信息一般用在什么情况下
会话管理实验报告
一、实验目的
二、实验要求
三、实验内容与步骤
1. 使用HttpSession对象管理会话。在名为exp04的Web项目下创建一个名为ShowSessionInfo的Servlet显示当前客户的会话ID、会话创建时间、最近一次访问会话的时间、该客户访问会话次数等信息运行的结果要求如下图所示。
2. 使用HttpSession会话对象设计一个GuessNumberServlet.java实现简单的猜数游戏 3. 编写一个CheckUserServlet通过Cookie实现自动登录的功能。当用户以get方式请求该Servlet时判断来自请求的cookie中是否包含用户的登录名和口令如果有判断是否合法如果通过验证显示欢迎信息否则显示登录表单让用户重新填写用户名和口令表单提交以post方式请求CheckUserServlet进行处理如果用户登录成功并且勾选了“自动登录”则提示登录成功并向客户端发送cookie信息保存用户名和口令否则提示登录失败并在浏览器端显示登录表单让用户重新登录。
4. 编写HomeServlet.java对通过超链接请求的两个URL进行重写在浏览器中禁用Cookie后servlet运行效果要求如下图所示。
四、思考题
1. 如何理解会话失效与超时如何通过程序设置最大失效时间如何通过Web应用程序部署描述文件设置最大超时时间二者有什么区别
2. 能否通过客户机的IP地址实现会话跟踪
3. 假如开发的Web应用程序是假设客户支持Cookie的但应用程序部署后你发现大多数客户禁用了Cookie这对应用程序有何影响如何修改它 会话管理预习报告
一、实验目的 1. 了解Web服务器对客户会话跟踪的各种方法 2. 重点掌握使用HttpSession对象跟踪会话的方法 3. 掌握使用Cookie技术跟踪会话的方法 4. 了解URL重写和隐藏表单域的方法。 二、实验原理 HTTP协议是无状态的协议。在很多情况下Web服务器必须能够跟踪客户的状态。比如对于一个购物网站在一个时刻可能有多个客户购物Web服务器必须能够区分不同的客户。一般情况下Web服务器为每个客户配置了虚拟的购物车ShoppingCart。当某个客户请求将一个商品放入购物车时Web服务器必须根据发出请求的客户的身份找到该客户的购物车然后把商品放入其中。 Web服务器跟踪客户的状态通常有4种方法 1使用HttpSession对象管理会话2使用持久的Cookie对象3使用URL重写机制4使用隐藏的表单域。 三、实验预习内容 1. 什么是会话一个会话的生产周期从什么时候到什么时候结束 会话是客户与服务器之间的不中断的请求-响应序列。 开始当一个未知的客户向web应用程序发送第一个请求时就开始了一个会话。 结束当客户结束会话或服务器在一定时限内没有接到客户任何请求时会话结束。 2. 服务器是如何识别管理属于某一个特定客户的会话的 一个客户对应一个会话服务器能够识别出请求来自于哪个客户的会话。 3. 什么是Cookie它的作用是什么Cookie会给客户端带来安全隐患吗 Cookie是客户访问Web服务器时服务器在客户端用户硬盘上存放的信息好像是服务器送给客户的“点心”。Cookie实际上是一小段的文本信息。 作用可以在客户端上保存用户数据起到简单的缓存和用户身份识别等作用保存用户的登陆状态用户进行登陆成功登陆后服务器生成特定的cookie返回给客户端客户端下次访问该域名下的任何页面将该cookie的信息发送给服务器服务器经过检验来判断用户是否登陆记录用户的行为。 安全问题客户可能认为Cookie会带来安全问题因此禁用Cookie。事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行因此也不会带来病毒或攻击你的系统。另外由于浏览器一般只允许存放300个Cookie每个站点的Cookie最多存放20个每个Cookie的大小限制为4 KB因此Cookie不会塞满你的硬盘更不会被用作“拒绝服务”攻击手段。 4.如何使用隐藏表单域传递会话信息一般用在什么情况下 在HTML页面中可以使用下面代码实现隐藏的表单域 input typehidden namesession valuea1234 当表单提交时浏览器将指定的名称和值包含在GET或POST的数据中。这个隐藏域可以用来存储有关会话的信息。 会话管理实验报告
一、实验目的 1. 了解Web服务器对客户会话跟踪的各种方法 2. 重点掌握使用HttpSession对象跟踪会话的方法 3. 掌握使用Cookie技术跟踪会话的方法 4. 了解URL重写和隐藏表单域的方法。 二、实验要求 1. 实验前进行预习完成实验预习报告 2按照每一项实验内容进行上机实践与编程将程序源代码和运行结果图附在实验报告中实验内容对应的部分。 3. 实验预习报告和实验报告打印装订在一起。 4. 将每一次实验的源代码按目录组织保存并压缩按照老师指定的要求进行提交。代码保存方式如exp04表示实验四的Web项目的名称其下保存各项实验内容的源文件及相关资源将整个exp04文件夹进行压缩后命名为班级-姓名-实验04如计171-张三-实验04。 三、实验内容与步骤 1. 使用HttpSession对象管理会话。在名为exp04的Web项目下创建一个名为ShowSessionInfo的Servlet显示当前客户的会话ID、会话创建时间、最近一次访问会话的时间、该客户访问会话次数等信息运行的结果要求如下图所示。 package exp04;import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;WebServlet(name ShowSessionInfo, value /Show)
public class ShowSessionInfo extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {resp.setContentType(text/html;charsetgb2312);HttpSession session req.getSession(true);String heading null;String info Information about your session;Integer accessCount (Integer) session.getAttribute(accessCount);if (accessCount null) {accessCount new Integer(1);heading Welcome,enter this page first time! ;} else {heading Welcome Back! ;accessCount accessCount 1;}session.setAttribute(accessCount,accessCount);PrintWriter out resp.getWriter();out.println(HTML);out.println( BODYcenter);out.println(h2heading /h2 h3 info/h3);out.println(table border0);out.println(tr bgcolor\ffad0\tdbInfo Type/btdbValue/b\n);out.println(trtdID:tdsession.getId()\n);out.println(trtdCreation Time:td);out.println(new Date(session.getCreationTime())\n);out.println(trtdTime of last access:td);out.println(new Date(session.getLastAccessedTime())\n);out.println(trtdAccess number:tdaccessCount\n);out.println(/table);out.println( /center /BODY);out.println(/HTML);}
}2. 使用HttpSession会话对象设计一个GuessNumberServlet.java实现简单的猜数游戏 doget方法显示当前会话的相关信息产生一个1-100的随机数并保存到session作用域中显示表单让用户输入所猜数字表单以post方式提交给该servlet本身进行处理。 dopost方法中将用户输入的数字和session中保存的随机数进行比较如果用户猜的结果正确强制结束会话通过超链接可以在此请求该Servlet重新开始一轮猜数游戏如果结果错误显示错误提示信息和猜数表单允许用户重新猜数。 package exp04;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;WebServlet(name GuessNumberServlet,value /GuessNumberServlet)
public class GuessNumberServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {int num1 (int)(Math.random()*101);HttpSession session req.getSession();session.setAttribute(num,new Integer(num1));resp.setContentType(text/html;charsetutf-8);PrintWriter out resp.getWriter();out.println(htmlbody);out.println(请猜一个0-100的数字);out.println(form actionGuessNumberServlet methodpost);out.println(input typetext nameguess /);out.println(input typesubmit value提交/);out.println(/form);out.println(/body/html);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {int guess Integer.parseInt(req.getParameter(guess));HttpSession session req.getSession();int magic (Integer)session.getAttribute(num);resp.setContentType(text/html;charsetutf-8);PrintWriter out resp.getWriter();out.println(htmlbody);if(guessmagic){session.invalidate();out.println(猜对了!);out.println(a href GuessNumberServlet再猜一次./a);}else if(guessmagic){out.println(猜大了 请重猜!);}else{out.println(猜小了 请重猜!);}out.println(form actionGuessNumberServlet methodpost);out.println(input typetext nameguess /);out.println(input typesubmit value确定/);out.println(/form);out.println(/body/html);}
}3. 编写一个CheckUserServlet通过Cookie实现自动登录的功能。当用户以get方式请求该Servlet时判断来自请求的cookie中是否包含用户的登录名和口令如果有判断是否合法如果通过验证显示欢迎信息否则显示登录表单让用户重新填写用户名和口令表单提交以post方式请求CheckUserServlet进行处理如果用户登录成功并且勾选了“自动登录”则提示登录成功并向客户端发送cookie信息保存用户名和口令否则提示登录失败并在浏览器端显示登录表单让用户重新登录。 Checka.jsp: % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitlelogin/title
/head
body
${sessionScope.message}br
form actionCheckUserServlet methodpost请您输入用户名和口令br用户名:input typetext nameusername/br口令:input typepassword namepassword/brinput typecheckbox namecheck valuecheck/自动登录brinput typesubmit value提交/input typereset value重置/
/form
/body
/html
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitlewelcome/title
/head
body
h1欢迎你/h1
/body
/html CheckUserServlet: package exp04;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;WebServlet(/CheckUserServlet)
public class CheckUserServlet extends HttpServlet {String messagenull;Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType(text/html;charsetUTF-8);String value1 ,value2;Cookie cookie null;Cookie[] cookies req.getCookies();if(cookies!null){for(int i0;icookies.length;i){cookie cookies[i];if(cookie.getName().equals(username)){value1 cookie.getValue();}if(cookie.getName().equals(password)){value2 cookie.getValue();}}if (value1.equals(little bears)value2.equals(123456)){message Welcome!!!(*╹▽╹*)欢迎您value1再次登录该页面;req.getSession().setAttribute(message,message);resp.sendRedirect(check_second.jsp);}else {resp.sendRedirect(check_first.jsp);}}else {resp.sendRedirect(check_first.jsp);}}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType(text/html;charsetUTF-8);String username req.getParameter(username).trim();String password req.getParameter(password).trim();if (!username.equals(little bears)||!password.equals(123456)){message o(╥﹏╥)o用户名或口令不正确,请重试!;req.getSession().setAttribute(message,message);resp.sendRedirect(check_first.jsp);}else {if ((req.getParameter(check)!null) (req.getParameter(check).equals(check))){Cookie nameCookie new Cookie(username,username);Cookie pswdCookie new Cookie(password,password);nameCookie.setMaxAge(60*60);pswdCookie.setMaxAge(60*60);resp.addCookie(nameCookie);resp.addCookie(pswdCookie);}message Welcome!!!(*╹▽╹*)登录成功!;req.getSession().setAttribute(message,message);resp.sendRedirect(check_second.jsp);}}
}check_first.html % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitlelogin/title
/head
body
${sessionScope.message}br
form actionCheckUserServlet methodpost请您输入用户名和口令br用户名:input typetext nameusername/br口令:input typepassword namepassword/brinput typecheckbox namecheck valuecheck/自动登录brinput typesubmit value提交/input typereset value重置/
/form
/body
/htmlcheck_second.html % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitlewelcome/title
/head
body
h1欢迎你/h1
/body
/html首次登录 选择自动登录再次打开已经被记忆 密码或者用户名错误 4. 编写HomeServlet.java对通过超链接请求的两个URL进行重写在浏览器中禁用Cookie后servlet运行效果要求如下图所示。 package exp04;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;WebServlet(/HomeServlet)
public class HomeServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {resp.setContentType(text/html; charset utf - 8);
//HttpSession sessionrequest.getSession();PrintWriter out resp.getWriter();String url1 resp.encodeURL(GuessNumberServlet);String url2 resp.encodeURL(CheckUserServlet);out.println(HTML);out.println( HEADTITLEA Servlet/TITLE/HEAD);out.println( BODY);out.print( A test page showing two URLs:br );out.println(a href\ url1 \View GuessNumber Servlet/abr);out.println(a href\ url2 \View CheckUser Servlet/abr);out.println( /BODY);out.println(/HTML);}
} 四、思考题 1. 如何理解会话失效与超时如何通过程序设置最大失效时间如何通过Web应用程序部署描述文件设置最大超时时间二者有什么区别 当用户在一个指定的期限内处于不活动状态时就将用户的会话终止会话失效超过设定时间终止是会话超时。public void setMaxInactiveInterval(int Interval)设置最大失效时间。在部署文件中下中设置最大超时时间。一个是通过编程方式设置一个是在部署时就已设置。 2. 能否通过客户机的IP地址实现会话跟踪 容器不能使用客户的IP地址唯一标识客户。因为是通过局域网访问Internet尽管在局域网中每个客户有一个IP地址但对于服务器来说客户的实际IP地址是路由器的IP地址所以该局域网的所有客户的IP地址都相同。 3. 假如开发的Web应用程序是假设客户支持Cookie的但应用程序部署后你发现大多数客户禁用了Cookie这对应用程序有何影响如何修改它 来自网站的所有Cookie都被阻止并且计算机上现有的Cookie不能被网站读取。可在Internet选项中设置。