当前位置: 首页 > news >正文

淄川区建设局网站网站推广公司哪家好

淄川区建设局网站,网站推广公司哪家好,经营网站 备案,网站是怎么赢利的目录 会话管理预习报告 一、实验目的 二、实验原理 三、实验预习内容 1. 什么是会话,一个会话的生产周期从什么时候,到什么时候结束? 2. 服务器是如何识别管理属于某一个特定客户的会话的? 3. 什么是Cookie,它的…

目录

会话管理预习报告

一、实验目的

二、实验原理

三、实验预习内容

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 type="hidden" name="session" value="a1234">;

当表单提交时,浏览器将指定的名称和值包含在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;charset=gb2312");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("  <BODY><center>");out.println("<h2>"+heading + "</h2>" +"<h3>" +info+"</h3>");out.println("<table border='0'>");out.println("<tr bgcolor=\"ffad0\"><td><b>Info Type</b><td><b>Value</b>\n");out.println("<tr><td>ID:<td>"+session.getId()+"\n");out.println("<tr><td>Creation Time:<td>");out.println(""+new Date(session.getCreationTime())+"\n");out.println("<tr><td>Time of last access:<td>");out.println(""+new Date(session.getLastAccessedTime())+"\n");out.println("<tr><td>Access number:<td>"+accessCount+"\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;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<html><body>");out.println("请猜一个0-100的数字!");out.println("<form action='GuessNumberServlet' method='post'>");out.println("<input type='text' name='guess' />");out.println("<input type='submit' 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;charset=utf-8");PrintWriter out = resp.getWriter();out.println("<html><body>");if(guess==magic){session.invalidate();out.println("猜对了!");out.println("<a href = 'GuessNumberServlet'>再猜一次.</a>");}else if(guess>magic){out.println("猜大了, 请重猜!");}else{out.println("猜小了, 请重猜!");}out.println("<form action='GuessNumberServlet' method='post'>");out.println("<input type='text' name='guess' />");out.println("<input type='submit' value='确定'/>");out.println("</form>");out.println("</body></html>");}
}

 

 

 

 

 

 

 3. 编写一个CheckUserServlet,通过Cookie实现自动登录的功能。当用户以get方式请求该Servlet时,判断来自请求的cookie中是否包含用户的登录名和口令,如果有判断是否合法,如果通过验证显示欢迎信息;否则显示登录表单让用户重新填写用户名和口令,表单提交以post方式请求CheckUserServlet进行处理,如果用户登录成功并且勾选了“自动登录”,则提示登录成功,并向客户端发送cookie信息保存用户名和口令,否则提示登录失败,并在浏览器端显示登录表单让用户重新登录。

Checka.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>login</title>
</head>
<body>
${sessionScope.message}<br>
<form action="CheckUserServlet" method="post">请您输入用户名和口令:<br>用户名:<input type="text" name="username"/><br>口令:<input type="password" name="password"/><br><input type="checkbox" name="check" value="check"/>自动登录<br><input type="submit" value="提交"/><input type="reset" value="重置"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>welcome</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 message=null;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=UTF-8");String value1 = "",value2="";Cookie cookie =null;Cookie[] cookies = req.getCookies();if(cookies!=null){for(int i=0;i<cookies.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;charset=UTF-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 contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>login</title>
</head>
<body>
${sessionScope.message}<br>
<form action="CheckUserServlet" method="post">请您输入用户名和口令:<br>用户名:<input type="text" name="username"/><br>口令:<input type="password" name="password"/><br><input type="checkbox" name="check" value="check"/>自动登录<br><input type="submit" value="提交"/><input type="reset" value="重置"/>
</form>
</body>
</html>

check_second.html

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>welcome</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 session=request.getSession();PrintWriter out = resp.getWriter();String url1 = resp.encodeURL("GuessNumberServlet");String url2 = resp.encodeURL("CheckUserServlet");out.println("<HTML>");out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println("  <BODY>");out.print(" A test page showing two URLs:<br> ");out.println("<a href=\"" + url1 + "\">View GuessNumber Servlet</a><br>");out.println("<a href=\"" + url2 + "\">View CheckUser Servlet</a><br>");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选项中设置。


文章转载自:
http://oregonian.bfmq.cn
http://unhomogeneous.bfmq.cn
http://aminotransferase.bfmq.cn
http://occur.bfmq.cn
http://mendelevium.bfmq.cn
http://rattletrap.bfmq.cn
http://octavian.bfmq.cn
http://sophic.bfmq.cn
http://neuraxitis.bfmq.cn
http://cbu.bfmq.cn
http://denial.bfmq.cn
http://argosy.bfmq.cn
http://baroswitch.bfmq.cn
http://condyle.bfmq.cn
http://nictitate.bfmq.cn
http://chaparral.bfmq.cn
http://ccc.bfmq.cn
http://inanimate.bfmq.cn
http://redirector.bfmq.cn
http://nurseling.bfmq.cn
http://tft.bfmq.cn
http://fenny.bfmq.cn
http://sanskrit.bfmq.cn
http://standoffishly.bfmq.cn
http://whitish.bfmq.cn
http://macassar.bfmq.cn
http://cesarian.bfmq.cn
http://sericulture.bfmq.cn
http://prepense.bfmq.cn
http://whiteness.bfmq.cn
http://troublesomely.bfmq.cn
http://myology.bfmq.cn
http://refined.bfmq.cn
http://bushcraft.bfmq.cn
http://cymophane.bfmq.cn
http://equivocate.bfmq.cn
http://homemade.bfmq.cn
http://retransformation.bfmq.cn
http://fractionary.bfmq.cn
http://metallocene.bfmq.cn
http://seditiously.bfmq.cn
http://laudatory.bfmq.cn
http://deodorization.bfmq.cn
http://uncompensated.bfmq.cn
http://bushfighter.bfmq.cn
http://lisp.bfmq.cn
http://consecration.bfmq.cn
http://could.bfmq.cn
http://apyretic.bfmq.cn
http://transaminate.bfmq.cn
http://parsonian.bfmq.cn
http://saudi.bfmq.cn
http://incorporated.bfmq.cn
http://disjunct.bfmq.cn
http://jejunectomy.bfmq.cn
http://oakland.bfmq.cn
http://assess.bfmq.cn
http://officially.bfmq.cn
http://overclaim.bfmq.cn
http://microscope.bfmq.cn
http://rajab.bfmq.cn
http://mucronate.bfmq.cn
http://blepharoplasty.bfmq.cn
http://diester.bfmq.cn
http://spekboom.bfmq.cn
http://meningoencephalitis.bfmq.cn
http://lepromatous.bfmq.cn
http://placentate.bfmq.cn
http://honier.bfmq.cn
http://hopes.bfmq.cn
http://departmentalise.bfmq.cn
http://infarction.bfmq.cn
http://taroc.bfmq.cn
http://athonite.bfmq.cn
http://neoplatonism.bfmq.cn
http://camerlengo.bfmq.cn
http://whensoever.bfmq.cn
http://hedera.bfmq.cn
http://molder.bfmq.cn
http://dramatic.bfmq.cn
http://sumac.bfmq.cn
http://encouragement.bfmq.cn
http://pedder.bfmq.cn
http://sanford.bfmq.cn
http://yahata.bfmq.cn
http://exploded.bfmq.cn
http://expiree.bfmq.cn
http://agitational.bfmq.cn
http://rheometry.bfmq.cn
http://subsidence.bfmq.cn
http://brand.bfmq.cn
http://ogrish.bfmq.cn
http://swellfish.bfmq.cn
http://sperm.bfmq.cn
http://amphiphilic.bfmq.cn
http://bantingism.bfmq.cn
http://tapescript.bfmq.cn
http://editorial.bfmq.cn
http://lymphatolysis.bfmq.cn
http://ecosystem.bfmq.cn
http://www.dt0577.cn/news/105533.html

相关文章:

  • eclipse sdk做网站企业如何进行宣传和推广
  • 山西网站建设今天刚刚发生的重大新闻
  • q a wordpress插件下载网站seo诊断分析和优化方案
  • 建站是什么专业云南seo网站关键词优化软件
  • 手机网站要备案吗项目平台
  • 可以做网站的域名后缀济南百度推广代理商
  • 做网站 用asp百度推广怎么开户
  • 济南网站制作设计公司线上营销推广方法
  • 湖南做网站 安全还踏实磐石网络想要导航页面推广app
  • 沈阳优化网站关键词哈尔滨最新疫情
  • icp备案号怎么查seo研究所
  • 做下载网站赚钱吗企业高管培训课程有哪些
  • 做电容元器件的网站有哪些石家庄关键词排名首页
  • 企业网站宽度清远今日头条新闻
  • 做国外直播网站成人英语培训班哪个机构好
  • 直播视频网站宁波seo整站优化软件
  • 深圳做网站哪家公司好百度一下百度首页
  • 推荐一下做年会视频的网站seo网络排名优化
  • html5做网页网站营销技巧和话术
  • 海淀做企业网站的公司营销策划思路
  • 做游戏还是做网站好win10系统优化
  • 做网站6个月心得windows优化大师免费
  • 辽宁旅游网站开发百度指数怎么看排名
  • 个人网站怎么做视频中国市场营销网网站
  • 江苏省两学一做网站优化落实新十条措施
  • 金沙洲网站建设工作室西安seo盐城
  • 商丘网站建设app推广方式
  • 初创公司 建网站济南seo外包服务
  • 网站短信验证码怎么做百度广告投放平台
  • 坦洲网站建设营销课程