??xml version="1.0" encoding="utf-8" standalone="yes"?>www.亚洲视频,亚洲精品资源在线,久久综合狠狠综合http://www.aygfsteel.com/zhaijianhui/category/11279.html研究java技?/description>zh-cnTue, 27 Feb 2007 19:23:14 GMTTue, 27 Feb 2007 19:23:14 GMT60在线人数l计,解决了关闭浏览器H口Q释放session的问?/title><link>http://www.aygfsteel.com/zhaijianhui/archive/2006/07/31/61072.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Mon, 31 Jul 2006 11:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhaijianhui/archive/2006/07/31/61072.html</guid><wfw:comment>http://www.aygfsteel.com/zhaijianhui/comments/61072.html</wfw:comment><comments>http://www.aygfsteel.com/zhaijianhui/archive/2006/07/31/61072.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhaijianhui/comments/commentRss/61072.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhaijianhui/services/trackbacks/61072.html</trackback:ping><description><![CDATA[ <span id="post1" style="FONT-SIZE: 12px; COLOR: #000000">//SessionCounter.java<font color="#ffffff">\ozdvw</font><br />package SessionCount;<font color="#ffffff">e?</font><br />import javax.servlet.*; <font color="#ffffff">L9k0</font><br />import javax.servlet.http.*; <font color="#ffffff">plT</font><br />import java.io.*; <font color="#ffffff">w;</font><br />import java.util.*; <font color="#ffffff">JC;@</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  @b!Q5</font><br />public class SessionCounter extends HttpServlet  implements HttpSessionListener { <font color="#ffffff">2#</font><br />private static final String CONTENT_TYPE = "text/html; charset=GBK"; <font color="#ffffff">bd35</font><br />private static int activeSessions = 1; <font color="#ffffff">xZi"Yx</font><br />//Initialize global variables <font color="#ffffff">+iRX;1</font><br />public void init() throws ServletException { <font color="#ffffff">n3</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  {Ytdk</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  ri04&</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  C</font><br />//Process the HTTP Get request <font color="#ffffff">@8Ob%</font><br />public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { <font color="#ffffff">zH</font><br />  response.setContentType(CONTENT_TYPE); <font color="#ffffff">EPjJ</font><br />  HttpSession session=request.getSession(); <font color="#ffffff">]g</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  )9lR?P</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  !S</font><br />//Clean up resources <font color="#ffffff">UxUNe</font><br />public void destroy() { <font color="#ffffff">:=e2NM</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  W'F</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  aHW&x9</font><br />public void sessionCreated(HttpSessionEvent httpSessionEvent) { <font color="#ffffff">HH</font><br />  activeSessions++; <font color="#ffffff">DyZpv</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  4WJ</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  8)#.</font><br />public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { <font color="#ffffff">\s,_t</font><br />  activeSessions--; <font color="#ffffff">*z</font><br />  System.out.println("test test");<font color="#ffffff">$s0T@W</font><br />//  System.out.println("---111"); <font color="#ffffff">ZF+</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  MX</font><br />public static int getActiveSessions() { <font color="#ffffff">tQ</font><br /> return activeSessions; <font color="#ffffff">)a4</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  y%s</font><br />} <font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  n-=u*</font><br />Q/Q/<font color="#ffffff">$E</font><br />Q/Q/<font color="#ffffff">1^[</font><br />//count.jsp<font color="#ffffff">?</font><br /><%@ page import="SessionCount.SessionCounter"%> <font color="#ffffff">r-cXS</font><br /><%@ page language="java"  contentType="text/html; charset=gb2312"<font color="#ffffff">{Z</font><br />   pageEncoding="gb2312"%><font color="#ffffff">~|Q"eP</font><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><font color="#ffffff">, l</font><br /><html><font color="#ffffff">z></font><br /><head><font color="#ffffff">&5)~</font><br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><font color="#ffffff">%G*M?</font><br /><title>Insert title here</title><font color="#ffffff">ij7z</font><br /></head><font color="#ffffff">$i:</font><br /><script language="javascript" type="text/javascript"><font color="#ffffff">?.k</font><br /><!--<font color="#ffffff">#*>}</font><br />function MM_callJS(jsStr) { //v2.0<font color="#ffffff">mnu)IK</font><br /> return eval(jsStr)<font color="#ffffff">-A</font><br />}<font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  ]M\-</font><br />//--><font color="#ffffff">#}q</font><br /></script><font color="#ffffff">rs(</font><br /><script language="javascript"><font color="#ffffff">Ax%Qs3</font><br />function removeline(){<font color="#ffffff">Q \@</font><br />if(event.clientX<0&&event.clientY<0)<font color="#ffffff">.45</font><br />{<font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  y!Rw%u</font><br />document.write('<iframe width="100" height="100" src="remove.jsp"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0  id=WebBrowser width=0></OBJECT>');<font color="#ffffff">Dgo!x</font><br />document.all.WebBrowser.ExecWB(45,1);<font color="#ffffff">[</font><br />}<font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  ad6+ </font><br />}<font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  1`maF</font><br /></script><font color="#ffffff">0.</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  9</font><br /><body onUnload="MM_callJS('removeline()')"><font color="#ffffff">I=QwN</font><br />在线Q?lt;%= SessionCounter.getActiveSessions() %> <font color="#ffffff">Abd\</font><br /></body><font color="#ffffff">.</font><br /></html><font color="#ffffff">YZmy</font><br />////////////////////////////////<font color="#ffffff">6K6(k</font><br />///////////////////////////////<font color="#ffffff">HoW?y</font><br />remove.jsp<font color="#ffffff">Z{>=</font><br />/////<font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  ]|65(</font><br /><%@ page language="java" contentType="text/html; charset=gb2312"<font color="#ffffff">!</font><br />   pageEncoding="gb2312"%><font color="#ffffff">4"cD</font><br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><font color="#ffffff">|r<G</font><br /><html><font color="#ffffff">8</font><br /><head><font color="#ffffff">m.</font><br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><font color="#ffffff">$#9</font><br /><title>Insert title here</title><font color="#ffffff">H/hoe0</font><br /></head><font color="#ffffff">z_g_</font><br /><body><font color="#ffffff">?=9</font><br /><%session.invalidate();%><font color="#ffffff">i</font><br /></body><font color="#ffffff">-r</font><br /></html><font color="#ffffff">Lw;7{.</font><br />///////////////////////////<font color="#ffffff">}PiE</font><br />/////////////////////////////<font color="#ffffff">[</font><br />web.html<font color="#ffffff">P&</font><br />Q^Q^Q^Q^Q^Q^加上<font color="#ffffff">Bz2J</font><br /><listener> <font color="#ffffff">y+</font><br />  <listener-class>SessionCount.SessionCounter</listener-class> <font color="#ffffff">q1d{</font><br /></listener> <font color="#ffffff">h1</font><br /><span id="post2" style="FONT-SIZE: 12px; COLOR: #000000">if(event.clientX<0&&event.clientY<0)判断览器是关闭q是h Q因为刷C会调用onunload<font color="#f3f6fa">&&</font><br /><font color="#f3f6fa">©辑ֆU技论坛 -- 辑ֆU技论坛  c07F</font><br />document.all.WebBrowser.ExecWB(45,1);是无提示的关闭浏览器<font color="#f3f6fa">!Q!*pf</font><br />classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 <font color="#f3f6fa">|0gLI</font><br />q个是调用不弹出对话框的ҎQ实际是调用pȝ的方法如?<font color="#f3f6fa">]9M</font><br />document.all.WebBrowser.ExecWB(45,1); <font color="#f3f6fa">f:</font><br />因ؓ在javascript当中不能调用javaҎQ所以选择另外写一个jsp文g用于调用Q?font color="#f3f6fa">;?(5yi</font><br />invalidate()ҎQ?font color="#f3f6fa">(?A|`K</font><br /><font color="#f3f6fa">©辑ֆU技论坛 -- 辑ֆU技论坛  xv</font><br />现在q个l果是正的Q因为我把private static int activeSessions = 1; Q/q里Ҏ?,本来照理应该设ؓ0的,可以我运行第一ơhttp://localhost:8080/servlet/count.jsp的时候得到的?Q所以我才把它改?的,<font color="#f3f6fa">dKOp0</font><br />那们老师或同学知道的话,ȝ告诉怎么ZQؓ什么在W一ơ创建session时不能触发事件sessionCreated()<font color="#f3f6fa">Rw</font><br /><br /><span id="post3" style="FONT-SIZE: 12px; COLOR: #000000">现在q个l果是正的Q因为我把private static int activeSessions = 1; Q/q里Ҏ?,本来照理应该设ؓ0的,可以我运行第一ơhttp://localhost:8080/servlet/count.jsp的时候得到的?Q所以我才把它改?的, <font color="#ffffff">h(</font><br />Qؓ什么在W一ơ创建session时不能触发事件sessionCreated()<font color="#ffffff">g?</font><br /><br /><span id="post4" style="FONT-SIZE: 12px; COLOR: #000000">session是个双向机制Q第一ơ访问的时候,是从客户端发LQ浏览器不知道这个网|否需要session,所以浏览器不会创徏sessionId,当这个请求到达服务器的时候,没有sessionId,<font color="#f3f6fa">d}--5</font><br /><font color="#f3f6fa">©辑ֆU技论坛 -- 辑ֆU技论坛  r0_/S</font><br />SessionCounter 是被嵌在jsp里的Q所以第一ơ显C的时候,得到jsp面的session创徏是在jsp面滞后Q也是说SessionCounter是滞后于jsp面?<font color="#f3f6fa">xKTZrv</font><br /><font color="#f3f6fa">©辑ֆU技论坛 -- 辑ֆU技论坛  V@)</font><br />Z说一句,extends HttpServlet 是多余的?font color="#f3f6fa">]&</font><br /><br /><span id="post5" style="FONT-SIZE: 12px; COLOR: #000000">在页面里设|一个退出按钮.调用quit.jsp<font color="#ffffff">=</font><br />它的内容是:<font color="#ffffff">h></font><br />我们用一个quit.jsp来处理用户退出系l的操作Qquit.jsp负责注销sessionQ及旉放资源?font color="#ffffff">>D6T</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  uj&B</font><br />  ·注销session?font color="#ffffff">Z5K&</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  ##</font><br />  ·关闭览器窗口?font color="#ffffff">@Q(</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  TP^wA</font><br />  其代码如下所C:<font color="#ffffff">"</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  IWeVHc</font><br />1. Q?@ page contentType="text/html; charset=GBK" %Q?font color="#ffffff">z</font><br />2. Q?<font color="#ffffff">E</font><br />3.  session.invalidate();<font color="#ffffff">F"[}H</font><br />4. %Q?font color="#ffffff">A</font><br />5. Qscript language="javascript" Q?font color="#ffffff">4_</font><br />6.  window.opener = null;<font color="#ffffff">`ngL</font><br />7.  window.close();<font color="#ffffff">M|j%</font><br />8. Q?scriptQ?<font color="#ffffff">OnZH?</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  3-L-</font><br />  其中W?行负责注销sessionQ原先放入session的对象将解绑定,{待垃圾回收以释放资源。对于本例而言Qsession中有一个名为ses_userBean的userBean对象Q它是在switch.jsp中放入session的)Q调用session.invalidate()后,userBean从session中解l定Q它的valueUnbound()Ҏ会被触发调用Q然后再{待垃圾回收?font color="#ffffff">A/cr</font><br /><font color="#ffffff">©辑ֆU技论坛 -- 辑ֆU技论坛  +Nb</font><br />  W?~8行是一Djavascript脚本E序Q负责关闭窗口,如果|页不是通过脚本E序打开的(window.open()Q,调用window.close()脚本关闭H口前,必须先将window.opener对象|ؓnullQ如W?行所C,否则览器会弹出一个确定关闭的对话框,W者发现这个问题困C不少的WebE序员,故特别指出?font color="#ffffff">s `|*)</font><br /><br /></span></span></span></span></span> <img src ="http://www.aygfsteel.com/zhaijianhui/aggbug/61072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhaijianhui/" target="_blank">蜘蛛</a> 2006-07-31 19:42 <a href="http://www.aygfsteel.com/zhaijianhui/archive/2006/07/31/61072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jstl分页昄的思?/title><link>http://www.aygfsteel.com/zhaijianhui/archive/2006/07/15/58295.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Sat, 15 Jul 2006 02:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhaijianhui/archive/2006/07/15/58295.html</guid><wfw:comment>http://www.aygfsteel.com/zhaijianhui/comments/58295.html</wfw:comment><comments>http://www.aygfsteel.com/zhaijianhui/archive/2006/07/15/58295.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhaijianhui/comments/commentRss/58295.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhaijianhui/services/trackbacks/58295.html</trackback:ping><description><![CDATA[因ؓ目当中用到分页Q界面用了jstlQ本想用jstll我分页的,试代码如下<br /><br /><%@ taglib uri="<a prefix="c"%><br /><%@ taglib uri="<a prefix="fmt"%><br /><%@ taglib uri="<a prefix="sql"%><br /><%@ page contentType="text/html; charset=gbk"%><br /><html><br /><body><br /> <c:set value="8" var="ipage"/><br /> <c:set value="${param.cpage}" var="cpage" scope="request"/><br /> <c:if test="${empty sessionScope.allCount}"><br /> <sql:query var="rso">select * from test</sql:query><br /> <c:set value="${rso.rowCount}" var="allCount" scope="session"/><br />  </c:if><br /> <sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}"><br /> select * from test<br /> </sql:query><br /> <c:set value="${(allCount+ipage-1)/ipage}" var="allpage"/><br /> <fmt:parseNumber value="${allpage}" integerOnly="true" var="allpage"/><br /> xxx<c:out value="${allpage}"/><br><br /> <c:forEach items="${rs.rows}" var="item"><br /> <c:out value="${item.name}"/><br /> <c:out value="${item.password}"/><br><br /> </c:forEach><br />   <c:if test="${cpage<=1}"><br />    <c:set value="${cpage+1}" var="cpage"/><br />   </c:if><br />   <c:if test="${cpage>allpage}"><br />    <c:set value="${allpage}" var="cpage"/><br />   </c:if><br />  <A href="<a href="http://localhost:8080/jstl/test.jsp?cpage=${cpage-1">http://localhost:8080/jstl/test.jsp?cpage=${cpage-1</a>}">上一?lt;/A><br />  <A href="<a href="http://localhost:8080/jstl/test.jsp?cpage=${cpage">http://localhost:8080/jstl/test.jsp?cpage=${cpage</a>}">当前?lt;/A><br />  <A href="<a href="http://localhost:8080/jstl/test.jsp?cpage=${cpage+1">http://localhost:8080/jstl/test.jsp?cpage=${cpage+1</a>}">下一?lt;/A><br /> <hr><br /></body><br /></html><br />本以样子比v用oracle里的rownumQ如果更换数据库q得改代码)Q来的要好,因ؓ我这里的?br /> <sql:query var="rs" startRow="${ipage*(cpage-1)}" maxRows="${ipage}"><br /> select * from test<br /> </sql:query><br />可是我看了他的源代码Q竟然它利用~存Q每ơ调?br /><sql:query startRow="" maxRows="">它都会把select * from test的数据全部一ơ性查出得C个resultQ再ҎstartRowQ再调用result.next(),startRowơ后才正式帮我们工作Q.<br /><br />看来q是原始的方式速度要快一些.Q?br />......Q进化出来的产物不一定先q?br /><img src ="http://www.aygfsteel.com/zhaijianhui/aggbug/58295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhaijianhui/" target="_blank">蜘蛛</a> 2006-07-15 10:50 <a href="http://www.aygfsteel.com/zhaijianhui/archive/2006/07/15/58295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jstl的一些常用web开源组?/title><link>http://www.aygfsteel.com/zhaijianhui/archive/2006/05/21/47282.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Sun, 21 May 2006 05:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/zhaijianhui/archive/2006/05/21/47282.html</guid><wfw:comment>http://www.aygfsteel.com/zhaijianhui/comments/47282.html</wfw:comment><comments>http://www.aygfsteel.com/zhaijianhui/archive/2006/05/21/47282.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zhaijianhui/comments/commentRss/47282.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zhaijianhui/services/trackbacks/47282.html</trackback:ping><description><![CDATA[ <p>1)不用Validator静态生jsQ直接在客户端用js<br /><%@ page language="java" pageEncoding="UTF-8"%></p> <p><%@ taglib uri="/tags/struts-bean" prefix="bean"%> <br /><%@ taglib uri="/tags/struts-html" prefix="html"%><br /><html:html><br /><HEAD><br /> <TITLE>New Account Registration</TITLE><br /><script type="text/javascript"><br />function runMyJavascript() {<br />alert ("Hello from function");<br />} <br />function add()<br />{<br />alert("Hello this add");<br />}<br /></script><br /></HEAD><br /><BODY BGCOLOR="#FDF5E6"><br /><html:form action="/login.do"><br />Password : <html:text property="password" /><br><br /><html:button property="butType" value="Edit" onclick ="runMyJavascript()" />   <br /><html:button property="addButton" value ="Add" onclick ="add()"/><br /></html:form><br /></BODY><br /></html:html><br />2)<br />jstl的一些常用web开源组?如xtree,树型菜单{?Q?br /><a >http://www.husted.com/central/Resources/</a></p> <img src ="http://www.aygfsteel.com/zhaijianhui/aggbug/47282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zhaijianhui/" target="_blank">蜘蛛</a> 2006-05-21 13:21 <a href="http://www.aygfsteel.com/zhaijianhui/archive/2006/05/21/47282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cookie技术与ƺ骗http://www.aygfsteel.com/zhaijianhui/archive/2006/05/19/46953.html蜘蛛蜘蛛Fri, 19 May 2006 00:42:00 GMThttp://www.aygfsteel.com/zhaijianhui/archive/2006/05/19/46953.htmlhttp://www.aygfsteel.com/zhaijianhui/comments/46953.htmlhttp://www.aygfsteel.com/zhaijianhui/archive/2006/05/19/46953.html#Feedback5http://www.aygfsteel.com/zhaijianhui/comments/commentRss/46953.htmlhttp://www.aygfsteel.com/zhaijianhui/services/trackbacks/46953.html什么是Cookie
Cookie是一U在客户端保持HTTP状态信息的技术,它好比商场发攄优惠卡。顾客在一个商物结账离开Ӟ商场可以军_是否赠送给֮一张优惠卡Q不同顾客的优惠卡上记蝲的信息可以不同,例如Q记载该֮累计购物的金额和有效期限。顾客可以决定是否接受这张优惠卡Q一旦顾客接受了q张优惠卡,那么他在以后每次光顾该商场时Q都携带这张优惠卡Q商Z根据这张优惠卡上记载的信息q行一些特D的事务处理Q例如,计算折扣率和累加本次购物金额。Cookie是在览器访问WEB服务器的某个资源Ӟ由WEB服务器在HTTP响应消息头中附带传送给览器的一片数据,WEB服务器传送给各个客户端浏览器的数据是可以各不相同的。浏览器可以军_是否保存q片数据Q一旦WEB览器保存了q片数据Q那么它在以后每ơ访问该WEB服务器时Q都应在HTTPh头中这片数据回传给WEB服务器。显ӞCookie最先是由WEB服务器发出的Q是否发送Cookie和发送的Cookie的具体内容,完全是由WEB服务器决定的?
WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字D将Cookie信息发送给览器,览器则通过在HTTPh消息中增加Cookieh头字D将Cookie回传lWEB服务器。一个Cookie只能标识一U信息,它至含有一个标识该信息的名UͼNAMEQ和讄|valueQ。一个WEB站点可以l一个WEB览器发送多个CookieQ这P在WEB览器和WEB服务器之间就可以使用多个Cookie来传递多U信息,例如Q用一个Cookie来标识访问者的姓名Q用另外一个Cookie来标识该用户d站点的次数。一个Cookie除了有名U和讄值外Q它q可以有一些其他的附加属性,例如QCookie的有效时间。如果设|了Cookie的有效时_接受它的览器进E将该Cookie保存在计机盘中,只有该Cookie出有效旉后才被删除,q样的Cookie被同一台计机上启动的多个览器进E共享。正如一个顾客可以有多家商场提供的优惠卡一P一个WEB览器也可以存储多个WEB站点提供的Cookie。ؓ了防止Cookie塞满客户机的盘Q浏览器一般只允许存放300个CookieQ每个站Ҏ多存?0个CookieQ每个Cookie的大限制ؓ4KB。如果没有设|Cookie的有效时_接受它的览器进E只该Cookie保存在自q内存I间中,在该览器进E关闭时Q它里面保存的所有Cookie也将随之消失?
Cookie实现了一U在览器和服务器之间生有状态会话的方式Q它可以把一个浏览器讉K的同一个服务器上的所有程序诏qv来,在这些程序之间传递数据。例如,当用户用浏览器讉K某个|站的登录程序进行登录后Q无个浏览器再访问该|站的哪个程序,其他E序都能知道讉K者的w䆾信息Q这是在WEB站点中非常普遍的一个应用。这U应用通常是采用Cookie技术来实现的,当WEB服务器程序验证登录请求中的用户名和密码后Q生一个标识该用户w䆾的标识号Q然后在响应消息中将该标识号以Cookie的Ş式传递给览器,览器在以后每次讉K该WEB服务器时Q都自动在请求消息头中将标识号又以Cookie的Ş式返回给WEB服务器,凭借浏览器q回的标识号QWEB服务器的其他E序p分L出当前请求是由哪个用户发出的。但是,有一点要注意Q不保存在硬盘中的Cookie信息是否可以被同一台计机上启动的多个览器进E共享,不同的浏览器有不同的处理方式。对于IE览器来_保存在其中一个浏览器q程的内存空间中的Cookie是不能被其他览器进E共享的Q这׃出现同一台计机上的每个览器进E都会与服务器Ş成各自独立的会话Q而对于Mozilla  Firefox览器来_所有的q程和标{N都共享cookie信息。另外,在IE览器中按Ctrl-N键(或者单几Z文件”;;“新建”;;“窗口”菜单)打开的窗口或者是用javascript的window.open语句打开的窗口,都会׃n原窗口的Cookie信息Q因为它们属于同一个浏览器q程内部的多个窗?张孝老师的<深入体验JavaWeb开发内q?gt;手稿很期待这本书的面?
///
我们学习了可以用jsp CookiecL创徏cookieQ当然其它语a也可以创建包括客L脚本语言javascript,vbscript同在我们主要谈谈用javascript,和html来创建cookie
1 Creating a Cookie that Is Valid Until a Certain Date
<HTML>
<HEAD>
<TITLE>Creating a cookie that is valid until a certain date</TITLE> <META
HTTP-EQUIV="Set-Cookie" CONTENT="userId=678;expires=Wednesday, 26-Dec-01 16:00:00 GMT;
path=/">
</HEAD>
<BODY>
Unless you set your browser to not accept cookies, a cookie called userId with a value of
678 has been created for you.
</BODY>
</HTML>
/////
2 Creating Cookies with document.cookiess
document.cookiess = "cookieName=cookievalue
 [; expires=timeInGMTString]
 [; path=pathName]
 [; domain=domainName]
 [; secure]"
Listing 25.3 Creating a Cookie with document.cookiess
<HTML>
<HEAD>
<TITLE>Creating a cookie with document.cookiess</TITLE>
<SCRIPT LANGUAGE="javascript">
document.cookiess="Quantity=7";
</SCRIPT>
</HEAD>
<BODY>
This page creates a cookie on the client side.
Make sure that your browser is set to accept cookies.
</BODY>
</HTML>
Creating Cookies with the setCookie Function
For example, you'll want to create a cookie when your user chooses to buy something in your online store web application
Listing 25.4 The setCookie Function
<SCRIPT LANGUAGE="javascript">
function setCookie(name, value, expires, path, domain, secure) {
 document.cookiess = name + "=" + escape(value) +
   ((expires) ? "; expires=" + expires.toGMTString() : "") +
   ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
}
</SCRIPT>
Listing 25.7 An Example that Creates a Cookie with an Expiration Date
<HTML>
<HEAD>
<TITLE>Using the setCookie function</TITLE>
<SCRIPT LANGUAGE="javascript">  
function setCookie(name, value, expires, path, domain, secure) {
 document.cookiess = name + "=" + escape(value) +
   ((expires) ? "; expires=" + expires.toGMTString() : "") +
   ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
}

function fixDate(date) {
   var base = new Date(0);
   var skew = base.getTime();
   if (skew > 0) date.setTime(date.getTime() - skew);
}

var expiryDate = new Date();
fixDate(expiryDate);
expiryDate.setTime(expiryDate.getTime() + 365 * 24 * 60 * 60 * 1000);
setCookie("authorizationLevel", 2, expiryDate);

</SCRIPT>
</HEAD>
<BODY>
A cookie which is valid for a year has been created for this page.
</BODY>
</HTML>
Listing 25.9 Writing and Reading Cookies
<HTML>
<HEAD>
<TITLE>Writing and Reading Cookies</TITLE>
<SCRIPT LANGUAGE="javascript">

function setCookie(name, value, expires, path, domain, secure) {
 document.cookiess = name + "=" + escape(value) +
   ((expires) ? "; expires=" + expires.toGMTString() : "") +
   ((path) ? "; path=" + path : "") +
   ((domain) ? "; domain=" + domain : "") +
   ((secure) ? "; secure" : "");
}

function getCookie(name) {
 var cName = name + "=";
 var dc = document.cookiess;
 if (dc.length>0) {
   begin = dc.indexOf(cName);
   if (begin != -1) {
     begin += cName.length;
     end = dc.indexOf(";", begin);
     if (end == -1) end = dc.length;
       return unescape(dc.substring(begin,end));
   }
 }
 return null;
}

</SCRIPT>
</HEAD>
<BODY>
Type in your user id, and then click the Create Cookie button.
A cookie will be created for you.
<BR>
<FORM>
User ID: <INPUT TYPE=TEXT NAME=UserID>
<BR>
<INPUT TYPE=BUTTON value="Create Cookie"
onClick='setCookie("UserID", document.FORMs[0].UserID.value)'>
<BR>
Click the Read Cookie button to display the cookie.
<INPUT TYPE=BUTTON value="Read Cookie"
onClick='alert(getCookie("UserID"))'>
</FORM>
</BODY>
</HTML>
Listing 25.10 Deleting a Cookie
<SCRIPT LANGUAGE="javascript">
function deleteCookie (name, path, domain) {
 if (getCookie(name)) {
   document.cookiess = name + "=" +
   ((path==null) ? "" : "; path=" + path) +
   ((domain==null) ? "" : "; domain=" + domain) +
   "; expires=Thu, 01-Jan-70 00:00:01 GMT";
 }
}

function getCookie(name) {
 var cName = name + "=";
 var dc = document.cookiess;
 if (dc.length>0) {
   begin = dc.indexOf(cName);
   if (begin != -1) {
     begin += cName.length;
     end = dc.indexOf(";", begin);
     if (end == -1) end = dc.length;
       return unescape(dc.substring(begin,end));
   }
 }
 return null;
}
</SCRIPT>
Checking If the Browser Can Accept Cookies Using javascript
用javascript来检查用h览器是否支持cookie技?
Listing 25.11 Checking If the Browser Can Accept Cookies Using javascript
<HTML>
<HEAD>
<SCRIPT LANGUAGE="javascript">
document.cookiess="test=OK";

function getCookie(name) {
 var cName = name + "=";
 var dc = document.cookiess;
 if (dc.length>0) {
   begin = dc.indexOf(cName);
   if (begin != -1) {
     begin += cName.length;
     end = dc.indexOf(";", begin);
     if (end == -1) end = dc.length;
       return unescape(dc.substring(begin,end));
   }
 }
 return null;
}

if (getCookie('test')==null)
 alert("Please change your browser to accept cookies.");
else
 alert("Browser accepts cookies");

</SCRIPT>
</HEAD>

<BODY>
The page content
</BODY>
</HTML>
Checking If the Browser Accepts Cookies Without javascript
不用javascript来检查用h览器是否支持cookie技术!Q!
Another way to check if the browser is willing to accept cookies is by creating a cookie on one page and then immediately redirecting the user to a second page. In the second page you can then try to read the cookies. The code in Listing 25.12 uses the <META> tag to create a cookie called "test" and then redirects the browser to a second page called checkCookie.jsp (in Listing 25.13).
Listing 25.12 Checking Browser Cookie Acceptance with Redirection
<HTML>
<HEAD>
<META HTTP-EQUIV="Set-Cookie" CONTENT="test=ok;">
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=checkCookie.jsp">
</HEAD>
</HTML>
In the second page, implemented using ASP in this example, you try to read the same cookie using the code in Listing 25.13.
Listing 25.13 Reading the Cookies in the Browser Cookie Acceptance Test
<%
 If Request.cookiesss("test") <> "" Then
   Response.Write "Cookies accepted."
 Else
   Response.Write "Cookies not accepted."
 End If
%>
Even though the code in this example only sends a message to the user telling him or her whether or not his or her browser accepts cookies, you can modify it to suit your needs. For instance, you can transfer the user to a warning page if the cookies are not accepted.
了解一个cookie文g里面的内容的含义Q!Q!Q!Q?
3.5 What are all those entries in my cookies.txt file?

The layout of Netscape's cookies.txt file is such that each line contains one name-value pair. An example cookies.txt file may have an entry that looks like this:
.netscape.com     TRUE   /  FALSE  946684799   NETSCAPE_ID  100103
Each line represents a single piece of stored inFORMation. A tab is inserted between each of the fields.

From left-to-right, here is what each field represents:

domain - The domain that created AND that can read the variable.
flag - A TRUE/FALSE value indicating if all machines within a given domain can access the variable. This value is set automatically by the browser, depending on the value you set for domain.
path - The path within the domain that the variable is valid for.
secure - A TRUE/FALSE value indicating if a secure connection with the domain is needed to access the variable.
expiration - The UNIX time that the variable will expire on. UNIX time is defined as the number of seconds since Jan 1, 1970 00:00:00 GMT.
name - The name of the variable.
value - The value of the variable.
好现在还看看其它斚w的,有趣的一面!
在window当中cookie一般存攑֜C:\Documents and Settings\wwwfox\Cookies
wwwfox为我dxp的̎?当然׃ie版本不同存放的位|也有所不同,你可以到微Y官方|站上去查看,当然最好的Ҏ是搜一下Cookie文g可以知道具体在存放在那里了,
下面是Cookies下面的一个Cookie文gwwwfox@cgi-bin.txt内容?
advpost
0
219.239.245.203/cgi-bin/
1536
1276665728
29789832
2326352352
29783688
对应Ҏ
advpost--->cookie .getName
0--->cookie
.getvalue()
1536-->cookie
.getMaxAge()如返回ؓ-1表示关闭览器cookie失?
  后面是创徏日期,失效日期
  创徏旉,失效旉
现在教你怎么用jsp~程查看上网时网站给你创建的cookie文gQ?
问题一.cookiess只能由它创徏的网站访问,那么我们怎么能够在自q电脑是运行自q服务器查看出来呢Q如果能成那是cookieƺ骗。R入别人网站的Ҏ?
好通过CZ来演C:, wwwfox@csdn[2].txt当然它的命名?
你的用户电脑帐号@产生的COOKIE的网|件所在的WEB目录[COOKIE改变的次数].txt
wwwfox电脑帐号在访问csdn|站时是不会发送到csdn|站上去的,也就是只能在我的电脑wwwfox帐号上用这个cookie其hQ帐P是不能用的。?
在C:\Documents and Settings\wwwfox\Cookies下我有一个登录csdn|站时由它创建的cookie
wwwfox@csdn[2].txt的内ҎQ?
ABCDEF
hbWhkUhCWfRTUyeAVO5k79qTBFZXtGV2qfwAROv%252fvVk9qF3rfkcZQbl1IdMsBxhy15Y%252fqwN2XiLyTy%252fDGuW4LY7zZll16huuVbnJ0CEun26I%252f2bynXLPd2Ymq%252bn2Mt11pSP5w3%252fZNXt9ZJEp79VMCw%253d%253d
csdn.net/
1536
3743055744
29786511
2555961280
29783695
////////////////////////////
在C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\test新徏一个文件checkCookie.jsp
<%@page pageEncoding="gb2312" %>
<%
Cookie[] cookie=request.getCookies();
out.println("this is
www.csdn.net/<br>");
out.println("<br>");
for(int i=0;i<cookie.length;i++)
{
if(cookie
.getName().equals("ABCDEF"))
{
String name=cookie
.getName();
String value=cookie
.getvalue();
int maxage=cookie
.getMaxAge();
out.println("name="+cookie
.getName()+"<br>");
out.println("value="+cookie
.getvalue()+"<br>");
out.println("maxage="+cookie
.getMaxAge()+"<br>");
//out.println("setMaxAge?0");
//cookie
.setMaxAge(30);
//out.println("之后为maxage="+cookie
.getMaxAge()+"<br>");
out.println("domain="+cookie
.getDomain()+"<br>");
out.println("secure="+cookie
.getSecure()+"<br>");
out.println("path="+cookie
.getPath()+"<br>");
}
}
%>
好现在访问一?
http://localhost:8080/test/checkCookie.jsp是不是显C:
this is
www.csdn.net
而没有取到|因ؓ只能在它的domain下能讉K到这个cookie
好现在我们来
把C:\WINDOWS\SYSTEM32\DRIVERS\etc下面的hosts.sam打开修改其中?
127.0.0.1  hostname
?27.0.0.1      
www.csdn.net
在这里你q可以再d多行和上面相访的键值对Q这个比外网的dsn优先U高所以它先把www.csdn.net解释成本地的127.0.0.1所以你可以由q个讉K了,q也可以解释Z么我们可以在ie敲http://localhsot的原因,q里localhost你可随便Ҏ你喜Ƣ的名称.
保存
修改conf/servlet.xml当中的端口ؓ80端口
<Connector port="80" maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" redirectPort="8443" acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true" />
好现在启动tomcat讉Khttp://www.csdn.net/test/checkCookie.jsp
得到l果啦:
this is
www.csdn.net

name=ABCDEF
value=hbWhkUhCWfRTUyeAVO5k79qTBFZXtGV2qfwAROv%252fvVk9qF3rfkcZQbl1IdMsBxhy15Y%252fqwN2XiLyTy%252fDGuW4LY7zZll16huuVbnJ0CEun26I%252f2bynXLPd2Ymq%252bn2Mt11pSP5w3%252fZNXt9ZJEp79VMCw%253d%253d
maxage=-1
domain=null
secure=false#一般ؓ默认值false不然为truepC在像ssl验证时才能访问些cookie
path=null
׃在本Z能创建cookie所以不能演CZ改cookie值给大家?
辑ֆ的论坛cookie
存放用户名和密码没有l过加密的如
amembernamecookie
javazhaiQ这里是我的用户?
219.239.245.203/cgi-bin/
1536
2476861952
29789838
3517958576
29783694
*
apasswordcookies
xxxxxx#q里是我的密?
219.239.245.203/cgi-bin/
1536
2476861952
29789838
3517958576
29783694
而csdn是经q加密方式存储的?
ABCDEF
hbWhkUhCWfRTUyeAVO5k79qTBFZXtGV2qfwAROv%252fvVk9qF3rfkcZQbl1IdMsBxhy15Y%252fqwN2XiLyTy%252fDGuW4LY7zZll16huuVbnJ0CEun26I%252f2bynXLPd2Ymq%252bn2Mt11pSP5w3%252fZNXt9ZJEp79VMCw%253d%253d
q一串肯定包含了用户名和密码的,它经q某U方式取得原始用户名和密?



蜘蛛 2006-05-19 08:42 发表评论
]]>
վ֩ģ壺 | | ˮ| | ƽԭ| | ƽ| ³ƶ| ͨ| | ͼƬ| ˮ| ׯ| Ƿ| | ɽ| | ȷɽ| ͩ®| | ʱ| ԣ| | β| | ˮ| | Դ| | | ˮ| ¬| | | | | °Ͷ| | Ī| ɽ| |