??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲av成人,亚洲欧洲∨国产一区二区三区,亚洲色欲色欲www在线播放 http://www.tkk7.com/rkind/archive/2007/01/10/92846.htmlrkindrkindWed, 10 Jan 2007 03:06:00 GMThttp://www.tkk7.com/rkind/archive/2007/01/10/92846.htmlhttp://www.tkk7.com/rkind/comments/92846.htmlhttp://www.tkk7.com/rkind/archive/2007/01/10/92846.html#Feedback0http://www.tkk7.com/rkind/comments/commentRss/92846.htmlhttp://www.tkk7.com/rkind/services/trackbacks/92846.html 我来解决手机甉|问题 Q?/font>
工具----讄------|络讄-------q营商选择------ 手动 -------选择你用的q营?-----ok  。这样大概要待机?/3旉

rkind 2007-01-10 11:06 发表评论
]]>
很适合摄媄初学者的十多摄影文章!初学者必?/title><link>http://www.tkk7.com/rkind/archive/2006/12/08/86385.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Fri, 08 Dec 2006 08:19:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/12/08/86385.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/86385.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/12/08/86385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/86385.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/86385.html</trackback:ping><description><![CDATA[ <a >http://looline.blogspot.com/</a> <img src ="http://www.tkk7.com/rkind/aggbug/86385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-12-08 16:19 <a href="http://www.tkk7.com/rkind/archive/2006/12/08/86385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷的Struts数据?/title><link>http://www.tkk7.com/rkind/archive/2006/10/31/78299.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Tue, 31 Oct 2006 07:49:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/10/31/78299.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/78299.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/10/31/78299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/78299.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/78299.html</trackback:ping><description><![CDATA[今天在试验了一下在Struts-config中配|数据源Q虽然说q种Ҏq不推荐Q?br />操作步骤Q?br />      首先导入几个需要的包:首先自己q接数据库用的包Q因为我用的是Mysql所以用的是“mm.mysql-2.0.4-bin.jar”,q有“commons-dbcp-1.2.1.jar”这个是数据源中要用到的包,q有“commons-pool-1.2.jar”这个不太清?br />     其次在Struts-config.xml中加入如下代? <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">data-sources</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">data-source </span><span style="COLOR: #ff0000">key</span><span style="COLOR: #0000ff">="rki"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="org.apache.commons.dbcp.BasicDataSource"</span><span style="COLOR: #0000ff">>  //type代表c,rki表示当有多个数据源时?br />//当于一个烦引,id?/span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="driverClassName"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="org.gjt.mm.mysql.Driver"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/>//q接mysql所需的类?/span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="url"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="jdbc:mysql://172.20.0.40:3306/test?useUnicode=true&amp;characterEncoding=GBK"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="username"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="root"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="password"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="你的密码"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="maxActive"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="10"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="maxWait"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="500"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="defaultAutoCommit"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">set-property </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="defaultReadOnly"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">data-source</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">data-sources</span><span style="COLOR: #0000ff">></span></div>然后现在可以在你的Action试验数据库的q接Q简单引用的代码片断<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">datasource </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> getDataSource(request, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rki</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> datasource.getConnection();<br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            Statement state </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> conn.createStatement();<br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            String sql </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select * from notice where title='test'</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            ResultSet rs </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> state.executeQuery(sql);<br /><img id="Codehighlighter1_282_414_Open_Image" onclick="this.style.display='none'; Codehighlighter1_282_414_Open_Text.style.display='none'; Codehighlighter1_282_414_Closed_Image.style.display='inline'; Codehighlighter1_282_414_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_282_414_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_282_414_Closed_Text.style.display='none'; Codehighlighter1_282_414_Open_Image.style.display='inline'; Codehighlighter1_282_414_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (rs.next()) </span><span id="Codehighlighter1_282_414_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_282_414_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                request.getSession().setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cont</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                        rs.getString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">content</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">database connect true</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            rs.close();</span></div>在试验的q程中,老是不能q接Q出“Initializing application data source”我仔细查过以上的配|ƈ没有问题Q重启了几次服务器也不行Q查了N多资料,最后居然自己好了,郁闷的要?br />一ҎȝQ?br />           可见在Struts中配|数据源要比别的q接Ҏ要复杂,而且效率上来说也不一定要好,q不如自己通过自己~写单的讉K数据库的c,或者是直接采用Tomcat的数据源要方?一些?img src ="http://www.tkk7.com/rkind/aggbug/78299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-10-31 15:49 <a href="http://www.tkk7.com/rkind/archive/2006/10/31/78299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html:errors?/title><link>http://www.tkk7.com/rkind/archive/2006/10/30/78095.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Mon, 30 Oct 2006 09:23:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/10/30/78095.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/78095.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/10/30/78095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/78095.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/78095.html</trackback:ping><description><![CDATA[在Struts中可以通过<html:errors/>来显C错误信息,今天单看了一点,ȝ一下:<br />1Q如果是采用了formbean的validate的话Q首先,struts-config.xml中Action需要加入validate="true"<br />      其实Q在Actionform中的validate必须q回一个自己定义的ActionerrorsQ如例:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> ActionErrors validate(ActionMapping mapping,<br /><img id="Codehighlighter1_84_242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_84_242_Open_Text.style.display='none'; Codehighlighter1_84_242_Closed_Image.style.display='inline'; Codehighlighter1_84_242_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_84_242_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_84_242_Closed_Text.style.display='none'; Codehighlighter1_84_242_Open_Image.style.display='inline'; Codehighlighter1_84_242_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />            HttpServletRequest request) </span><span id="Codehighlighter1_84_242_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_84_242_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        ActionErrors errors </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ActionErrors();<br /><img id="Codehighlighter1_161_222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_161_222_Open_Text.style.display='none'; Codehighlighter1_161_222_Closed_Image.style.display='inline'; Codehighlighter1_161_222_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_161_222_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_161_222_Closed_Text.style.display='none'; Codehighlighter1_161_222_Open_Image.style.display='inline'; Codehighlighter1_161_222_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.content.equals(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">)) </span><span id="Codehighlighter1_161_222_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_161_222_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            errors.add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">content</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ActionError(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">error.user</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> errors;<br /><img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div>2Q如果没有采用,而是用Action验证的话Q也需要先定义一个ActionerrorsQ然后再通过<br />saveErrors(request,errors);把Actionerrrors保存到request?br />3Q需要注意的<br />  a,每个ActionErrors都有一个String,和一个ActionError构成QActionError里面的String是和目资源文g里的一一对应的,String是和html:errors中property相对应的?img src ="http://www.tkk7.com/rkind/aggbug/78095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-10-30 17:23 <a href="http://www.tkk7.com/rkind/archive/2006/10/30/78095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts中Cannot find bean XXX in any scope的问?/title><link>http://www.tkk7.com/rkind/archive/2006/10/30/78037.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Mon, 30 Oct 2006 06:07:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/10/30/78037.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/78037.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/10/30/78037.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/78037.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/78037.html</trackback:ping><description><![CDATA[ <p>q就是在前面的简单应用中Q在view中,通过<bean:write name="myform" property="name">调用Actionform时出的问题,q个问题的直接原因很单就是:找不?myform"q个BeanQ用|上的话说就?strong>?/strong><strong><em>在Action里一般会request.setAttribute()一些对象,然后在{向的jsp文g里(用tag或request.getAttribute()ҎQ得到这些对象ƈ昄出来。这个异常是说jsp要得C个对象,但前面的Action里ƈ没有对象设|到requestQ也可以是session、servletContextQ里。可能是名字错了Q请查jsp里的tag的一般是name属性,或getAttribute()Ҏ的参数|或者是Action逻辑有问题没有执行setAttribute()Ҏ先转向了?br />q有另外一个可能,Ua是jsp文g的问题,例如<logic:iterate>会指定一个id|然后在@环里<bean:write>使用q个g为name的|如果q两个g同,也会出现此异常。(都是一个道理,request里没有对应的对象。)</em>”?br /></strong>      我对Actionform的机制不理解Q心中的疑问Q?br />      1Q如果ActionForm是Struts自动装到Request中,那么我可以直接在view.jsp中,能过<bean:write>调用q个ActionFormQ如果假设这U情冉|立时Q那么Beanwrite中的bean名应该是ActionForm的类名,q是在Struts-config.xml里给ActionForm定义的类名?<br />      2Q如果没有封装的话,那么是不是需要在Action中把Actionform通过request.setAttribute("","")攑ֈrequest?br />q是要放到Session中,<br />      我测试时候出的问?br />       有一ơ就是在1Q的情况下测试成功的Q但是以后再怎么试都不行Q那ơ是引用的Struts-config.xml里给ActionForm定义的类名。非常奇怪,<br />        q有是2Q的情况Q测试中如果Action和Frombean在一个包下面Q那么通过request.setAttribute("","")Q就可以获取到BeanQ如果不是的话,有时候行Q有时候不行,<br />       <strong> 如果通过request.getSession.setAttribute()讄ActionForm的话Q每ơ都可以</strong>Q他们的Scope肯定在一个Request中,那么Z么Session可以,而Request不行?<strong>l论Q因为是在Actionfoward中设|了“redirect='true'Q这L话一跌{ӞRequest中的内容都会被重|,所以不行,把这一句去掉就可以?/strong>?</p> <img src ="http://www.tkk7.com/rkind/aggbug/78037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-10-30 14:07 <a href="http://www.tkk7.com/rkind/archive/2006/10/30/78037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单的struts程?/title><link>http://www.tkk7.com/rkind/archive/2006/10/27/77602.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Fri, 27 Oct 2006 04:39:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/10/27/77602.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/77602.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/10/27/77602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/77602.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/77602.html</trackback:ping><description><![CDATA[ <font size="4"> <strong> <hr /> 1、简?/strong> </font> <br />            单的面输入q显C的功能Q有两个面Q?br />            upnews.jsp 提供输入内容的界面,show.jsp昄已经输入的内? <hr /><br /><strong>2、源?br /></strong>      <strong>struts-config</strong>Q流E图<br /><p align="left"><img height="211" alt="Snap3.jpg" src="http://www.tkk7.com/images/blogjava_net/rkind/Snap3.jpg" width="410" border="0" /><br />源代?br />Strust-config.xml</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">form-bean </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="upNewsForm"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="com.rkind.struts.form.UpNewsForm"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span></div><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">action </span><span style="COLOR: #ff0000">attribute</span><span style="COLOR: #0000ff">="upNewsForm"</span><span style="COLOR: #ff0000"> input</span><span style="COLOR: #0000ff">="/upNews.jsp"</span><span style="COLOR: #ff0000"> name</span><span style="COLOR: #0000ff">="upNewsForm"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">="/upNews"</span><span style="COLOR: #ff0000"> scope</span><span style="COLOR: #0000ff">="request"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="com.rkind.struts.action.UpNewsAction"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">forward </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="suc"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">="/show.jsp"</span><span style="COLOR: #ff0000"> redirect</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">action</span><span style="COLOR: #0000ff">></span></div><hr /><br />upnews.jsp<br />     都是eclispe自动生成? <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">html:form </span><span style="COLOR: #ff0000">action</span><span style="COLOR: #0000ff">="/upNews"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            content : </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">html:text </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="content"</span><span style="COLOR: #0000ff">/><</span><span style="COLOR: #800000">html:errors </span><span style="COLOR: #ff0000">property</span><span style="COLOR: #0000ff">="content"</span><span style="COLOR: #0000ff">/><</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">html:submit</span><span style="COLOR: #0000ff">/><</span><span style="COLOR: #800000">html:cancel</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">html:form</span><span style="COLOR: #0000ff">></span></div><hr /> show.jspq个单就一句话Q? <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">bean:write </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="upNewsForm"</span><span style="COLOR: #ff0000"> property</span><span style="COLOR: #0000ff">="content"</span><span style="COLOR: #0000ff">/></span></div><hr /> 模型的部?formbean,自动生成Q未做改?br />Controller部分Q核心啊<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">UpNewsForm upNewsForm </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (UpNewsForm) form;<br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO Auto-generated method stub</span><span style="COLOR: #008000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">        String te</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">upNewsForm.getContent();<br /><img id="Codehighlighter1_122_265_Open_Image" onclick="this.style.display='none'; Codehighlighter1_122_265_Open_Text.style.display='none'; Codehighlighter1_122_265_Closed_Image.style.display='inline'; Codehighlighter1_122_265_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_122_265_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_122_265_Closed_Text.style.display='none'; Codehighlighter1_122_265_Open_Image.style.display='inline'; Codehighlighter1_122_265_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_122_265_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_122_265_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_149_222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_149_222_Open_Text.style.display='none'; Codehighlighter1_149_222_Closed_Image.style.display='inline'; Codehighlighter1_149_222_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_149_222_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_149_222_Closed_Text.style.display='none'; Codehighlighter1_149_222_Open_Image.style.display='inline'; Codehighlighter1_149_222_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(te.equals(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">))</span><span id="Codehighlighter1_149_222_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_149_222_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ActionForward(mapping.getInput());        <br /><img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (mapping.findForward(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">suc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img id="Codehighlighter1_284_332_Open_Image" onclick="this.style.display='none'; Codehighlighter1_284_332_Open_Text.style.display='none'; Codehighlighter1_284_332_Closed_Image.style.display='inline'; Codehighlighter1_284_332_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_284_332_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_284_332_Closed_Text.style.display='none'; Codehighlighter1_284_332_Open_Image.style.display='inline'; Codehighlighter1_284_332_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />        }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception e)</span><span id="Codehighlighter1_284_332_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_284_332_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RuntimeException(e.getMessage());</span></span></div><br />好了Q但是在试的时候一直出问题Q输入以后不能正常,原因?<br />1、在链接时候,没有加?”导致不能正常连?br />2?span style="COLOR: #800000">forward </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="suc"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">="/show.jsp"</span><span style="COLOR: #ff0000"> redirect</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000"> <font color="#000000">起初没有加redirectQ不能蟩转?/font></span><br /><img src ="http://www.tkk7.com/rkind/aggbug/77602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-10-27 12:39 <a href="http://www.tkk7.com/rkind/archive/2006/10/27/77602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js单入?/title><link>http://www.tkk7.com/rkind/archive/2006/10/26/77374.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Thu, 26 Oct 2006 04:09:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/10/26/77374.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/77374.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/10/26/77374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/77374.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/77374.html</trackback:ping><description><![CDATA[ <p> <strong>1、插入和包含</strong> <br />   1Q   js,一般都攑֜head之间、注释的作用是当客户端浏览器版本q低Ӟ不能识别而发生错?br /><font size="2"><font face="Verdana"><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">script </span><span style="COLOR: #ff0000">language</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">></span></font></font><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br /></span><font size="2"><font face="Verdana"><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><!--</span></font></font><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br /><font face="Verdana" size="2">document.write( </font></span><font size="2"><font face="Verdana"><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><font color="#000000">Hello</font> World!</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span></font></font><font size="2"><font face="Verdana"><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /></span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--></span></font></font><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br /></span><font size="2"><font face="Verdana"><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">><br /><font color="#000000"><font size="3"> 2Q另外你也可以编?js文gQ然后在面里面直接引用可以了</font><br /></font><head><br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br /><title>javascript</title><script language="javascript"src="Untitled-2.js"></script></span></font></font><font size="2"><font face="Verdana"><span style="COLOR: #0000ff"></head><br /><hr /></span></font></font></p> <p> </p> <strong>2、write</strong> <br />  在js中要昄字符Q需要用document.write()的Ş式,writeln区别是再write的基上加入了换行<br /><hr /> 3、如?br />document.write("Hello World!");<br />document.write("test"+document.lastModified);<br />document.bgColor = " black " <br />其中Qdocument是对象,write是method,输出字符可以用加的Ş式,,可以在js里面讑֮面的背?br /><hr /> 4、提C框<br />   1Qwindow.alert("testtesttest")<br />    弹出H口<br />   2Qwindow.confirm("test")<br />   3)有输入框的提C框<br />        window.prompt("test")<br />一不小心双M标签了,写的全都没了Q!Q后面的不写了,写js时一定要注意“” ?’号的运用!<br /><br />js的功能是强大的,q用q是要靠脑筋的,<img src ="http://www.tkk7.com/rkind/aggbug/77374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-10-26 12:09 <a href="http://www.tkk7.com/rkind/archive/2006/10/26/77374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java基础Q关于session的详l解?zt) (?作者: 舉|)http://www.tkk7.com/rkind/archive/2006/04/27/43561.htmlrkindrkindThu, 27 Apr 2006 06:38:00 GMThttp://www.tkk7.com/rkind/archive/2006/04/27/43561.htmlhttp://www.tkk7.com/rkind/comments/43561.htmlhttp://www.tkk7.com/rkind/archive/2006/04/27/43561.html#Feedback0http://www.tkk7.com/rkind/comments/commentRss/43561.htmlhttp://www.tkk7.com/rkind/services/trackbacks/43561.html 一、术语session

  在我的经验里Qsessionq个词被滥用的程度大概仅ơ于transactionQ更加有的是transaction与session在某些语境下的含义是相同的?/p>

  sessionQ中文经常翻译ؓ会话Q其本来的含义是指有始有l的一pd动作/消息Q比如打电话时从拿v电话拨号到挂断电话这中间的一pdq程可以UCZ个session。有时候我们可以看到这L话“在一个浏览器会话期间Q?..”,q里的会话一词用的就是其本义Q是指从一个浏览器H口打开到关闭这个期间①。最混ؕ的是“用P客户端)在一ơ会话期间”这样一句话Q它可能指用L一pd动作Q一般情况下是同某个具体目的相关的一pd动作Q比如从d到选购商品到结账登样一个网上购物的q程Q有时候也被称Z个transactionQ,然而有时候也可能仅仅是指一ơ连接,也有可能是指含义①,其中的差别只能靠上下文来推断②?/p>

  然而当session一词与|络协议相关联时Q它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到Ҏ接了电话通信才能开始,与此相对的是写信Q在你把信发出去的时候你q不能确认对方的地址是否正确Q通信渠道不一定能建立Q但对发信h来说Q通信已经开始了。“保持状态”则是指通信的一方能够把一pd的消息关联v来,使得消息之间可以互相依赖Q比如一个服务员能够认出再次光的老顾客ƈ且记得上ơ这个顾客还Ơ店里一块钱。这一cȝ例子有“一个TCP session”或者“一个POP3 session”③?/p>

  而到了web服务器蓬勃发展的时代Qsession在web开发语境下的语义又有了新的扩展Q它的含义是指一cȝ来在客户端与服务器之间保持状态的解决Ҏ④。有时候session也用来指q种解决Ҏ的存储结构,如“把xxx保存在session里”⑤。由于各U用于web开发的语言在一定程度上都提供了对这U解x案的支持Q所以在某种特定语言的语境下Qsession也被用来指代该语a的解x案,比如l常把Java里提供的javax.servlet.http.HttpSessionUCؓsession⑥?/p>

  鉴于q种混ؕ已不可改变,本文中session一词的q用也会Ҏ上下文有不同的含义,请大家注意分辨?/p>

  在本文中Q用中文“浏览器会话期间”来表达含义①,使用“session机制”来表达含义④,使用“session”表辑֐义⑤Q用具体的“HttpSession”来表达含义?/p>

  二、HTTP协议与状态保?/p>

  HTTP协议本n是无状态的Q这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器h下蝲某些文gQ无论是客户端还是服务器都没有必要纪录彼此过ȝ行ؓQ每一ơ请求之间都是独立的Q好比一个顾客和一个自动售货机或者一个普通的Q非会员Ӟ大卖Z间的关系一栗?/p>

  然而聪明(或者贪心?Q的Z很快发现如果能够提供一些按需生成的动态信息会使web变得更加有用Q就像给有线电视加上Ҏ功能一栗这U需求一斚wqHTML逐步d了表单、脚本、DOM{客L行ؓQ另一斚w在服务器端则出现了CGI规范以响应客L的动态请求,作ؓ传输载体的HTTP协议也添加了文g上蝲、cookieq些Ҏ。其中cookie的作用就是ؓ了解决HTTP协议无状态的~陷所作出的努力。至于后来出现的session机制则是又一U在客户端与服务器之间保持状态的解决Ҏ?/p>

  让我们用几个例子来描qC下cookie和session机制之间的区别与联系。笔者曾l常ȝ一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠Q然而一ơ性消?杯咖啡的Z微乎其微Q这时就需要某U方式来U录某位֮的消Ҏ量。想象一下其实也无外乎下面的几种ҎQ?/p>

  1、该店的店员很厉宻I能记住每位顾客的消费数量Q只要顾客一走进咖啡店,店员q道该怎么对待了。这U做法就是协议本w支持状态?/p>

  2、发l顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每ơ消ҎQ如果顾客出C张卡片,则此ơ消费就会与以前或以后的消费相联pv来。这U做法就是在客户端保持状态?/p>

  3、发l顾客一张会员卡Q除了卡号之外什么信息也不纪录,每次消费Ӟ如果֮出示该卡片,则店员在店里的纪录本上找到这个卡号对应的U录d一些消费信息。这U做法就是在服务器端保持状态?/p>

  ׃HTTP协议是无状态的Q而出于种U考虑也不希望使之成ؓ有状态的Q因此,后面两种Ҏ成为现实的选择。具体来说cookie机制采用的是在客L保持状态的ҎQ而session机制采用的是在服务器端保持状态的Ҏ。同时我们也看到Q由于采用服务器端保持状态的Ҏ在客L也需要保存一个标识,所以session机制可能需要借助于cookie机制来达C存标识的目的Q但实际上它q有其他选择?/p>

  三、理解cookie机制

  cookie机制的基本原理就如上面的例子一L单,但是q有几个问题需要解冻I“会员卡”如何分发;“会员卡”的内容Q以及客户如何用“会员卡”?/p>

  正统的cookie分发是通过扩展HTTP协议来实现的Q服务器通过在HTTP的响应头中加上一行特D的指示以提C浏览器按照指示生成相应的cookie。然而纯_的客户端脚本如JavaScript或者VBScript也可以生成cookie?/p>

  而cookie的用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器查所有存储的cookieQ如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置Q则把该cookie附在h资源的HTTPh头上发送给服务器。意思是麦当劳的会员卡只能在麦当劳的店里出示Q如果某家分店还发行了自q会员卡,那么q这家店的时候除了要出示麦当劳的会员卡,q要出示q家店的会员卡?/p>

  cookie的内容主要包括:名字Q|q期旉Q\径和域?/p>

  其中域可以指定某一个域比如.google.comQ相当于d招牌Q比如宝z公司,也可以指定一个域下的具体某台机器比如www.google.com或者froogle.google.comQ可以用飘柔来做比?/p>

  路径是跟在域名后面的URL路径Q比?或?foo{等Q可以用某飘柔专柜做比?/p>

  路径与域合在一起就构成了cookie的作用范围?/p>

  如果不设|过期时_则表C个cookie的生命期为浏览器会话期间Q只要关闭浏览器H口Qcookie消׃。这U生命期为浏览器会话期的cookie被称Z话cookie。会话cookie一般不存储在硬盘上而是保存在内存里Q当然这U行为ƈ不是规范规定的。如果设|了q期旉Q浏览器׃把cookie保存到硬盘上Q关闭后再次打开览器,q些cookie仍然有效直到过讑֮的过期时间?/p>

  存储在硬盘上的cookie可以在不同的览器进E间׃nQ比如两个IEH口。而对于保存在内存里的cookieQ不同的览器有不同的处理方式。对于IEQ在一个打开的窗口上按Ctrl-NQ或者从文g菜单Q打开的窗口可以与原窗口共享,而用其他方式新开的IEq程则不能共享已l打开的窗口的内存cookieQ对于Mozilla Firefox0.8Q所有的q程和标{N都可以共享同Lcookie。一般来说是用javascript的window.open打开的窗口会与原H口׃n内存cookie。浏览器对于会话cookie的这U只认cookie不认人的处理方式l常l采用session机制的web应用E序开发者造成很大的困扰?/p>

  下面是一个goolge讄cookie的响应头的例?/p>

HTTP/1.1 302 Found
Location: http://www.google.com/intl/zh-CN/
Set-Cookie: PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Content-Type: text/html

  q是使用HTTPLookq个HTTP Sniffer软g来俘LHTTP通讯U录的一部分


  览器在再次讉Kgoolge的资源时自动向外发送cookie

  使用Firefox可以很容易的观察现有的cookie的?/p>

  使用HTTPLook配合Firefox可以很容易的理解cookie的工作原理?/p>


  IE也可以设|在接受cookie前询?/p>

  q是一个询问接受cookie的对话框?/p>

  四、理解session机制

 session机制是一U服务器端的机制Q服务器使用一U类g散列表的l构Q也可能是使用散列表)来保存信息?/p>

  当程序需要ؓ某个客户端的h创徏一个session的时候,服务器首先检查这个客L的请求里是否已包含了一个session标识 - UCؓsession idQ如果已包含一个session id则说明以前已lؓ此客L创徏qsessionQ服务器按照session id把这个session索出来用(如果索不刎ͼ可能会新Z个)Q如果客Lh不包含session idQ则为此客户端创Z个sessionq且生成一个与此session相关联的session idQsession id的值应该是一个既不会重复Q又不容易被扑ֈ规律以仿造的字符Ԍq个session id被在本ơ响应中q回l客L保存?/p>

  保存q个session id的方式可以采用cookieQ这样在交互q程中浏览器可以自动的按照规则把q个标识发挥l服务器。一般这个cookie的名字都是类gSEEESIONIDQ而。比如weblogic对于web应用E序生成的cookieQJSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764Q它的名字就是JSESSIONID?/p>

  ׃cookie可以被h为的止Q必L其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一U技术叫做URL重写Q就是把session id直接附加在URL路径的后面,附加方式也有两种Q一U是作ؓURL路径的附加信息,表现形式为http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764另一U是作ؓ查询字符串附加在URL后面Q表现Ş式ؓhttp://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
q两U方式对于用h说是没有区别的,只是服务器在解析的时候处理的方式不同Q采用第一U方式也有利于把session id的信息和正常E序参数区分开来?/p>

  Z在整个交互过E中始终保持状态,必d每个客户端可能请求的路径后面都包含这个session id?/p>

  另一U技术叫做表单隐藏字Dc就是服务器会自动修改表单,d一个隐藏字D,以便在表单提交时能够把session id传递回服务器。比如下面的表单



  在被传递给客户端之前将被改写成




  q种技术现在已较少应用Q笔者接触过的很古老的iPlanet6(SunONE应用服务器的前n)׃用了q种技术。实际上q种技术可以简单的用对action应用URL重写来代ѝ?/p>

  在谈论session机制的时候,常常听到q样一U误解“只要关闭浏览器Qsession消׃”。其实可以想象一下会员卡的例子,除非֮d对店家提出销卡,否则店家l对不会L删除֮的资料。对session来说也是一LQ除非程序通知服务器删除一个sessionQ否则服务器会一直保留,E序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会d在关闭之前通知服务器它要关闭Q因此服务器Ҏ不会有机会知道浏览器已经关闭Q之所以会有这U错觉,是大部分session机制都用会话cookie来保存session idQ而关闭浏览器后这个session id消׃Q再ơ连接服务器时也无法找到原来的session。如果服务器讄的cookie被保存到盘上,或者用某U手D|写浏览器发出的HTTPh_把原来的session id发送给服务器,则再ơ打开览器仍然能够找到原来的session?/p>

  恰恰是由于关闭浏览器不会Dsession被删除,q服务器ؓseesion讄了一个失效时_当距dL上一ơ用session的时间超q这个失效时间时Q服务器可以认为客L已经停止了活动,才会把session删除以节省存储空间?/p>

  五、理解javax.servlet.http.HttpSession

  HttpSession是Javaq_对session机制的实现规范,因ؓ它仅仅是个接口,具体到每个web应用服务器的提供商,除了对规范支持之外,仍然会有一些规范里没有规定的细微差异。这里我们以BEA的Weblogic Server8.1作ؓ例子来演C?/p>

  首先QWeblogic Server提供了一pd的参数来控制它的HttpSession的实玎ͼ包括使用cookie的开关选项Q用URL重写的开关选项Qsession持久化的讄Qsession失效旉的设|,以及针对cookie的各U设|,比如讄cookie的名字、\径、域Qcookie的生存时间等?/p>

  一般情况下Qsession都是存储在内存里Q当服务器进E被停止或者重启的时候,内存里的session也会被清I,如果讄了session的持久化Ҏ,服务器就会把session保存到硬盘上Q当服务器进E重新启动或q些信息能够被再次使用QWeblogic Server支持的持久性方式包括文件、数据库、客Lcookie保存和复制?/p>

  复制严格说来不算持久化保存,因ؓsession实际上还是保存在内存里,不过同样的信息被复制到各个cluster内的服务器进E中Q这样即使某个服务器q程停止工作也仍然可以从其他q程中取得session?/p>

  cookie生存旉的设|则会媄响浏览器生成的cookie是否是一个会话cookie。默认是使用会话cookie。有兴趣的可以用它来试验我们在第四节里提到的那个误解?/p>

  cookie的\径对于web应用E序来说是一个非帔R要的选项QWeblogic Server对这个选项的默认处理方式得它与其他服务器有明昄区别。后面我们会专题讨论?/p>

  关于session的设|参考[5] http://e-docs.bea.com/wls/docs70/webapp/weblogic_xml.html#1036869

  六、HttpSession常见问题

  Q在本小节中session的含义ؓ⑤和⑥的混合Q?/p>

  1、session在何时被创徏

  一个常见的误解是以为session在有客户端访问时p创徏Q然而事实是直到某server端程序调用HttpServletRequest.getSession(true)q样的语句时才被创徏Q注意如果JSP没有昄的?<%@page session="false"%>关闭sessionQ则JSP文g在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);q也是JSP中隐含的session对象的来历?/p>

  ׃session会消耗内存资源,因此Q如果不打算使用sessionQ应该在所有的JSP中关闭它?/p>

  2、session何时被删?/p>

  l合前面的讨论,session在下列情况下被删除a.E序调用HttpSession.invalidate();或b.距离上一ơ收到客L发送的session id旉间隔过了session的超时设|?或c.服务器进E被停止Q非持久sessionQ?/p>

  3、如何做到在览器关闭时删除session

  严格的讲Q做不到q一炏V可以做一点努力的办法是在所有的客户端页面里使用javascript代码window.oncolose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除session。但是对于浏览器崩溃或者强行杀死进E这些非常规手段仍然无能为力?/p>

  4、有个HttpSessionListener是怎么回事

  你可以创Llistenerȝ控session的创建和销毁事Ӟ使得在发生这L事g时你可以做一些相应的工作。注意是session的创建和销毁动作触发listenerQ而不是相反。类似的与HttpSession有关的listenerq有HttpSessionBindingListenerQHttpSessionActivationListener和HttpSessionAttributeListener?

5、存攑֜session中的对象必须是可序列化的?/p>

  不是必需的。要求对象可序列化只是ؓ了session能够在集中被复制或者能够持久保存或者在必要时server能够暂时把session交换出内存。在Weblogic Server的session中放|一个不可序列化的对象在控制C会收C个警告。我所用过的某个iPlanet版本如果session中有不可序列化的对象Q在session销毁时会有一个ExceptionQ很奇怪?/p>

  6、如何才能正的应付客户端禁止cookie的可能?/p>

  Ҏ有的URL使用URL重写Q包括超链接Qform的actionQ和重定向的URLQ具体做法参见[6]
http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770

  7、开两个览器窗口访问应用程序会使用同一个sessionq是不同的session

  参见W三节对cookie的讨论,对session来说是只认id不认人,因此不同的浏览器Q不同的H口打开方式以及不同的cookie存储方式都会对这个问题的{案有媄响?/p>

  8、如何防止用h开两个览器窗口操作导致的session混ؕ

  q个问题与防止表单多ơ提交是cM的,可以通过讄客户端的令牌来解冟뀂就是在服务器每ơ生成一个不同的idq回l客LQ同时保存在session里,客户端提交表单时必须把这个id也返回服务器Q程序首先比较返回的id与保存在session里的值是否一_如果不一致则说明本次操作已经被提交过了。可以参看《J2EE核心模式》关于表C层模式的部分。需要注意的是对于用javascript window.open打开的窗口,一般不讄q个idQ或者用单独的idQ以防主H口无法操作Q徏议不要再window.open打开的窗口里做修Ҏ作,q样可以不用设|?/p>

  9、ؓ什么在Weblogic Server中改变session的值后要重新调用一ơsession.setValue
做这个动作主要是Z在集环境中提示Weblogic Server session中的值发生了改变Q需要向其他服务器进E复制新的session倹{?/p>

  10、ؓ什么session不见?/p>

  排除session正常失效的因素之外,服务器本w的可能性应该是微乎其微的,虽然W者在iPlanet6SP1加若q补丁的Solaris版本上倒也遇到q;览器插件的可能性次之,W者也遇到q?721插g造成的问题;理论上防火墙或者代理服务器在cookie处理上也有可能会出现问题?/p>

  出现q一问题的大部分原因都是E序的错误,最常见的就是在一个应用程序中去访问另外一个应用程序。我们在下一节讨个问题?/p>

  七、跨应用E序的session׃n

  常常有这L情况Q一个大目被分割成若干项目开发,Z能够互不q扰Q要求每个小目作ؓ一个单独的web应用E序开发,可是C最后突然发现某几个项目之间需要共享一些信息,或者想使用session来实现SSO(single sign on)Q在session中保存login的用户信息,最自然的要求是应用E序间能够访问彼此的session?/p>

  然而按照Servlet规范Qsession的作用范围应该仅仅限于当前应用程序下Q不同的应用E序之间是不能够互相讉KҎ的session的。各个应用服务器从实际效果上都遵守了q一规范Q但是实现的l节却可能各有不同,因此解决跨应用程序session׃n的方法也各不相同?/p>

  首先来看一下Tomcat是如何实现web应用E序之间session的隔ȝQ从Tomcat讄的cookie路径来看Q它对不同的应用E序讄的cookie路径是不同的Q这样不同的应用E序所用的session id是不同的Q因此即使在同一个浏览器H口里访问不同的应用E序Q发送给服务器的session id也可以是不同的?br />

  Ҏq个Ҏ,我们可以推测Tomcat中session的内存结构大致如下?br />

  W者以前用q的iPlanet也采用的是同L方式Q估计SunONE与iPlanet之间不会有太大的差别。对于这U方式的服务器,解决的思\很简单,实际实行h也不难。要么让所有的应用E序׃n一个session idQ要么让应用E序能够获得其他应用E序的session id?/p>

  iPlanet中有一U很单的Ҏ来实现共享一个session idQ那是把各个应用程序的cookie路径都设?Q实际上应该?NASAppQ对于应用程序来讲它的作用相当于根)?/p>

/NASApp

  需要注意的是,操作׃n的session应该遵@一些编E约定,比如在session attribute名字的前面加上应用程序的前缀Q得setAttribute("name", "neo")变成setAttribute("app1.name", "neo")Q以防止命名I间冲突Q导致互相覆盖?/p>


  在Tomcat中则没有q么方便的选择。在Tomcat版本3上,我们q可以有一些手D|׃nsession。对于版?以上的TomcatQ目前笔者尚未发现简单的办法。只能借助于第三方的力量,比如使用文g、数据库、JMS或者客LcookieQURL参数或者隐藏字D늭手段?/p>

  我们再看一下Weblogic Server是如何处理session的?br />

  从截屏画面上可以看到Weblogic ServerҎ有的应用E序讄的cookie的\径都?Q这是不是意味着在Weblogic Server中默认的可以共享session了呢Q然而一个小实验卛_证明即不同的应用程序用的是同一个sessionQ各个应用程序仍然只能访问自己所讄的那些属性。这说明Weblogic Server中的session的内存结构可能如?br />

  对于q样一U结构,在session机制本n上来解决session׃n的问题应该是不可能的了。除了借助于第三方的力量,比如使用文g、数据库、JMS或者客LcookieQURL参数或者隐藏字D늭手段Q还有一U较为方便的做法Q就是把一个应用程序的session攑ֈServletContext中,q样另外一个应用程序就可以从ServletContext中取得前一个应用程序的引用。示例代码如下,

  应用E序A

context.setAttribute("appA", session);

  应用E序B

contextA = context.getContext("/appA");
HttpSession sessionA = (HttpSession)contextA.getAttribute("appA");

  值得注意的是q种用法不可ULQ因为根据ServletContext的JavaDocQ应用服务器可以处于安全的原因对于context.getContext("/appA");q回I|以上做法在Weblogic Server 8.1中通过?/p>

  那么Weblogic ServerZ么要把所有的应用E序的cookie路径都设?呢?原来是ؓ了SSOQ凡是共享这个session的应用程序都可以׃n认证的信息。一个简单的实验可以证明这一点,修改首先d的那个应用程序的描述Wweblogic.xmlQ把cookie路径修改?appA讉K另外一个应用程序会重新要求dQ即使是反过来,先访问cookie路径?的应用程序,再访问修改过路径的这个,虽然不再提示dQ但是登录的用户信息也会丢失。注意做q个实验时认证方式应该用FORMQ因为浏览器和web服务器对basic认证方式有其他的处理方式Q第二次h的认证不是通过session来实现的。具体请参看[7] secion 14.8 AuthorizationQ你可以修改所附的CZE序来做q些试验?/p>

  八、ȝ

  session机制本nq不复杂Q然而其实现和配|上的灵zL却使得具体情况复杂多变。这也要求我们不能把仅仅某一ơ的l验或者某一个浏览器Q服务器的经验当作普遍适用的经验,而是始终需要具体情况具体分析?/p>

rkind 2006-04-27 14:38 发表评论
]]>
NOKIA?#92702689#的详?/title><link>http://www.tkk7.com/rkind/archive/2006/04/05/39387.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Wed, 05 Apr 2006 07:14:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/04/05/39387.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/39387.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/04/05/39387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/39387.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/39387.html</trackback:ping><description><![CDATA[ <span style="FONT-SIZE: 15px">NOKIA?#92702689#的详?br />输入 :*#92702689# 手机会出?<br /><br />  W一行, Serial no: 手机串号 <br /><br />  手机串号是手机的w䆾证,此串LW七W八位代码表C手机的产地Q?<br /><br />nokia的代码如下: <br /><br />  10Q芬兎ͼ20Qd国;30Q韩国;40Q北京;60Q东?<br /><br />  新的nokia手机已经不用这个编h区分产地了?<br /><br />  W二行, Made Q?072003 生日期 <br /><br />  q个生日期如果d前日期太q,有可能是翻新机 <br /><br />  W三行, purchasing date Q?mmyyyy 购买日期 <br /><br />  可以修改Q修改以后没法更改了Q即使你把手Y件刷新?<br /><br />  如果q里已有日期Q肯定是L机或有毛病后人家退货的 <br /><br />  提醒大家注意Q赶快更改这里,不要lJS留下骗h的可乘之机?<br /><br />  W四行, Repaired Q?mmyyyy 上次l修日期 <br /><br />  如果有说明此手机l修q(JS一般会注意q个冬冬Q会把它h的) <br /><br />  W五行, Life timer 00002:20 <br /><br />  看看Life timer旉 通话旉 新的应该是没有通话旉?<br /><br /><br />**如果你忘了钱包的密码Q输?#7370925538#可以还原?br /><br /><br /><br /><br /><br />W三行这里特别有用,<br />可以修改Q修改以后没法更改了Q即使你把手Y件刷新?<br /><br />  如果q里已有日期Q肯定是L机或有毛病后人家退货的 <br /><br />  提醒大家注意Q赶快更改这里,不要lJS留下骗h的可乘之机?/span> <br /> <img src ="http://www.tkk7.com/rkind/aggbug/39387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-04-05 15:14 <a href="http://www.tkk7.com/rkind/archive/2006/04/05/39387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷?/title><link>http://www.tkk7.com/rkind/archive/2006/03/09/34502.html</link><dc:creator>rkind</dc:creator><author>rkind</author><pubDate>Thu, 09 Mar 2006 08:49:00 GMT</pubDate><guid>http://www.tkk7.com/rkind/archive/2006/03/09/34502.html</guid><wfw:comment>http://www.tkk7.com/rkind/comments/34502.html</wfw:comment><comments>http://www.tkk7.com/rkind/archive/2006/03/09/34502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rkind/comments/commentRss/34502.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rkind/services/trackbacks/34502.html</trackback:ping><description><![CDATA[老久没有郁闷的心情,然而终于却是来了,<BR>我L惌惛_很多东西来,然后反应却很慢,又做了一件很ȝ?BR>q是一个教训!不管怎么P现在都不可能补救了?BR>也许跟心情有兛_Q以后好好努力吧<BR><img src ="http://www.tkk7.com/rkind/aggbug/34502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rkind/" target="_blank">rkind</a> 2006-03-09 16:49 <a href="http://www.tkk7.com/rkind/archive/2006/03/09/34502.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://shguojing.com" target="_blank">ŷղwww</a>| <a href="http://lyjhjx.com" target="_blank">޹þþþƷС˵</a>| <a href="http://www454yu.com" target="_blank">ɫö</a>| <a href="http://hongyue8.com" target="_blank">99þùƷһ </a>| <a href="http://zzhdrsqwx.com" target="_blank">þþWWW˳ɾƷ</a>| <a href="http://9898vip.com" target="_blank">޳aƬ߹ۿ</a>| <a href="http://mp4888.com" target="_blank">һ߲</a>| <a href="http://youweidianqi.com" target="_blank">պ</a>| <a href="http://qianmiu.com" target="_blank">AVӰԺ</a>| <a href="http://61255555.com" target="_blank">wwwѸƵ</a>| <a href="http://snsdtv.com" target="_blank">Ʒһ</a>| <a href="http://xixidhw.com" target="_blank">߹ۿëƬ</a>| <a href="http://pencilinside.com" target="_blank">޾Ʒһ23Ŀ</a>| <a href="http://44168888.com" target="_blank">ҹ׾糡</a>| <a href="http://k96d.com" target="_blank">ɫƵ</a>| <a href="http://www-6209.com" target="_blank">ƷѸ</a>| <a href="http://mtsp2.com" target="_blank">˾þô߽</a>| <a href="http://bcz123.com" target="_blank">aaëƬëƬѹۿ</a>| <a href="http://yanyingqiang.com" target="_blank">ò </a>| <a href="http://ksp33.com" target="_blank">ҹպһ</a>| <a href="http://amjt9.com" target="_blank">ĻƵƷһ</a>| <a href="http://szyxfhm.com" target="_blank">þƵ</a>| <a href="http://badabg.com" target="_blank">91Ƶ</a>| <a href="http://anyliz.com" target="_blank">޾Ʒٸ30P</a>| <a href="http://930mk.com" target="_blank">޾Ʒ</a>| <a href="http://qqc46.com" target="_blank">Ʒһ</a>| <a href="http://128313.com" target="_blank">վѹۿ</a>| <a href="http://tianmao920.com" target="_blank">¹ŮһëƬ</a>| <a href="http://ittenyear.com" target="_blank">caopormѹƵ</a>| <a href="http://yy468.com" target="_blank">þþƷһ </a>| <a href="http://pufenghotel.com" target="_blank">ѿһһƬ</a>| <a href="http://hljc988.com" target="_blank">ɫһ</a>| <a href="http://heifengmi.com" target="_blank">50Ů˵ëƬѹۿ</a>| <a href="http://yx6768.com" target="_blank">þۺɫhezyo</a>| <a href="http://plladay.com" target="_blank">ѴƬֻ߹ۿ</a>| <a href="http://gachi1151.com" target="_blank">99Ƶѹۿ</a>| <a href="http://qiwangxuan.com" target="_blank">޾Ʒ</a>| <a href="http://yxjcgs.com" target="_blank">һһƬѲi</a>| <a href="http://56aaaa.com" target="_blank">ձһ</a>| <a href="http://qq367.com" target="_blank">ɫ͵͵ۺav78</a>| <a href="http://www99xyxy.com" target="_blank">һ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>