﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-athrunwang</title><link>http://www.blogjava.net/athrunwang/</link><description>纪元</description><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 04:31:00 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 04:31:00 GMT</pubDate><ttl>60</ttl><item><title>log4j.properties</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/25/410305.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Tue, 25 Feb 2014 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/25/410305.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/410305.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/25/410305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/410305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/410305.html</trackback:ping><description><![CDATA[<div>#============================================================Logger CommonLog</div><div>log4j.logger.CommonLog=DEBUG, Console, LogRollingFile</div><div></div><div># Console output...</div><div>log4j.appender.Console=org.apache.log4j.ConsoleAppender</div><div>log4j.appender.Console.layout=org.apache.log4j.PatternLayout</div><div>log4j.appender.Console.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n</div><div></div><div># RollingFileAppender output...</div><div>log4j.appender.LogRollingFile=org.apache.log4j.RollingFileAppender</div><div>log4j.appender.LogRollingFile.File=${user.dir}/yccb/log/yccb.log</div><div>log4j.appender.LogRollingFile.Append=true</div><div>log4j.appender.LogRollingFile.MaxFileSize=46MB</div><div>log4j.appender.LogRollingFile.MaxBackupIndex=50</div><div>log4j.appender.LogRollingFile.layout=org.apache.log4j.PatternLayout</div><div>log4j.appender.LogRollingFile.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n</div><div></div><div>#============================================================Logger SkmLog</div><div>log4j.logger.SkmLog=DEBUG, DailyRollingFile</div><div></div><div># DailyRollingFile output...</div><div>log4j.appender.DailyRollingFile=org.apache.log4j.DailyRollingFileAppender</div><div>log4j.appender.DailyRollingFile.DatePattern=yyyy-MM-dd'.log'</div><div>log4j.appender.DailyRollingFile.File=${user.dir}/yccb/log/skm/skm.log&nbsp;</div><div>log4j.appender.DailyRollingFile.layout=org.apache.log4j.PatternLayout</div><div>log4j.appender.DailyRollingFile.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n</div><div></div>&nbsp;<img src ="http://www.blogjava.net/athrunwang/aggbug/410305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-25 22:52 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/25/410305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java对日期格式的校验</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/21/410156.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Fri, 21 Feb 2014 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/21/410156.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/410156.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/21/410156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/410156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/410156.html</trackback:ping><description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");</div><div><span style="white-space:pre">		</span>sdf.setLenient(false);</div><div><span style="white-space:pre">		</span>boolean b = true;</div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>sdf.parse("2002-15-11");</div><div><span style="white-space:pre">		</span>} catch (ParseException e) {</div><div><span style="white-space:pre">			</span>e.printStackTrace();</div><div><span style="white-space:pre">			</span>b = false;</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>System.out.println(b);</div><img src ="http://www.blogjava.net/athrunwang/aggbug/410156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-21 13:20 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/21/410156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse开发WebService教程</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/20/410094.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Thu, 20 Feb 2014 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/20/410094.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/410094.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/20/410094.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/410094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/410094.html</trackback:ping><description><![CDATA[<div>http://blog.csdn.net/wuxianglong/article/details/6285978</div><img src ="http://www.blogjava.net/athrunwang/aggbug/410094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-20 13:06 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/20/410094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>公钥，私钥,SSL（讲的很生动）  </title><link>http://www.blogjava.net/athrunwang/archive/2014/02/19/410028.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Wed, 19 Feb 2014 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/19/410028.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/410028.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/19/410028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/410028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/410028.html</trackback:ping><description><![CDATA[<div style="font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 12px; line-height: normal; background-color: #ffffff;"><h3><span style="font-size: 16px; line-height: 28px; color: #189a0f;">1，公钥和私钥成对出现</span></h3></div><div fc05="" fc11="" nbw-blog=""  ztag"="" style="line-height: 28px; font-size: 16px; word-wrap: break-word; margin: 15px 0px; padding-top: 5px; padding-bottom: 5px; overflow: hidden; font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; background-color: #ffffff;"><p style="margin: 0px 0px 10px; padding: 0px;">2，公开的密钥叫公钥，只有自己知道的叫私钥<br />3，用公钥加密的数据只有对应的私钥可以 解密<br />4，用私钥加密的数据只有对应的公钥可以解密<br />5，如果可以用公钥解密，则必然是对应的私钥加的密<br />6，如果可以用私钥解密，则 必然是对应的公钥加的密<br />明白了？</p><p style="margin: 0px 0px 10px; padding: 0px;">假设一下，我找了两个数字，一个是1，一个是2。我喜欢2这个数字，就保留起来，不告诉你们，然 后我告诉大家，1是我的公钥。</p><p style="margin: 0px 0px 10px; padding: 0px;">我有一个文件，不能让别人看，我就用1加密了。别人找到了这个文件，但是他不知道2就是解密的私钥啊，所以 他解不开，只有我可以用数字2，就是我的私钥，来解密。这样我就可以保护数据了。</p><p style="margin: 0px 0px 10px; padding: 0px;">我的好朋友x用我的公钥1加密了字符a，加密后成了b， 放在网上。别人偷到了这个文件，但是别人解不开，因为别人不知道2就是我的私钥，只有我才能解密，解密后就得到a。这样，我们就可以传送加密的数据了。</p><p style="margin: 0px 0px 10px; padding: 0px;">现在我们知道用公钥加密，然后用私钥来解密，就可以解决安全传输的问题了。如果我用私钥加密一段数据（当然只有我可以用私钥加密，因为只有我知道 2是我的私钥），结果所有的人都看到我的内容了，因为他们都知道我的公钥是1，那么这种加密有什么用处呢？</p><p style="margin: 0px 0px 10px; padding: 0px;">但是我的好朋友x说有人冒充我 给他发信。怎么办呢？我把我要发的信，内容是c，用我的私钥2，加密，加密后的内容是d，发给x，再告诉他解密看是不是c。他用我的公钥1解密，发现果然 是c。这个时候，他会想到，能够用我的公钥解密的数据，必然是用我的私钥加的密。只有我知道我得私钥，因此他就可以确认确实是我发的东西。这样我们就能确 认发送方身份了。<strong>这个过程叫做数字签名</strong>。当然具体的过程要稍微复杂一些。<strong>用私钥来加密数据，用途就是数字签名</strong>。</p><p style="margin: 0px 0px 10px; padding: 0px;">好，我们复习一下：<br />1， 公钥私钥成对出现<br />2，私钥只有我知道<br />3，大家可以用我的公钥给我发加密的信了<br />4，大家用我的公钥解密信的内容，看看能不能解开， 能解开，说明是经过我的私钥加密了，就可以确认确实是我发的了。</p><p style="margin: 0px 0px 10px; padding: 0px;">总结一下结论：<br />1，用公钥加密数据，用私钥来解密数据<br />2， 用私钥加密数据（数字签名），用公钥来验证数字签名。</p><p style="margin: 0px 0px 10px; padding: 0px;">在实际的使用中，公钥不会单独出现，总是以数字证书的方式出现，这样是为了公钥的安 全性和有效性。</p><p style="margin: 0px 0px 10px; padding: 0px;">二，SSL<br />我和我得好朋友x，要进行安全的通信。这种通信可以是QQ聊天，很频繁的。用我的公钥加密数据就不行 了，因为：<br />1，我的好朋友x没有公私钥对，我怎么给他发加密的消息啊？ （注：实际情况中，可以双方都有公私钥对）<br />2，用公私钥加密运算 很费时间，很慢，影响QQ效果。</p><p style="margin: 0px 0px 10px; padding: 0px;">好了，好朋友x，找了一个数字3，用我的公钥1，加密后发给我，说，我们以后就用这个数字来加密信息吧。 我解开后，得到了数字3。这样，只有我们两个人知道这个秘密的数字3，别的人都不知道，因为他们既不知x挑了一个什么数字，加密后的内容他们也无法解开， 我们<strong>把这个秘密的数字叫做会话密钥</strong>。</p><p style="margin: 0px 0px 10px; padding: 0px;">然后，我们选择一种对称密钥算法，比如DES，（对称算法是说，加密过程和解密过程是对称的，用一个 密钥加密，可以用同一个密钥解密。使用公私钥的算法是非对称加密算法），来加密我们之间的通信内容。别人因为不知道3是我们的会话密钥，因而无法解密。</p><p style="margin: 0px 0px 10px; padding: 0px;">好，复习一下：<br />1，SSL实现安全的通信<br />2，通信双方使用一方或者双方的公钥来传递和约定会话密钥 （这个过程叫做握手）<br />3， 双方使用会话密钥，来加密双方的通信内容</p>上面说的是原理。大家可能觉得比较复杂了，实际使用中，比这还要复杂。不过庆幸的是，好心的先行 者们在操作系统或者相关的软件中实现了这层（Layer），并且起了一个难听的名字叫做SSL，（Secure Socket Layer）。</div><img src ="http://www.blogjava.net/athrunwang/aggbug/410028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-19 11:11 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/19/410028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTPS</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/19/410022.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Wed, 19 Feb 2014 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/19/410022.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/410022.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/19/410022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/410022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/410022.html</trackback:ping><description><![CDATA[<strong style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">超文本传输安全协议</strong><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">（缩写：</span><strong style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">HTTPS</strong><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">，</span><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;"><a href="http://zh.wikipedia.org/wiki/%E8%8B%B1%E8%AF%AD" title="英语" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">英语</a>：<span xml:lang="en"><strong>Hypertext Transfer Protocol Secure</strong></span></span><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">）是</span><a href="http://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE" title="超文本传输协议" style="text-decoration: none; color: #0b0080; background-image: none; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px;">超文本传输协议</a><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">和</span><a href="http://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E5%B1%82%E5%AE%89%E5%85%A8" title="传输层安全" style="text-decoration: none; color: #0b0080; background-image: none; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px;">SSL/TLS</a><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">的组合，用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。</span><strong style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">HTTPS</strong><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">不应与在</span><a mw-magiclink-rfc"="" rel="nofollow" href="http://tools.ietf.org/html/rfc2660" style="text-decoration: none; color: #663366; background-image: linear-gradient(transparent, transparent), url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTAiCiAgIGhlaWdodD0iMTAiCiAgIGlkPSJzdmcyIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguNCByOTkzOSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iZXh0ZXJuYWwtbGluay1sdHItaWNvbi5zdmciCiAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iL3J1bi91c2VyLzEwMDAvZ3Zmcy9zZnRwOmhvc3Q9dXNlcnMudi1sby5rcmFrb3cucGwsdXNlcj1tNHR4L2hvbWUvV1dXL200dHgvV1dXL1dpa2ltZWRpYS9za2lucy92ZWN0b3IvaW1hZ2VzL2V4dGVybmFsLWxpbmstbHRyLWljb24ucG5nIgogICBpbmtzY2FwZTpleHBvcnQteGRwaT0iMTQ0LjEzNzI0IgogICBpbmtzY2FwZTpleHBvcnQteWRwaT0iMTQ0LjEzNzI0Ij4KICA8ZGVmcwogICAgIGlkPSJkZWZzNCI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJDbHViIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgcmVmWT0iMC4wIgogICAgICAgcmVmWD0iMC4wIgogICAgICAgaWQ9IkNsdWIiCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlkPSJwYXRoMzk5NiIKICAgICAgICAgZD0iTSAtMS41OTcxMzY3LC03LjA5Nzc2MzUgQyAtMy40ODYzODc0LC03LjA5Nzc2MzUgLTUuMDIzNTE4NywtNS41NjA2MzIxIC01LjAyMzUxODcsLTMuNjcxMzgxMyBDIC01LjAyMzUxODcsLTMuMDE0NzAxNSAtNC43ODUxNjU2LC0yLjQ0NDQ1NTYgLTQuNDY0MTA5NSwtMS45MjMyMjcxIEMgLTQuNTAyODYwOSwtMS44OTExMTU3IC00LjU0Mzc4MTQsLTEuODY0NzY0NiAtNC41ODA2NTMxLC0xLjgyOTk5MjEgQyAtNS4yMDMwNzY1LC0yLjY4NDk4NDkgLTYuMTcwMDUxNCwtMy4yNzUxMzMwIC03LjMwNzc3MzAsLTMuMjc1MTMzMCBDIC05LjE5NzAyNDUsLTMuMjc1MTMzMSAtMTAuNzM0MTU1LC0xLjczODAwMTYgLTEwLjczNDE1NSwwLjE1MTI0OTE0IEMgLTEwLjczNDE1NSwyLjA0MDQ5OTkgLTkuMTk3MDI0NSwzLjU3NzYzMTMgLTcuMzA3NzczMCwzLjU3NzYzMTMgQyAtNi4zMTQzMjY4LDMuNTc3NjMxMyAtNS40MzkxNTQwLDMuMTM1NTcwMiAtNC44MTM3NDA0LDIuNDU4ODEyNiBDIC00LjkzODQyNzQsMi44MTM3MDQxIC01LjAyMzUxODcsMy4xODAzMDAwIC01LjAyMzUxODcsMy41Nzc2MzEzIEMgLTUuMDIzNTE4Nyw1LjQ2Njg4MTkgLTMuNDg2Mzg3NCw3LjAwNDAxMzUgLTEuNTk3MTM2Nyw3LjAwNDAxMzUgQyAwLjI5MjExMzk0LDcuMDA0MDEzNSAxLjgyOTI0NTQsNS40NjY4ODE5IDEuODI5MjQ1NCwzLjU3NzYzMTMgQyAxLjgyOTI0NTQsMi43ODQyMzU0IDEuNTEzNjg2OCwyLjA4MzgwMjggMS4wNjAwNTc2LDEuNTAzMTU1MCBDIDIuNDE1MjcxOCwxLjc2NjM4NjggMy43NzE4Mzc1LDIuMjk3MzcxMSA0Ljc2NjE0NDQsMy44MzQwMjcyIEMgNC4wMjc5NDYzLDMuMDk1ODI4OSAzLjU1NDA5MDgsMS43NTM0MTE3IDMuNTU0MDkwOCwtMC4wNTg1MjkzNjEgTCAyLjkyNDc1NTQsLTAuMTA1MTQ2ODEgTCAzLjUwNzQ3MzMsLTAuMTI4NDU1NTMgQyAzLjUwNzQ3MzMsLTEuOTQwMzk2NiAzLjk1ODAxOTksLTMuMjgyODEzOCA0LjY5NjIxODMsLTQuMDIxMDEyMSBDIDMuNzM3MTI3NywtMi41Mzg3ODEzIDIuNDM5MDU0OSwtMS45OTQ2NDk2IDEuMTI5OTgzOCwtMS43MTM0NDg2IEMgMS41MzQxODAyLC0yLjI3NTM1NzggMS44MjkyNDU0LC0yLjkyNjg1NTYgMS44MjkyNDU0LC0zLjY3MTM4MTMgQyAxLjgyOTI0NTQsLTUuNTYwNjMxOSAwLjI5MjExMzk0LC03LjA5Nzc2MzUgLTEuNTk3MTM2NywtNy4wOTc3NjM1IHogIgogICAgICAgICBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuNzQ1ODc5MTNwdCIKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgwLjYpIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJEaWFtb25kTSIKICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgIHJlZlk9IjAuMCIKICAgICAgIHJlZlg9IjAuMCIKICAgICAgIGlkPSJEaWFtb25kTSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgzODQ5IgogICAgICAgICBkPSJNIDAsLTcuMDcxMDc2OCBMIC03LjA3MTA4OTQsMCBMIDAsNy4wNzEwNTg5IEwgNy4wNzEwNDYyLDAgTCAwLC03LjA3MTA3NjggeiAiCiAgICAgICAgIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wcHQiCiAgICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMC40KSIgLz4KICAgIDwvbWFya2VyPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTHN0YXJ0IgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgcmVmWT0iMC4wIgogICAgICAgcmVmWD0iMC4wIgogICAgICAgaWQ9IkFycm93MUxzdGFydCIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGgzNzY3IgogICAgICAgICBkPSJNIDAuMCwwLjAgTCA1LjAsLTUuMCBMIC0xMi41LDAuMCBMIDUuMCw1LjAgTCAwLjAsMC4wIHogIgogICAgICAgICBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB0IgogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuOCkgdHJhbnNsYXRlKDEyLjUsMCkiIC8+CiAgICA8L21hcmtlcj4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIyLjYyNzQxNyIKICAgICBpbmtzY2FwZTpjeD0iMTEuNzI1MzEyIgogICAgIGlua3NjYXBlOmN5PSI1LjY3ODAxNTkiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0iZmFsc2UiCiAgICAgZml0LW1hcmdpbi10b3A9IjAiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIwIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjAiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwNDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIgLz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE3Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODI2LjQyODU5LC02OTguNzkwNzcpIj4KICAgIDxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojMDA2NmNjO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTtmaWxsLW9wYWNpdHk6MSIKICAgICAgIGlkPSJyZWN0Mjk5NiIKICAgICAgIHdpZHRoPSI1Ljk4MjE0MjkiCiAgICAgICBoZWlnaHQ9IjUuOTgyMTQyOSIKICAgICAgIHg9IjgyNi45Mjg1OSIKICAgICAgIHk9IjcwMi4zMDg2NSIKICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iL2hvbWUvbTR0eC9QdWxwaXQvZWhlaGVoLnBuZyIKICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI5MC4wODU3NzciCiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAuMDg1Nzc3IiAvPgogICAgPGcKICAgICAgIGlkPSJnNDgxNSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzA3MTA2NzgsMC43MDcxMDY3OCwtMC43MDcxMDY3OCwwLjcwNzEwNjc4LDc2Mi44NywtMzU5Ljg4MzM5KSIKICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iL2hvbWUvbTR0eC9QdWxwaXQvZWhlaGVoLnBuZyIKICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI5MC4wODU3NzciCiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAuMDg1Nzc3Ij4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjY2NjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDQ3NzciCiAgICAgICAgIGQ9Im0gNzk2LjkwODE5LDcwMC4yODMxNyAzLjcwMTI3LC0zLjcwMTI2IDMuODExNzQsMy44MTE3NSAtMC4wMTg5LDIuMjAzMzYgLTEuODUyMzQsMCAwLDMuODU0MyAtMy44MDIzMywwIDAsLTMuOTcxMDggLTEuODUzNiwwIHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDY2ZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2MiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoNDc3OSIKICAgICAgICAgZD0ibSA4MDAuNjA5NDYsNjk4LjAwMjQ0IDMuNDY5ODYsMy40Mzg2NSAtMi41NzAyLDAgMCw0LjA3NDM2IC0xLjczNjIsMCAwLC00LjA3NDM2IC0yLjYxNzU0LC0zLjZlLTQgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=); background-color: #ffffff; padding-right: 13px; font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-position: 100% 50%, 100% 50%; background-repeat: no-repeat no-repeat;">RFC 2660</a><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">中定义的</span><a href="http://zh.wikipedia.org/wiki/%E5%AE%89%E5%85%A8%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE" title="安全超文本传输协议" style="text-decoration: none; color: #0b0080; background-image: none; background-color: #ffffff; font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px;">安全超文本传输协议</a><span style="font-family: 'Comic Sans MS'; font-size: 15px; line-height: 22.079999923706055px; background-color: #ffffff;">（S-HTTP）相混。<br /></span><br style="font-family: 'Comic Sans MS';" /><h2 style="font-family: 'Comic Sans MS';"><span id=".E4.B8.BB.E8.A6.81.E6.80.9D.E6.83.B3">主要思想<br /><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;">HTTPS的主要思想是在不安全的网络上创建一安全信道，并可在使用适当的加密包和<em>服务器证书可被验证且可被信任时</em>，对<a href="http://zh.wikipedia.org/wiki/%E7%AB%8A%E8%81%BD" title="窃听" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">窃听</a>和<a href="http://zh.wikipedia.org/wiki/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB" title="中间人攻击" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">中间人攻击</a>提供合理的保护。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;">HTTPS的信任继承基于预先安装在浏览器中的<a href="http://zh.wikipedia.org/wiki/%E8%AF%81%E4%B9%A6%E9%A2%81%E5%8F%91%E6%9C%BA%E6%9E%84" title="证书颁发机构" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">证书颁发机构</a>（如VeriSign、Microsoft等）（意即&#8220;我信任证书颁发机构告诉我应该信任的&#8221;）。因此，一个到某网站的HTTPS连接可被信任，<a href="http://zh.wikipedia.org/wiki/%E5%BD%93%E4%B8%94%E4%BB%85%E5%BD%93" title="当且仅当" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">当且仅当</a>：</p><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;">用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构；</li><li style="margin-bottom: 0.1em;">用户相信证书颁发机构仅信任合法的网站；</li><li style="margin-bottom: 0.1em;">被访问的网站提供了一个有效的证书，意即，它是由一个被信任的证书颁发机构签发的（大部分浏览器会对无效的证书发出警告）；</li><li style="margin-bottom: 0.1em;">该证书正确地验证了被访问的网站（如，访问<code style="font-family: monospace, Courier; background-color: #f9f9f9;">https://example</code>时收到了给&#8220;Example Inc.&#8221;而不是其它组织的证书）；</li><li style="margin-bottom: 0.1em;">或者互联网上相关的节点是值得信任的，或者用户相信本协议的加密层（<a href="http://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E5%B1%82%E5%AE%89%E5%85%A8" title="传输层安全" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">TLS</a>或SSL）不能被窃听者破坏。<br /></li></ol></span></h2><h2 style="background-image: none; background-color: #ffffff; font-weight: normal; margin: 0px 0px 0.6em; overflow: hidden; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #aaaaaa; font-size: 22px; font-family: 'Comic Sans MS'; line-height: 19.200000762939453px;"><span class="mw-headline" id=".E6.8A.80.E6.9C.AF.E7.BB.86.E8.8A.82">技术细节</span></h2><h2 style="font-family: 'Comic Sans MS';"><span><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;">pasting</li></ol></span></h2><h3 style="font-family: 'Comic Sans MS';"><span id=".E4.B8.8EHTTP.E7.9A.84.E5.B7.AE.E5.BC.82">与HTTP的差异</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=4" title="编辑段落：与HTTP的差异" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h3><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">与<a href="http://zh.wikipedia.org/wiki/HTTP" title="HTTP" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">HTTP</a>的<a href="http://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E7%AC%A6" title="统一资源定位符" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">URL</a>由&#8220;<code style="font-family: monospace, Courier; background-color: #f9f9f9;">http://</code>&#8221;起始且默认使用<a href="http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8" title="TCP/UDP端口列表" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">端口</a>80不同，HTTPS的URL由&#8220;<code style="font-family: monospace, Courier; background-color: #f9f9f9;">https://</code>&#8221;起始且默认使用<a href="http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8" title="TCP/UDP端口列表" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">端口</a>443。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">HTTP是不安全的，且攻击者通过<a href="http://zh.wikipedia.org/wiki/%E7%9B%A3%E8%81%BD" title="监听" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">监听</a>和<a href="http://zh.wikipedia.org/wiki/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB" title="中间人攻击" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">中间人攻击</a>等手段，可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击，并（在没有使用旧版本的SSL时）被认为是安全的。</p></li></ol></h2><h3 style="font-family: 'Comic Sans MS';"><span id=".E7.BD.91.E7.BB.9C.E5.B1.82">网络层</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=5" title="编辑段落：网络层" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h3><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">HTTP工作在应用层（<a href="http://zh.wikipedia.org/wiki/OSI%E6%A8%A1%E5%9E%8B" title="OSI模型" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">OSI模型</a>的最高层），但安全协议工作在一个较低的子层：在HTTP报文传输前对其加密，并在到达时对其解密。严格地讲，HTTPS并不是一个单独的协议，而是对工作在一加密连接（<a href="http://zh.wikipedia.org/wiki/%E4%BC%A0%E8%BE%93%E5%B1%82%E5%AE%89%E5%85%A8" title="传输层安全" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">TLS</a>或SSL）上的常规HTTP协议的称呼。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">HTTPS报文中的任何东西都被加密，包括所有报头和荷载。除了可能的<a href="http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E5%AF%86%E6%96%87%E6%94%BB%E5%87%BB" title="选择密文攻击" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">CCA</a>（参见<a href="http://zh.wikipedia.org/wiki/HTTPS#.E9.99.90.E5.88.B6" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">限制</a>小节）之外，一个攻击者所能知道的只有在两者之间有一连接这一事实。</p></li></ol></h2><h3 style="font-family: 'Comic Sans MS';"><span id=".E6.9C.8D.E5.8A.A1.E5.99.A8.E8.AE.BE.E7.BD.AE">服务器设置</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=6" title="编辑段落：服务器设置" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h3><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">要使一网络服务器准备好接受HTTPS连接，管理员必须创建一<a href="http://zh.wikipedia.org/wiki/%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6" title="数字证书" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">数字证书</a>，并交由<a href="http://zh.wikipedia.org/wiki/%E8%AF%81%E4%B9%A6%E9%A2%81%E5%8F%91%E6%9C%BA%E6%9E%84" title="证书颁发机构" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">证书颁发机构</a>签名以使浏览器接受。证书颁发机构会验证数字证书持有人和其声明的为同一人。浏览器通常都预装了证书颁发机构的证书，所以他们可以验证该签名。</p></li></ol></h2><h4 style="font-family: 'Comic Sans MS';"><span id=".E8.8E.B7.E5.BE.97.E8.AF.81.E4.B9.A6">获得证书</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=7" title="编辑段落：获得证书" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h4><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">由证书颁发机构签发的证书有免费的<sup id="cite_ref-3" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-3" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[3]</a></sup><sup id="cite_ref-4" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-4" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[4]</a></sup>，也有每年收费13<a href="http://zh.wikipedia.org/wiki/%E7%BE%8E%E5%85%83" title="美元" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">美元</a><sup id="cite_ref-5" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-5" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[5]</a></sup>到1500美元<sup id="cite_ref-6" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-6" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[6]</a></sup>不等的。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">一个组织也可能有自己的证书颁发机构，尤其是当设置浏览器来访问他们自己的网站时（如，运行在公司或学校<a href="http://zh.wikipedia.org/wiki/%E5%B1%80%E5%9F%9F%E7%BD%91" title="局域网" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">局域网</a>内的网站）。他们可以容易地将自己的证书加入浏览器中。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">此外，还存在一个人到人的证书颁发机构，<a href="http://zh.wikipedia.org/wiki/CAcert" title="CAcert" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">CAcert</a>。</p></li></ol></h2><h4 style="font-family: 'Comic Sans MS';"><span id=".E4.BD.9C.E4.B8.BA.E8.AE.BF.E9.97.AE.E6.8E.A7.E5.88.B6">作为访问控制</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=8" title="编辑段落：作为访问控制" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h4><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">HTTPS也可被用作客户端<a href="http://zh.wikipedia.org/wiki/%E8%AE%A4%E8%AF%81" title="认证" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">认证</a>手段来将一些信息限制给合法的用户。要做到这样，管理员通常会给每个用户创建证书（通常包含了用户的名字和电子邮件地址）。这个证书会被放置在浏览器中，并在每次连接到服务器时由服务器检查。</p></li></ol></h2><h4 style="font-family: 'Comic Sans MS';"><span id=".E5.BD.93.E7.A7.81.E9.92.A5.E5.A4.B1.E5.AF.86.E6.97.B6">当私钥失密时</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=9" title="编辑段落：当私钥失密时" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h4><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">证书可在其过期前被吊销，通常情况是该证书的私钥已经失密。较新的浏览器如<a href="http://zh.wikipedia.org/wiki/Google_Chrome" title="Google Chrome" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Google Chrome</a>、<a href="http://zh.wikipedia.org/wiki/Firefox" title="Firefox" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Firefox</a><sup id="cite_ref-7" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-7" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[7]</a></sup>、<a href="http://zh.wikipedia.org/wiki/Opera" title="Opera" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Opera</a><sup id="cite_ref-8" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-8" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[8]</a></sup>和运行在<a href="http://zh.wikipedia.org/wiki/Windows_Vista" title="Windows Vista" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Windows Vista</a>上的<a href="http://zh.wikipedia.org/wiki/Internet_Explorer" title="Internet Explorer" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Internet Explorer</a><sup id="cite_ref-9" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-9" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[9]</a></sup>都实现了<a href="http://zh.wikipedia.org/w/index.php?title=%E5%9C%A8%E7%BA%BF%E8%AF%81%E4%B9%A6%E7%8A%B6%E6%80%81%E5%8D%8F%E8%AE%AE&amp;action=edit&amp;redlink=1" original-title="在线证书状态协议（页面不存在）" style="text-decoration: none; color: #009999; background-image: none; background-position: initial initial; background-repeat: initial initial;">在线证书状态协议</a>（OCSP）以排除这种情形：浏览器将网站提供的证书的串行号通过OCSP发送给证书颁发机构，后者会告诉浏览器证书是否还是有效的。<sup id="cite_ref-10" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-10" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[10]</a></sup></p></li></ol></h2><h3 style="font-family: 'Comic Sans MS';"><span id=".E5.B1.80.E9.99.90">局限</span><span style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; padding-right: 0.25em; unicode-bidi: -webkit-isolate;">[<a href="http://zh.wikipedia.org/w/index.php?title=HTTPS&amp;action=edit&amp;section=10" title="编辑段落：局限" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">编辑</a>]</span></h3><h2 style="font-family: 'Comic Sans MS';"><ol style="line-height: 1.5em; margin: 0.3em 0px 0px 3.2em; padding: 0px; list-style-image: none; font-family: sans-serif; font-size: 15px; font-weight: normal; background-color: #ffffff;"><li style="margin-bottom: 0.1em;"><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">TLS有两种策略：简单策略和交互策略。交互策略更为安全，但需要用户在他们的浏览器中安装个人的<a href="http://zh.wikipedia.org/wiki/%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6" title="数字证书" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">证书</a>来进行<a href="http://zh.wikipedia.org/wiki/%E8%AE%A4%E8%AF%81" title="认证" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">认证</a>。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">不管使用了哪种策略，协议所能提供的保护总强烈地依赖于浏览器的<a href="http://zh.wikipedia.org/w/index.php?title=%E5%AE%9E%E7%8E%B0&amp;action=edit&amp;redlink=1" title="实现（页面不存在）" style="text-decoration: none; color: #a55858; background-image: none; background-position: initial initial; background-repeat: initial initial;">实现</a>和服务器软件所支持的<a href="http://zh.wikipedia.org/w/index.php?title=%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95&amp;action=edit&amp;redlink=1" title="加密算法（页面不存在）" style="text-decoration: none; color: #a55858; background-image: none; background-position: initial initial; background-repeat: initial initial;">加密算法</a>。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">HTTPS并不能防止站点被<a href="http://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E8%9C%98%E8%9B%9B" title="网络蜘蛛" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">网络蜘蛛</a>抓取。在某些情形中，被加密资源的<a href="http://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E7%AC%A6" title="统一资源定位符" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">URL</a>可仅通过截获请求和响应的大小推得，<sup id="cite_ref-11" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-11" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[11]</a></sup>这就可使攻击者同时知道明文（公开的静态内容）和密文（被加密过的明文），从而使<a href="http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E5%AF%86%E6%96%87%E6%94%BB%E5%87%BB" title="选择密文攻击" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">选择密文攻击</a>成为可能。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">因为<a href="http://zh.wikipedia.org/wiki/%E5%AE%89%E5%85%A8%E5%A5%97%E6%8E%A5%E5%B1%82" title="安全套接层" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">SSL</a>在HTTP之下工作，对上层协议一无所知，所以SSL服务器只能为一个IP地址/端口组合提供一个证书。<sup id="cite_ref-12" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-12" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[12]</a></sup>这就意味着在大部分情况下，使用HTTPS的同时支持<a href="http://zh.wikipedia.org/wiki/%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA" title="虚拟主机" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">基于名字的虚拟主机</a>是不很现实的。一种叫<a href="http://zh.wikipedia.org/w/index.php?title=%E5%9F%9F%E5%90%8D%E6%8C%87%E7%A4%BA&amp;action=edit&amp;redlink=1" original-title="域名指示（页面不存在）" style="text-decoration: none; color: #009999; background-image: none; background-position: initial initial; background-repeat: initial initial;">域名指示</a>（SNI）的方案通过在加密连接创建前向服务器发送主机名解决了这一问题。<a href="http://zh.wikipedia.org/wiki/Firefox" title="Firefox" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Firefox</a>&nbsp;2、<a href="http://zh.wikipedia.org/wiki/Opera" title="Opera" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Opera</a>8和运行在<a href="http://zh.wikipedia.org/wiki/Windows_Vista" title="Windows Vista" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Windows Vista</a>的<a href="http://zh.wikipedia.org/wiki/Internet_Explorer" title="Internet Explorer" style="text-decoration: none; color: #0b0080; background-image: none;">Internet Explorer</a>&nbsp;7都加入了对SNI的支持。<sup id="cite_ref-13" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-13" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[13]</a></sup><sup id="cite_ref-14" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-14" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[14]</a></sup><sup id="cite_ref-15" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-15" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[15]</a></sup></p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">因为HTTPS连接所用的<a href="http://zh.wikipedia.org/wiki/%E5%85%AC%E9%92%A5" title="公钥" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">公钥</a>以明文传输，因此中国大陆的<a href="http://zh.wikipedia.org/wiki/%E9%98%B2%E7%81%AB%E9%95%BF%E5%9F%8E" title="防火长城" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">防火长城</a>可以对特定网站按照匹配的黑名单证书，通过伪装成对方向连接两端的计算机发送RST包干扰两台计算机间正常的<a href="http://zh.wikipedia.org/wiki/TCP" title="TCP" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">TCP</a>通讯，以打断与特定IP地址之间的443端口握手，或者直接使握手的数据包丢弃，导致握手失败，从而导致TLS连接失败。<sup id="cite_ref-16" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-16" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[16]</a></sup>这也是一种互联网信息审查和屏蔽的技术手段。</p><p style="margin: 0.4em 0px 0.5em; line-height: 1.5em;">如果<a href="http://zh.wikipedia.org/wiki/Mac_OS_X" title="Mac OS X" style="text-decoration: none; color: #0b0080; background-image: none; background-position: initial initial; background-repeat: initial initial;">Mac OS X</a>中的家长控制被启用，那么HTTPS站点必须显式地在&#8220;总是允许&#8221;列表中列出。<sup id="cite_ref-17" style="unicode-bidi: -webkit-isolate;"><a href="http://zh.wikipedia.org/wiki/HTTPS#cite_note-17" style="text-decoration: none; color: #0b0080; background-image: none; white-space: nowrap; background-position: initial initial; background-repeat: initial initial;">[17]</a></sup></p></li></ol></h2><img src ="http://www.blogjava.net/athrunwang/aggbug/410022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-19 10:48 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/19/410022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 传递</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/11/409739.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Tue, 11 Feb 2014 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/11/409739.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/409739.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/11/409739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/409739.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/409739.html</trackback:ping><description><![CDATA[值传递（pass by value）：stack（栈，常量、基本数据类型（八种）、对象引用、指令（对象的方法）），简单类型。<br /><br />引用传递(pss by reference)：stack（栈）和heap（堆，对象实例（object instance））。<br /><br />stream在引用传递的过程中，不要随意关闭，一关都关！<img src ="http://www.blogjava.net/athrunwang/aggbug/409739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-11 17:33 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/11/409739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>double and float</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/11/409697.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Tue, 11 Feb 2014 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/11/409697.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/409697.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/11/409697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/409697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/409697.html</trackback:ping><description><![CDATA[<span style="font-family: 'Times New Roman'; font-size: 14pt;">double：双精度浮点数，64位（bits）8字节，</span><span style="font-family: 'Times New Roman'; font-size: 14pt; line-height: 22.079999923706055px; background-color: #ffffff;">它可以表示十进制的15或16位有效数字。</span><br /><span style="font-family: 'Times New Roman'; font-size: 14pt;">float：单精度浮点数，32位（bits）4字节。</span><br /><span style="font-family: 'Times New Roman'; font-size: 14pt;">浮点：浮动小数点。</span><br /><br /><img src ="http://www.blogjava.net/athrunwang/aggbug/409697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-11 09:34 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/11/409697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改java安全设置</title><link>http://www.blogjava.net/athrunwang/archive/2014/02/11/409694.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Tue, 11 Feb 2014 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2014/02/11/409694.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/409694.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2014/02/11/409694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/409694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/409694.html</trackback:ping><description><![CDATA[当部分网页上面的JAVA插件无法运行，系统提示是由于您的安全设置，所以该运行程序被阻止了，此问题是由于您的JAVA安全设置的级别引起的。<br /><br />JAVA安全设置修改方式：windows控制面板 -&gt; 程序 -&gt; Java -&gt; 安全。<img src ="http://www.blogjava.net/athrunwang/aggbug/409694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2014-02-11 09:11 <a href="http://www.blogjava.net/athrunwang/archive/2014/02/11/409694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring容器启动后自动执行Servlet进行预处理</title><link>http://www.blogjava.net/athrunwang/archive/2013/09/13/404042.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Fri, 13 Sep 2013 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2013/09/13/404042.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/404042.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2013/09/13/404042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/404042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/404042.html</trackback:ping><description><![CDATA[<p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px; background-color: #ffffff;">通常做法是定义一个Servlet，并在web.xml中配置Servlet的启动顺序&lt;load-on-startup&gt;的值在DispatcherServlet之后。但这样做的缺点是在Servlet中无法使用Spring的依赖注入功能，只能使用WebApplicationContext的getBean()方法获取bean。</p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px; background-color: #ffffff;">找到的解决办法如下：</p><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px; background-color: #ffffff;">1、自定义一个用于代理启动Servlet的类DelegatingServletProxy：<div style="display: inline-block;"></div></p><div><font face="Helvetica, Tahoma, Arial, sans-serif"><span style="line-height: 25.1875px;">package com.test.common.util;</span></font></div><div></div><div>import java.io.IOException;</div><div></div><div>import javax.servlet.GenericServlet;</div><div>import javax.servlet.Servlet;</div><div>import javax.servlet.ServletException;</div><div>import javax.servlet.ServletRequest;</div><div>import javax.servlet.ServletResponse;</div><div></div><div>import org.springframework.web.context.WebApplicationContext;</div><div>import org.springframework.web.context.support.WebApplicationContextUtils;</div><div></div><div>public class DelegatingServletProxy extends GenericServlet {</div><div></div><div><span style="white-space:pre">	</span>private String targetBean;</div><div><span style="white-space:pre">	</span>private Servlet proxy;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>@Override</div><div><span style="white-space:pre">	</span>public void service(ServletRequest arg0, ServletResponse arg1)</div><div><span style="white-space:pre">			</span>throws ServletException, IOException {</div><div><span style="white-space:pre">		</span>proxy.service(arg0, arg1);</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>@Override</div><div><span style="white-space:pre">	</span>public void init() throws ServletException {</div><div><span style="white-space:pre">		</span>this.targetBean = getServletName();</div><div><span style="white-space:pre">		</span>getServletBean();</div><div><span style="white-space:pre">		</span>proxy.init(getServletConfig());</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private void getServletBean() {</div><div><span style="white-space:pre">		</span>WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());</div><div><span style="white-space:pre">		</span>this.proxy = (Servlet)wac.getBean(targetBean);</div><div><span style="white-space:pre">	</span>}</div><div></div><div>}</div><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px; background-color: #ffffff;">2、编写启动Servlet：<br /></p><div><font face="Helvetica, Tahoma, Arial, sans-serif"><span style="line-height: 25.1875px;">package com.test.common.util;</span></font></div><div></div><div>import java.io.IOException;</div><div>import java.util.List;</div><div></div><div>import javax.annotation.Resource;</div><div>import javax.servlet.ServletConfig;</div><div>import javax.servlet.ServletException;</div><div>import javax.servlet.http.HttpServlet;</div><div>import javax.servlet.http.HttpServletRequest;</div><div>import javax.servlet.http.HttpServletResponse;</div><div></div><div>import org.springframework.stereotype.Component;</div><div></div><div>import cn.edu.swu.oa.agency.model.Department;</div><div>import cn.edu.swu.oa.agency.model.Group;</div><div>import cn.edu.swu.oa.agency.service.DepService;</div><div>import cn.edu.swu.oa.agency.service.GroService;</div><div>import cn.edu.swu.oa.common.model.SysCode;</div><div>import cn.edu.swu.oa.safe.model.User;</div><div>import cn.edu.swu.oa.safe.service.UserService;</div><div></div><div>/**</div><div>&nbsp;*&nbsp;</div><div>&nbsp;*</div><div>&nbsp;* 类型解释：Spring启动完成后执行初始化操作</div><div>&nbsp;* 类型表述：预读某些实体的Key-Value，放入map，方便以后使用</div><div>&nbsp;* @author&nbsp;</div><div>&nbsp;* @version&nbsp;</div><div>&nbsp;*</div><div>&nbsp;*/</div><div>@Component("initialServlet")</div><div>public class InitialServlet extends HttpServlet {</div><div><span style="white-space:pre">	</span>private static final long serialVersionUID = 1L;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>@Resource</div><div><span style="white-space:pre">	</span>private UserService userService;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>@Resource</div><div><span style="white-space:pre">	</span>private DepService depService;</div><div>&nbsp; &nbsp; &nbsp; &nbsp;</div><div><span style="white-space:pre">	</span>@Resource</div><div><span style="white-space:pre">	</span>private GroService groService;</div><div><span style="white-space:pre">	</span></div><div>&nbsp; &nbsp; /**</div><div>&nbsp; &nbsp; &nbsp;* @see HttpServlet#HttpServlet()</div><div>&nbsp; &nbsp; &nbsp;*/</div><div>&nbsp; &nbsp; public InitialServlet() {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; super();</div><div>&nbsp; &nbsp; }</div><div></div><div><span style="white-space:pre">	</span>/**</div><div><span style="white-space:pre">	</span> * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)</div><div><span style="white-space:pre">	</span> */</div><div><span style="white-space:pre">	</span>protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>/**</div><div><span style="white-space:pre">	</span> * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)</div><div><span style="white-space:pre">	</span> */</div><div><span style="white-space:pre">	</span>protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {</div><div><span style="white-space:pre">		</span>// TODO Auto-generated method stub</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>@Override</div><div><span style="white-space:pre">	</span>public void init(ServletConfig config) throws ServletException {</div><div><span style="white-space:pre">		</span>//初始化eserMap</div><div><span style="white-space:pre">		</span>List&lt;User&gt; users = userService.getUsers();</div><div><span style="white-space:pre">		</span>for(int i = 0; i &lt; users.size(); i++) {</div><div><span style="white-space:pre">			</span>User user = users.get(i);</div><div><span style="white-space:pre">			</span>Integer userId = user.getUserId();</div><div><span style="white-space:pre">			</span>String userName = user.getUserName();</div><div><span style="white-space:pre">			</span>SysCode.userMap.put(userId, userName);</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>//初始化depMap</div><div><span style="white-space:pre">		</span>List&lt;Department&gt; deps = depService.getAllDeps();</div><div><span style="white-space:pre">		</span>for(int i = 0; i &lt; deps.size(); i++) {</div><div><span style="white-space:pre">			</span>Department dep = deps.get(i);</div><div><span style="white-space:pre">			</span>Integer depId = dep.getDepId();</div><div><span style="white-space:pre">			</span>String depName = dep.getDepName();</div><div><span style="white-space:pre">			</span>SysCode.depMap.put(depId, depName);</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>//初始化groMap</div><div><span style="white-space:pre">		</span>List&lt;Group&gt; gros = groService.getAllGroups();</div><div><span style="white-space:pre">		</span>for(int i = 0; i &lt; gros.size(); i++) {</div><div><span style="white-space:pre">			</span>Group gro = gros.get(i);</div><div><span style="white-space:pre">			</span>Integer groId = gro.getGroId();</div><div><span style="white-space:pre">			</span>String groName = gro.getGroName();</div><div><span style="white-space:pre">			</span>SysCode.groMap.put(groId, groName);</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">	</span>}</div><div></div><div>}</div><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px; background-color: #ffffff;">&nbsp;3、在web.xml文件中配置InitialServlet ：<br /></p><div>&lt;servlet&gt;</div><p style="margin: 0px; padding: 0px; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px; background-color: #ffffff;"><br /></p><div>&nbsp; &nbsp; &lt;description&gt;&lt;/description&gt;</div><div>&nbsp; &nbsp; &lt;display-name&gt;InitialServlet&lt;/display-name&gt;</div><div>&nbsp; &nbsp; &lt;servlet-name&gt;initialServlet&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &lt;servlet-class&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; com.test.common.util.DelegatingServletProxy&nbsp;</div><div>&nbsp; &nbsp; &lt;/servlet-class&gt;</div><div>&nbsp; &nbsp; &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;</div><div>&lt;/servlet&gt;</div><div>&lt;servlet-mapping&gt;</div><div>&nbsp; &nbsp; &lt;servlet-name&gt;initialServlet&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &lt;url-pattern&gt;/InitialServlet&lt;/url-pattern&gt;</div><div>&lt;/servlet-mapping&gt;<br /><span style="background-color: #ffffff; font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.1875px;">&nbsp;完成这些操作后，就可以在Spring容器启动后执行自定义的Servlet，并且在自定义Servlet中可以使用Spring Annotation的自动注入功能。 &lt;script&gt;&lt;/script&gt;</span></div><img src ="http://www.blogjava.net/athrunwang/aggbug/404042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2013-09-13 13:26 <a href="http://www.blogjava.net/athrunwang/archive/2013/09/13/404042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 定时器用法</title><link>http://www.blogjava.net/athrunwang/archive/2013/09/13/404040.html</link><dc:creator>AthrunWang</dc:creator><author>AthrunWang</author><pubDate>Fri, 13 Sep 2013 05:24:00 GMT</pubDate><guid>http://www.blogjava.net/athrunwang/archive/2013/09/13/404040.html</guid><wfw:comment>http://www.blogjava.net/athrunwang/comments/404040.html</wfw:comment><comments>http://www.blogjava.net/athrunwang/archive/2013/09/13/404040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athrunwang/comments/commentRss/404040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athrunwang/services/trackbacks/404040.html</trackback:ping><description><![CDATA[<div>package com.athrunwang.test;</div><div></div><div>import java.util.Calendar;</div><div>import java.util.Date;</div><div>import java.util.Timer;</div><div>import java.util.TimerTask;</div><div></div><div>public class TestTimer {</div><div><span style="white-space:pre">	</span>static int count = 0;</div><div></div><div><span style="white-space:pre">	</span>public static void showTimer() {</div><div><span style="white-space:pre">		</span>TimerTask task = new TimerTask() {</div><div><span style="white-space:pre">			</span>@Override</div><div><span style="white-space:pre">			</span>public void run() {</div><div><span style="white-space:pre">				</span>++count;</div><div><span style="white-space:pre">				</span>System.out.println("时间=" + new Date() + " 执行了" + count + "次"); // 1次</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">		</span>};</div><div></div><div><span style="white-space:pre">		</span>// 设置执行时间</div><div><span style="white-space:pre">		</span>Calendar calendar = Calendar.getInstance();</div><div><span style="white-space:pre">		</span>int year = calendar.get(Calendar.YEAR);</div><div><span style="white-space:pre">		</span>int month = calendar.get(Calendar.MONTH);</div><div><span style="white-space:pre">		</span>int day = calendar.get(Calendar.DAY_OF_MONTH);// 每天</div><div><span style="white-space:pre">		</span>// 定制每天的21:09:00执行，</div><div><span style="white-space:pre">		</span>calendar.set(year, month, day, 9, 54, 00);</div><div><span style="white-space:pre">		</span>Date date = calendar.getTime();</div><div><span style="white-space:pre">		</span>Timer timer = new Timer();</div><div><span style="white-space:pre">		</span>System.out.println(date);</div><div></div><div><span style="white-space:pre">		</span>int period = 2 * 1000;</div><div><span style="white-space:pre">		</span>// 每天的date时刻执行task，每隔2秒重复执行</div><div><span style="white-space:pre">		</span>timer.schedule(task, date, period);</div><div><span style="white-space:pre">		</span>// 每天的date时刻执行task, 仅执行一次</div><div><span style="white-space:pre">		</span>//timer.schedule(task, date);</div><div><span style="white-space:pre">	</span>}</div><div></div><div><span style="white-space:pre">	</span>public static void main(String[] args) {</div><div><span style="white-space:pre">		</span>showTimer();</div><div><span style="white-space:pre">	</span>}</div><div>}</div><div></div><img src ="http://www.blogjava.net/athrunwang/aggbug/404040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athrunwang/" target="_blank">AthrunWang</a> 2013-09-13 13:24 <a href="http://www.blogjava.net/athrunwang/archive/2013/09/13/404040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>