<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>宇托的狗窝 &#187; 程序开发</title>
	<atom:link href="http://yutuo.net/category/program/feed" rel="self" type="application/rss+xml" />
	<link>http://yutuo.net</link>
	<description>匍匐地跪着，头仰得再高也无法显示你的高度；挺起胸脯站着，低下头，亦能显得伟岸！</description>
	<lastBuildDate>Sat, 04 Feb 2012 15:46:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Servlet的线程安全</title>
		<link>http://yutuo.net/archives/e180c988fce8ae2c.html</link>
		<comments>http://yutuo.net/archives/e180c988fce8ae2c.html#comments</comments>
		<pubDate>Sun, 22 Jan 2012 09:10:45 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=157</guid>
		<description><![CDATA[　　在一般情况下，Servlet容器只创建一个实例，如果有多个客户请求同时访问这个Servlet，会采用多线程来访问这一个Servlet。在这种情况下，就会有线程安全问题。 　　比如，定义一个Servlet的类变量user，然后在doPost或者doGet里处理的话，当线程转换时就会出现很怪的情况。如下代码： 123456789101112131415161718192021222324 import java.io.IOException;import java.io.PrintWriter;&#160;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;&#160;&#160;@WebServlet("/ServletSecurity")public&#160;class ServletSecurity extends HttpServlet {&#160;&#160;&#160; private&#160;static&#160;final&#160;long serialVersionUID =&#160;-1841665725196115690L;&#160;&#160;&#160;&#160; private String user;&#160;&#160;&#160;&#160; protected&#160;void doGet(HttpServletRequest request, HttpServletResponse response)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throws ServletException, IOException {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.user = request.getParameter("user");&#160;&#160;&#160;&#160;&#160;&#160;&#160; PrintWriter out = response.getWriter();&#160;&#160;&#160;&#160;&#160;&#160;&#160; out.println(this.user +&#160;", Welcome.");&#160;&#160;&#160; }} 　　在上面这段代码里，有些人认为没有把user变量设为静态变量就不会出现线程问题了。其实不是的，因为Servlet容器只建一个实例，在线程间切换时就会出问题。如A和B两个人同时登录时，A先执行，在this.user = request.getParameter("user");把user设为A；然后线程切换了，B把user设为B，执行完之后再执行A，就会输出B, Welcome。 　　解决上面问题的方法就是，不要在Servlet定义可写的类变量，当然可写的静态变量就更不能定义了。 参考资料：孙鑫《Java Web开发详解——XML XSLT Servlet JSP深入剖析实例应用》第11章 开发线程安全的Servlet]]></description>
			<content:encoded><![CDATA[<p>　　在一般情况下，Servlet容器只创建一个实例，如果有多个客户请求同时访问这个Servlet，会采用多线程来访问这一个Servlet。在这种情况下，就会有线程安全问题。</p>
<p>　　比如，定义一个Servlet的类变量user，然后在doPost或者doGet里处理的话，当线程转换时就会出现很怪的情况。如下代码：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><b><span style="color: #0000ff">import</span></b><span> java</span><b><span style="color: #000080">.</span></b><span>io</span><b><span style="color: #000080">.</span></b><span>IOException</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> java</span><b><span style="color: #000080">.</span></b><span>io</span><b><span style="color: #000080">.</span></b><span>PrintWriter</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>ServletException</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>annotation</span><b><span style="color: #000080">.</span></b><span>WebServlet</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>http</span><b><span style="color: #000080">.</span></b><span>HttpServlet</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>http</span><b><span style="color: #000080">.</span></b><span>HttpServletRequest</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>http</span><b><span style="color: #000080">.</span></b><span>HttpServletResponse</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br />&nbsp;<br /><span>@WebServlet</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"/ServletSecurity"</span><b><span style="color: #000080">)</span></b><br /><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">class</span><span> ServletSecurity </span><b><span style="color: #0000ff">extends</span></b><span> HttpServlet </span><b><span style="color: #000080">{</span></b><br />&nbsp;&nbsp;&nbsp; <span style="color: #8000ff">private</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span>&nbsp;</span><span style="color: #8000ff">final</span><span>&nbsp;</span><span style="color: #8000ff">long</span><span> serialVersionUID </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">-</span></b><span style="color: #ff8000">1841665725196115690L</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br />&nbsp;&nbsp;&nbsp; <span style="color: #8000ff">private</span><span> String user</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br />&nbsp;&nbsp;&nbsp; <span style="color: #8000ff">protected</span><span>&nbsp;</span><span style="color: #8000ff">void</span><span> doGet</span><b><span style="color: #000080">(</span></b><span>HttpServletRequest request</span><b><span style="color: #000080">,</span></b><span> HttpServletResponse response</span><b><span style="color: #000080">)</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: #0000ff">throws</span></b><span> ServletException</span><b><span style="color: #000080">,</span></b><span> IOException </span><b><span style="color: #000080">{</span></b><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b><span style="color: #0000ff">this</span></b><b><span style="color: #000080">.</span></b><span>user </span><b><span style="color: #000080">=</span></b><span> request</span><b><span style="color: #000080">.</span></b><span>getParameter</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"user"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>PrintWriter out </span><b><span style="color: #000080">=</span></b><span> response</span><b><span style="color: #000080">.</span></b><span>getWriter</span><b><span style="color: #000080">();</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><b><span style="color: #0000ff">this</span></b><b><span style="color: #000080">.</span></b><span>user </span><b><span style="color: #000080">+</span></b><span>&nbsp;</span><span style="color: #808080">", Welcome."</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp; <b><span style="color: #000080">}</span></b><br /><b><span style="color: #000080">}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>　　在上面这段代码里，有些人认为没有把user变量设为静态变量就不会出现线程问题了。其实不是的，因为Servlet容器只建一个实例，在线程间切换时就会出问题。如A和B两个人同时登录时，A先执行，在this.user = request.getParameter("user");把user设为A；然后线程切换了，B把user设为B，执行完之后再执行A，就会输出B, Welcome。</p>
<p>　　解决上面问题的方法就是，不要在Servlet定义可写的类变量，当然可写的静态变量就更不能定义了。</p>
<p>参考资料：孙鑫《Java Web开发详解——XML XSLT Servlet JSP深入剖析实例应用》第11章 开发线程安全的Servlet</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/e180c988fce8ae2c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP使用DateTime来转换字符串</title>
		<link>http://yutuo.net/archives/3800cc54c67db854.html</link>
		<comments>http://yutuo.net/archives/3800cc54c67db854.html#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:04:43 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DateTime]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=155</guid>
		<description><![CDATA[　　在PHP5.3以前，只能使用strtotime来把字符转为时间，然后再用date()把时间格式化为自己想要的格式。这种情况下，如果一些特殊的时间字符串就无法直接处理了，必须自己写代码进行转换了。 　　在PHP5.3里，新加了一个DateTime类，它可以通过自己定义的格式来读取字符串，然后格式化输出。具体可以参考PHP的官方网站的介绍。 DateTime::createFromFormat http://www.php.net/manual/en/datetime.createfromformat.php DateTime::format http://www.php.net/manual/en/datetime.format.php测试代码如下： 12 $date&#160;= DateTime::createFromFormat('j-M-Y',&#160;'15-Feb-2009');echo&#160;$date-&#62;format('Y-m-d');]]></description>
			<content:encoded><![CDATA[<p>　　在PHP5.3以前，只能使用strtotime来把字符转为时间，然后再用date()把时间格式化为自己想要的格式。这种情况下，如果一些特殊的时间字符串就无法直接处理了，必须自己写代码进行转换了。</p>
<p>　　在PHP5.3里，新加了一个DateTime类，它可以通过自己定义的格式来读取字符串，然后格式化输出。具体可以参考PHP的官方网站的介绍。</p>
<p>DateTime::createFromFormat <a href="http://www.php.net/manual/en/datetime.createfromformat.php">http://www.php.net/manual/en/datetime.createfromformat.php</a></p>
<p>DateTime::format <a href="http://www.php.net/manual/en/datetime.format.php">http://www.php.net/manual/en/datetime.format.php</a><br />测试代码如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #000080">$date</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span> DateTime</span><span style="color: #8000ff">::</span><span>createFromFormat</span><span style="color: #8000ff">(</span><span style="color: #808080">'j-M-Y'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'15-Feb-2009'</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #000080">$date</span><span style="color: #8000ff">-&gt;</span><span>format</span><span style="color: #8000ff">(</span><span style="color: #808080">'Y-m-d'</span><span style="color: #8000ff">);</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/3800cc54c67db854.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Servlet的异常处理</title>
		<link>http://yutuo.net/archives/571ef5e8ea91be55.html</link>
		<comments>http://yutuo.net/archives/571ef5e8ea91be55.html#comments</comments>
		<pubDate>Sun, 15 Jan 2012 06:22:22 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=154</guid>
		<description><![CDATA[　　在之前，我一般用Try…Catch…来处理Servlet的异常。最近在看孙鑫老师写的《Java Web开发详解——XML XSLT Servlet JSP深入剖析实例应用》，发现还可以通过web.xml来配置Servlet的异常处理。觉得这个方法还是最好的。 　　主要是通过配置WEB-INF下web.xml的error-page来达到我们的异常处理。error-page下有三个标签error-code，exception-type，location。其中location是必需的，用于指定异常处理画面；error-code，exception-type在一个error-page有且只能有一个，用于指定异常或者错误码。 　　如果处理画面是Servlet，我们可以通过service来处理异常。其中request参数属性里，能取到javax.servlet.error.status_code, javax.servlet.error.exception_type, javax.servlet.error.message, javax.servlet.error.exception, javax.servlet.error.request_uri, javax.servlet.error.servlet_name这六个值，具体的说明和类型，请参考测试代码。 比如，测试用的web.xml配置如下： 123456789101112131415161718192021 &#60;?xml&#160;version="1.0"&#160;encoding="UTF-8"?&#62;&#160;&#60;web-app&#160;&#160;&#160;&#160;&#160;&#160;&#160; version="3.0"&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns="http://java.sun.com/xml/ns/javaee"&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#160;&#160;&#160;&#160;&#160;&#160;&#160; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"&#62;&#160;&#160;&#160;&#160; &#60;error-page&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;error-code&#62;404&#60;/error-code&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;location&#62;/ErrorPage&#60;/location&#62;&#160;&#160;&#160;&#160; &#60;/error-page&#62;&#160;&#160;&#160;&#160; &#60;error-page&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;error-code&#62;500&#60;/error-code&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;location&#62;/ErrorPage&#60;/location&#62;&#160;&#160;&#160;&#160; &#60;/error-page&#62;&#160;&#160;&#160;&#160; &#60;error-page&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;exception-type&#62;java.io.IOException&#60;/exception-type&#62;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;location&#62;/ErrorPage&#60;/location&#62;&#160;&#160;&#160;&#160; &#60;/error-page&#62;&#160;&#60;/web-app&#62; 测试用的Servlet如下： 123456789101112131415161718192021222324252627282930313233343536373839 import java.io.IOException;import java.io.PrintWriter;&#160;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;&#160;/*** Servlet implementation class ErrorPage*/@WebServlet("/ErrorPage")public&#160;class ErrorPage extends HttpServlet {&#160;&#160;&#160; private&#160;static&#160;final&#160;long serialVersionUID =&#160;1L;&#160;&#160;&#160;&#160; protected&#160;void service(HttpServletRequest [...]]]></description>
			<content:encoded><![CDATA[<p>　　在之前，我一般用Try…Catch…来处理Servlet的异常。最近在看孙鑫老师写的《Java Web开发详解——XML XSLT Servlet JSP深入剖析实例应用》，发现还可以通过web.xml来配置Servlet的异常处理。觉得这个方法还是最好的。</p>
<p>　　主要是通过配置WEB-INF下web.xml的error-page来达到我们的异常处理。error-page下有三个标签error-code，exception-type，location。其中location是必需的，用于指定异常处理画面；error-code，exception-type在一个error-page有且只能有一个，用于指定异常或者错误码。</p>
<p>　　如果处理画面是Servlet，我们可以通过service来处理异常。其中request参数属性里，能取到javax.servlet.error.status_code, javax.servlet.error.exception_type, javax.servlet.error.message, javax.servlet.error.exception, javax.servlet.error.request_uri, javax.servlet.error.servlet_name这六个值，具体的说明和类型，请参考测试代码。</p>
<p>比如，测试用的web.xml配置如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #ff0000">&lt;?</span><span style="color: #0000ff">xml</span><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"1.0"</span></b><span>&nbsp;</span><span style="color: #ff0000">encoding</span><span>=</span><b><span style="color: #8000ff">"UTF-8"</span></b><span style="color: #ff0000">?&gt;</span><br />&nbsp;<br /><span style="color: #0000ff">&lt;web-app</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"3.0"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xmlns</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/javaee"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xmlns:xsi</span><span>=</span><b><span style="color: #8000ff">"http://www.w3.org/2001/XMLSchema-instance"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xsi:schemaLocation</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"</span></b><span style="color: #0000ff">&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;error-page&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;error-code&gt;</span><b><span>404</span></b><span style="color: #0000ff">&lt;/error-code&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;location&gt;</span><b><span>/ErrorPage</span></b><span style="color: #0000ff">&lt;/location&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;/error-page&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;error-page&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;error-code&gt;</span><b><span>500</span></b><span style="color: #0000ff">&lt;/error-code&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;location&gt;</span><b><span>/ErrorPage</span></b><span style="color: #0000ff">&lt;/location&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;/error-page&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;error-page&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;exception-type&gt;</span><b><span>java.io.IOException</span></b><span style="color: #0000ff">&lt;/exception-type&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;location&gt;</span><b><span>/ErrorPage</span></b><span style="color: #0000ff">&lt;/location&gt;</span><br /><b><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></b><span style="color: #0000ff">&lt;/error-page&gt;</span><br />&nbsp;<br /><span style="color: #0000ff">&lt;/web-app&gt;</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>测试用的Servlet如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><b><span style="color: #0000ff">import</span></b><span> java</span><b><span style="color: #000080">.</span></b><span>io</span><b><span style="color: #000080">.</span></b><span>IOException</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> java</span><b><span style="color: #000080">.</span></b><span>io</span><b><span style="color: #000080">.</span></b><span>PrintWriter</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>ServletException</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>annotation</span><b><span style="color: #000080">.</span></b><span>WebServlet</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>http</span><b><span style="color: #000080">.</span></b><span>HttpServlet</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>http</span><b><span style="color: #000080">.</span></b><span>HttpServletRequest</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> javax</span><b><span style="color: #000080">.</span></b><span>servlet</span><b><span style="color: #000080">.</span></b><span>http</span><b><span style="color: #000080">.</span></b><span>HttpServletResponse</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br /><span style="color: #008080">/**</span><br /><span style="color: #008080">* Servlet implementation class ErrorPage</span><br /><span style="color: #008080">*/</span><br /><span>@WebServlet</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"/ErrorPage"</span><b><span style="color: #000080">)</span></b><br /><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">class</span><span> ErrorPage </span><b><span style="color: #0000ff">extends</span></b><span> HttpServlet </span><b><span style="color: #000080">{</span></b><br />&nbsp;&nbsp;&nbsp; <span style="color: #8000ff">private</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span>&nbsp;</span><span style="color: #8000ff">final</span><span>&nbsp;</span><span style="color: #8000ff">long</span><span> serialVersionUID </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><span style="color: #ff8000">1L</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br />&nbsp;&nbsp;&nbsp; <span style="color: #8000ff">protected</span><span>&nbsp;</span><span style="color: #8000ff">void</span><span> service</span><b><span style="color: #000080">(</span></b><span>HttpServletRequest request</span><b><span style="color: #000080">,</span></b><span> HttpServletResponse response</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #0000ff">throws</span></b><span> ServletException</span><b><span style="color: #000080">,</span></b><span> IOException </span><b><span style="color: #000080">{</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>PrintWriter out </span><b><span style="color: #000080">=</span></b><span> response</span><b><span style="color: #000080">.</span></b><span>getWriter</span><b><span style="color: #000080">();</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// HTTP</span><span style="color: #008000">协议的状态码</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>Integer statusCode </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>Integer</span><b><span style="color: #000080">)</span></b><span>request</span><b><span style="color: #000080">.</span></b><span>getAttribute</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"javax.servlet.error.status_code"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"status_code: %s"</span><b><span style="color: #000080">,</span></b><span> statusCode</span><b><span style="color: #000080">));</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// </span><span style="color: #008000">未捕获的异常类名</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>Class</span><b><span style="color: #000080">&lt;?&gt;</span></b><span> exceptionType </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>Class</span><b><span style="color: #000080">&lt;?&gt;)</span></b><span>request</span><b><span style="color: #000080">.</span></b><span>getAttribute</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"javax.servlet.error.exception_type"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"exception_type: %s"</span><b><span style="color: #000080">,</span></b><span> exceptionType</span><b><span style="color: #000080">));</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// </span><span style="color: #008000">错误发生画面</span><span style="color: #008000">response.sendError</span><span style="color: #008000">设置的消息</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// </span><span style="color: #008000">或者未捕获的异常的消息</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>String message </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">)</span></b><span>request</span><b><span style="color: #000080">.</span></b><span>getAttribute</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"javax.servlet.error.message"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"message: %s"</span><b><span style="color: #000080">,</span></b><span> message</span><b><span style="color: #000080">));</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// </span><span style="color: #008000">未捕获的异常</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>Throwable throwable </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>Throwable</span><b><span style="color: #000080">)</span></b><span>request</span><b><span style="color: #000080">.</span></b><span>getAttribute</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"javax.servlet.error.exception"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"Throwable: %s"</span><b><span style="color: #000080">,</span></b><span> throwable</span><b><span style="color: #000080">));</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// </span><span style="color: #008000">当前请求</span><span style="color: #008000">URI</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>String requestUri </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">)</span></b><span>request</span><b><span style="color: #000080">.</span></b><span>getAttribute</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"javax.servlet.error.request_uri"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"request_uri: %s"</span><b><span style="color: #000080">,</span></b><span> requestUri</span><b><span style="color: #000080">));</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #008000">// </span><span style="color: #008000">错误画面的</span><span style="color: #008000">Servlet</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>String servletName </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">)</span></b><span>request</span><b><span style="color: #000080">.</span></b><span>getAttribute</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"javax.servlet.error.servlet_name"</span><b><span style="color: #000080">);</span></b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"servlet_name: %s"</span><b><span style="color: #000080">,</span></b><span> servletName</span><b><span style="color: #000080">));</span></b><br />&nbsp;&nbsp;&nbsp; <b><span style="color: #000080">}</span></b><br /><b><span style="color: #000080">}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>测试1：当提求画面不存在时，结果如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span>status_code: 404</span><br /><span>exception_type: null</span><br /><span>message: /JavaWeb/HelloWorld1</span><br /><span>Throwable: null</span><br /><span>request_uri: /JavaWeb/HelloWorld1</span><br /><span>servlet_name: default</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>测试2：当提求画面发生IOException(web.xml配置)时，结果如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span>status_code: 500</span><br /><span>exception_type: class java.io.IOException</span><br /><span>message: Test Error Msg</span><br /><span>Throwable: java.io.IOException: Test Error Msg</span><br /><span>request_uri: /JavaWeb/HelloWorld</span><br /><span>servlet_name: net.yutuo.javaweb.servlet.HelloWorld</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>测试3：当提求画面发生其它异常时，结果如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span>status_code: 500</span><br /><span>exception_type: null</span><br /><span>message: </span><br /><span>Throwable: javax.servlet.ServletException: Test Error Msg</span><br /><span>request_uri: /JavaWeb/HelloWorldInput</span><br /><span>servlet_name: net.yutuo.javaweb.servlet.HelloWorldInput</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>根据以上的信息，写一个自己的异常画面应该是学过一点Java的就没问题了，呵呵。</p>
<p>参考资料：孙鑫《Java Web开发详解——XML XSLT Servlet JSP深入剖析实例应用》第10章 Servlet的异常处理机制</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/571ef5e8ea91be55.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用ResourceBundle来读取配置文件</title>
		<link>http://yutuo.net/archives/8f159033620d469f.html</link>
		<comments>http://yutuo.net/archives/8f159033620d469f.html#comments</comments>
		<pubDate>Sun, 15 Jan 2012 05:27:51 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Properties]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=153</guid>
		<description><![CDATA[　　之前不知道Java还有ResourceBundle这个类，最近一个项目，别人用了ResourceBundle来读取配置文件，还真的很方便。它可以读取相对Class目录的任何配置文件。测试代码如下： 我在包net.yutuo.java下建了一个test.properties的配置文件，内容如下： 1 test=testValue 测试用的Java文件如下： 1234567891011121314151617181920212223242526272829303132 import java.util.MissingResourceException;import java.util.ResourceBundle;&#160;public&#160;class PropertyTest {&#160;&#160;&#160;&#160; private&#160;static ResourceBundle resbun;&#160;&#160;&#160;&#160;&#160; static&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 绑定配置文件&#160;&#160;&#160;&#160;&#160;&#160;&#160; resbun = ResourceBundle.getBundle("net.yutuo.java.test");&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160; /**&#160;&#160;&#160;&#160;&#160; * 读取配置值，如果取值失败，则返回defaultValue&#160;&#160;&#160;&#160;&#160; * @param key 索引&#160;&#160;&#160;&#160;&#160; * @param defaultValue 默认值&#160;&#160;&#160;&#160;&#160; * @return&#160;配置值&#160;&#160;&#160;&#160;&#160; */&#160;&#160;&#160;&#160; public&#160;static String getString(String key, String defaultValue)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return resbun.getString(key);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;catch&#160;(MissingResourceException ex)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return defaultValue;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160; public&#160;static&#160;void main(String[] arg)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 读取一个配置文件存在的值&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>　　之前不知道Java还有ResourceBundle这个类，最近一个项目，别人用了ResourceBundle来读取配置文件，还真的很方便。它可以读取相对Class目录的任何配置文件。测试代码如下：</p>
<p>我在包net.yutuo.java下建了一个test.properties的配置文件，内容如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span>test=</span><span style="color: #2a00ff">testValue</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>测试用的Java文件如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><b><span style="color: #0000ff">import</span></b><span> java</span><b><span style="color: #000080">.</span></b><span>util</span><b><span style="color: #000080">.</span></b><span>MissingResourceException</span><b><span style="color: #000080">;</span></b><br /><b><span style="color: #0000ff">import</span></b><span> java</span><b><span style="color: #000080">.</span></b><span>util</span><b><span style="color: #000080">.</span></b><span>ResourceBundle</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br /><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">class</span><span> PropertyTest </span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">private</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span> ResourceBundle resbun</span><b><span style="color: #000080">;</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">static</span><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">绑定配置文件</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resbun </span><b><span style="color: #000080">=</span></b><span> ResourceBundle</span><b><span style="color: #000080">.</span></b><span>getBundle</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"net.yutuo.java.test"</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008080">/**</span><br /><span style="color: #008080">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * </span><span style="color: #008080">读取配置值，如果取值失败，则返回</span><span style="color: #008080">defaultValue</span><br /><span style="color: #008080">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * </span><b><span style="color: #008080">@param</span></b><span style="color: #008080"> key </span><span style="color: #008080">索引</span><br /><span style="color: #008080">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * </span><b><span style="color: #008080">@param</span></b><span style="color: #008080"> defaultValue </span><span style="color: #008080">默认值</span><br /><span style="color: #008080">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * </span><b><span style="color: #008080">@return</span></b><span style="color: #008080">&nbsp;</span><span style="color: #008080">配置值</span><br /><span style="color: #008080">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span> String getString</span><b><span style="color: #000080">(</span></b><span>String key</span><b><span style="color: #000080">,</span></b><span> String defaultValue</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">try</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> resbun</span><b><span style="color: #000080">.</span></b><span>getString</span><b><span style="color: #000080">(</span></b><span>key</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><span>&nbsp;</span><b><span style="color: #0000ff">catch</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>MissingResourceException ex</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> defaultValue</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span>&nbsp;</span><span style="color: #8000ff">void</span><span> main</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">[]</span></b><span> arg</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">读取一个配置文件存在的值</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>getString</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"test"</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #808080">"error"</span><b><span style="color: #000080">));</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">读取一个配置文件不存在的值</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>getString</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"test1"</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #808080">"error"</span><b><span style="color: #000080">));</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><b><span style="color: #000080">}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>结果如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span>testValue</span><br /><span>error</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/8f159033620d469f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#文件编码转换</title>
		<link>http://yutuo.net/archives/2a04ae1a7ac673ef.html</link>
		<comments>http://yutuo.net/archives/2a04ae1a7ac673ef.html#comments</comments>
		<pubDate>Sat, 14 Jan 2012 17:29:40 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Csharp]]></category>
		<category><![CDATA[Encode]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=152</guid>
		<description><![CDATA[　　不记得是什么时候的事，看小说的时候电子书不支持GB2313，没办法，只能转成UTF8格式。于是就写了个小工具，把整个目录转为UTF8。现在工具已经找不到了，只是还有一段转码的小代码。贴上来，以后可能会用到。 1234567891011121314151617181920212223 private&#160;void EncodeFile(string inFile,&#160;string inCode,&#160;string outFile,&#160;string outCode){&#160;&#160;&#160;&#160; Encoding inEncode = Encoding.GetEncoding(inCode);&#160;&#160;&#160;&#160; Encoding outEncode = Encoding.GetEncoding(outCode);&#160;&#160;&#160;&#160;&#160; StreamReader fReader =&#160;null;&#160;&#160;&#160;&#160; StreamWriter fWriter =&#160;null;&#160;&#160;&#160;&#160; string line;&#160;&#160;&#160;&#160; try&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fReader =&#160;new StreamReader(inFile, inEncode);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fWriter =&#160;new StreamWriter(outFile,&#160;false, outEncode);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while&#160;((line = fReader.ReadLine())&#160;!=&#160;null)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; fWriter.WriteLine(line);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; finally&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if&#160;(fReader !=&#160;null) fReader.Close();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if&#160;(fWriter !=&#160;null) fWriter.Close();&#160;&#160;&#160;&#160; }}]]></description>
			<content:encoded><![CDATA[<p>　　不记得是什么时候的事，看小说的时候电子书不支持GB2313，没办法，只能转成UTF8格式。于是就写了个小工具，把整个目录转为UTF8。现在工具已经找不到了，只是还有一段转码的小代码。贴上来，以后可能会用到。</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><b><span style="color: #0000ff">private</span></b><span>&nbsp;</span><span style="color: #8000ff">void</span><span> EncodeFile</span><b><span style="color: #000080">(</span></b><span style="color: #8000ff">string</span><span> inFile</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">string</span><span> inCode</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">string</span><span> outFile</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">string</span><span> outCode</span><b><span style="color: #000080">)</span></b><br /><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; Encoding inEncode </span><b><span style="color: #000080">=</span></b><span> Encoding</span><b><span style="color: #000080">.</span></b><span>GetEncoding</span><b><span style="color: #000080">(</span></b><span>inCode</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; Encoding outEncode </span><b><span style="color: #000080">=</span></b><span> Encoding</span><b><span style="color: #000080">.</span></b><span>GetEncoding</span><b><span style="color: #000080">(</span></b><span>outCode</span><b><span style="color: #000080">);</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp; StreamReader fReader </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">null</span></b><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; StreamWriter fWriter </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">null</span></b><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">string</span><span> line</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">try</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fReader </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> StreamReader</span><b><span style="color: #000080">(</span></b><span>inFile</span><b><span style="color: #000080">,</span></b><span> inEncode</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fWriter </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> StreamWriter</span><b><span style="color: #000080">(</span></b><span>outFile</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><b><span style="color: #0000ff">false</span></b><b><span style="color: #000080">,</span></b><span> outEncode</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">while</span></b><span>&nbsp;</span><b><span style="color: #000080">((</span></b><span>line </span><b><span style="color: #000080">=</span></b><span> fReader</span><b><span style="color: #000080">.</span></b><span>ReadLine</span><b><span style="color: #000080">())</span></b><span>&nbsp;</span><b><span style="color: #000080">!=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">null</span></b><b><span style="color: #000080">)</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fWriter</span><b><span style="color: #000080">.</span></b><span>WriteLine</span><b><span style="color: #000080">(</span></b><span>line</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">finally</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">if</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>fReader </span><b><span style="color: #000080">!=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">null</span></b><b><span style="color: #000080">)</span></b><span> fReader</span><b><span style="color: #000080">.</span></b><span>Close</span><b><span style="color: #000080">();</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">if</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>fWriter </span><b><span style="color: #000080">!=</span></b><span>&nbsp;</span><b><span style="color: #0000ff">null</span></b><b><span style="color: #000080">)</span></b><span> fWriter</span><b><span style="color: #000080">.</span></b><span>Close</span><b><span style="color: #000080">();</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><b><span style="color: #000080">}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/2a04ae1a7ac673ef.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>批处理文件取得YYYYMMDD格式日期</title>
		<link>http://yutuo.net/archives/b74dea2f7e69164b.html</link>
		<comments>http://yutuo.net/archives/b74dea2f7e69164b.html#comments</comments>
		<pubDate>Sat, 14 Jan 2012 03:05:15 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Batch]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=145</guid>
		<description><![CDATA[　　有时候做数据备份时总会用到日期，比如把每天的代码打包成ZIP文件，就要用到日期。但用%date%取到的日期是带/的。 　　在网上查了一下资料，发现用:*=*的语法可以替换字符串。那么取得YYYYMMDD日期格式就可以写成%date:/=%。如下代码： 12 rem 新建一个日期的目录mkdir %DATE:/=%]]></description>
			<content:encoded><![CDATA[<p>　　有时候做数据备份时总会用到日期，比如把每天的代码打包成ZIP文件，就要用到日期。但用<font color="#ff0000">%date%</font>取到的日期是带/的。</p>
<p>　　在网上查了一下资料，发现用:*=*的语法可以替换字符串。那么取得YYYYMMDD日期格式就可以写成%date:/=%。如下代码：<br /> 
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #008000">rem 新建一个日期的目录</span><br /><b><span style="color: #0000ff">mkdir</span></b><span> %DATE:/=%</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/b74dea2f7e69164b.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>web.xml各个版本模板</title>
		<link>http://yutuo.net/archives/7048a006eeb2ac85.html</link>
		<comments>http://yutuo.net/archives/7048a006eeb2ac85.html#comments</comments>
		<pubDate>Thu, 12 Jan 2012 15:10:10 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=143</guid>
		<description><![CDATA[J2EE 2.3 123456 &#60;?xml&#160;version="1.0"&#160;encoding="ISO-8859-1"?&#62;&#160; &#60;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&#62;&#160; &#160;&#160; &#60;web-app&#62;&#160; &#160;&#160; &#60;/web-app&#62; &#160; J2EE 2.4 123456 &#60;?xml&#160;version="1.0"&#160;encoding="UTF-8"?&#62;&#60;web-app&#160;id="WebApp_9"&#160;version="2.4"&#160;xmlns="http://java.sun.com/xml/ns/j2ee"&#160;&#160;&#160;&#160; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#160;&#160;&#160;&#160; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&#62;&#160;&#60;/web-app&#62; J2EE 2.5 1234567 &#60;?xml&#160;version="1.0"&#160;encoding="UTF-8"?&#62;&#160;&#160; &#60;web-app&#160;xmlns="http://java.sun.com/xml/ns/javaee"&#160;&#160;&#160;&#160; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#160;&#160; &#160;&#160;&#160;&#160; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&#160;&#160;&#160;&#160; version="2.5"&#62;&#160; &#160;&#160; &#60;/web-app&#62;&#160; J2EE3.0 1234567 &#60;?xml&#160;version="1.0"&#160;encoding="UTF-8"?&#62;&#60;web-app&#160;version="3.0"&#160;&#160;&#160;&#160; xmlns="http://java.sun.com/xml/ns/javaee"&#160;&#160;&#160;&#160; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#160;&#160;&#160;&#160; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"&#62;&#160;&#160; &#60;/web-app&#62; 参考地址：http://jlcon.iteye.com/blog/890964]]></description>
			<content:encoded><![CDATA[<p>J2EE 2.3</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-right-width: 0px; border-collapse: collapse; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #ff0000">&lt;?</span><span style="color: #0000ff">xml</span><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"1.0"</span></b><span>&nbsp;</span><span style="color: #ff0000">encoding</span><span>=</span><b><span style="color: #8000ff">"ISO-8859-1"</span></b><span style="color: #ff0000">?&gt;</span><b><span>&nbsp; </span></b><br /><span>&lt;!</span><span>DOCTYPE web-app PUBLIC "</span><span>-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN</span><span>" "</span><span>http://java.sun.com/dtd/web-app_2_3.dtd</span><span>"</span><span>&gt;</span><b><span>&nbsp; </span></b><br /><b><span>&nbsp;&nbsp; </span></b><br /><span style="color: #0000ff">&lt;web-app&gt;</span><b><span>&nbsp; </span></b><br /><b><span>&nbsp;&nbsp; </span></b><br /><span style="color: #0000ff">&lt;/web-app&gt;</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>J2EE 2.4</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #ff0000">&lt;?</span><span style="color: #0000ff">xml</span><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"1.0"</span></b><span>&nbsp;</span><span style="color: #ff0000">encoding</span><span>=</span><b><span style="color: #8000ff">"UTF-8"</span></b><span style="color: #ff0000">?&gt;</span><br /><span style="color: #0000ff">&lt;web-app</span><span>&nbsp;</span><span style="color: #ff0000">id</span><span>=</span><b><span style="color: #8000ff">"WebApp_9"</span></b><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"2.4"</span></b><span>&nbsp;</span><span style="color: #ff0000">xmlns</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/j2ee"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xmlns:xsi</span><span>=</span><b><span style="color: #8000ff">"http://www.w3.org/2001/XMLSchema-instance"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xsi:schemaLocation</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span></b><span style="color: #0000ff">&gt;</span><br /><b><span>&nbsp;</span></b><br /><span style="color: #0000ff">&lt;/web-app&gt;</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>J2EE 2.5</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #ff0000">&lt;?</span><span style="color: #0000ff">xml</span><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"1.0"</span></b><span>&nbsp;</span><span style="color: #ff0000">encoding</span><span>=</span><b><span style="color: #8000ff">"UTF-8"</span></b><span style="color: #ff0000">?&gt;</span><b><span>&nbsp;&nbsp; </span></b><br /><span style="color: #0000ff">&lt;web-app</span><span>&nbsp;</span><span style="color: #ff0000">xmlns</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/javaee"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xmlns:xsi</span><span>=</span><b><span style="color: #8000ff">"http://www.w3.org/2001/XMLSchema-instance"</span></b><span>&nbsp;&nbsp; </span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xsi:schemaLocation</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"2.5"</span></b><span style="color: #0000ff">&gt;</span><b><span>&nbsp; </span></b><br /><b><span>&nbsp;&nbsp; </span></b><br /><span style="color: #0000ff">&lt;/web-app&gt;</span><b><span>&nbsp; </span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>J2EE3.0</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #ff0000">&lt;?</span><span style="color: #0000ff">xml</span><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"1.0"</span></b><span>&nbsp;</span><span style="color: #ff0000">encoding</span><span>=</span><b><span style="color: #8000ff">"UTF-8"</span></b><span style="color: #ff0000">?&gt;</span><br /><span style="color: #0000ff">&lt;web-app</span><span>&nbsp;</span><span style="color: #ff0000">version</span><span>=</span><b><span style="color: #8000ff">"3.0"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xmlns</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/javaee"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xmlns:xsi</span><span>=</span><b><span style="color: #8000ff">"http://www.w3.org/2001/XMLSchema-instance"</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #ff0000">xsi:schemaLocation</span><span>=</span><b><span style="color: #8000ff">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"</span></b><span style="color: #0000ff">&gt;</span><br /><b><span>&nbsp;&nbsp; </span></b><br /><span style="color: #0000ff">&lt;/web-app&gt;</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>参考地址：<a href="http://jlcon.iteye.com/blog/890964">http://jlcon.iteye.com/blog/890964</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/7048a006eeb2ac85.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过反射动态调用类的属性和方法</title>
		<link>http://yutuo.net/archives/625d654bcffd078d.html</link>
		<comments>http://yutuo.net/archives/625d654bcffd078d.html#comments</comments>
		<pubDate>Wed, 11 Jan 2012 14:02:58 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[reflect]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=142</guid>
		<description><![CDATA[　　在实际应用中，反射还是很有用的。不过反射不能访问任何公共以外的东西。也就是说反射只能访问public定义的方法和属性。 　　如下两个类，测试类TestMethod： 12345678910111213141516171819202122232425262728293031323334 public&#160;class TestMethod {&#160;&#160;&#160;&#160; private&#160;int a;&#160;&#160;&#160;&#160; private&#160;int b;&#160;&#160;&#160;&#160; // 公共属性&#160;&#160;&#160; public String c =&#160;"public c";&#160;&#160;&#160;&#160; // 不带参数的构造方法&#160;&#160;&#160; public TestMethod()&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this(0,&#160;0);&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // 带参数的构造方法&#160;&#160;&#160; public TestMethod(int a,&#160;int b)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.a = a;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.b = b;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // 静态函数&#160;&#160;&#160; public&#160;static&#160;int add(int a,&#160;int b)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return a + b;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160; // 不带参数的实例函数&#160;&#160;&#160; public&#160;int time()&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return a * b;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>　　在实际应用中，反射还是很有用的。不过反射不能访问任何公共以外的东西。也就是说<font color="#ff0000">反射只能访问public定义的方法和属性</font>。</p>
<p>　　如下两个类，测试类TestMethod：<br /> 
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">class</span><span> TestMethod </span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">private</span><span>&nbsp;</span><span style="color: #8000ff">int</span><span> a</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">private</span><span>&nbsp;</span><span style="color: #8000ff">int</span><span> b</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 公共属性</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span> String c </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><span style="color: #808080">"public c"</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 不带参数的构造方法</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span> TestMethod</span><b><span style="color: #000080">()</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">this</span></b><b><span style="color: #000080">(</span></b><span style="color: #ff8000">0</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #ff8000">0</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 带参数的构造方法</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span> TestMethod</span><b><span style="color: #000080">(</span></b><span style="color: #8000ff">int</span><span> a</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">int</span><span> b</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">this</span></b><b><span style="color: #000080">.</span></b><span>a </span><b><span style="color: #000080">=</span></b><span> a</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">this</span></b><b><span style="color: #000080">.</span></b><span>b </span><b><span style="color: #000080">=</span></b><span> b</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 静态函数</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span>&nbsp;</span><span style="color: #8000ff">int</span><span> add</span><b><span style="color: #000080">(</span></b><span style="color: #8000ff">int</span><span> a</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">int</span><span> b</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> a </span><b><span style="color: #000080">+</span></b><span> b</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 不带参数的实例函数</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">int</span><span> time</span><b><span style="color: #000080">()</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> a </span><b><span style="color: #000080">*</span></b><span> b</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 带参数的实例函数</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">int</span><span> plus</span><b><span style="color: #000080">(</span></b><span style="color: #8000ff">int</span><span> c</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> a </span><b><span style="color: #000080">+</span></b><span> b </span><b><span style="color: #000080">+</span></b><span> c</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 带参数的实例函数</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">protected</span><span>&nbsp;</span><span style="color: #8000ff">int</span><span> plus</span><b><span style="color: #000080">()</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> a </span><b><span style="color: #000080">+</span></b><span> b</span><b><span style="color: #000080">;</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span> String toString</span><b><span style="color: #000080">()</span></b><span>&nbsp;</span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span> String</span><b><span style="color: #000080">.</span></b><span>format</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"TestMethod[a=%d, b=%d]"</span><b><span style="color: #000080">,</span></b><span> a</span><b><span style="color: #000080">,</span></b><span> b</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><b><span style="color: #000080">}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p></p>
<p>　　如下两个类，Main测试类：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">class</span><span> CallTestMethod </span><b><span style="color: #000080">{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">public</span><span>&nbsp;</span><span style="color: #8000ff">static</span><span>&nbsp;</span><span style="color: #8000ff">void</span><span> main</span><b><span style="color: #000080">(</span></b><span>String</span><b><span style="color: #000080">[]</span></b><span> avg</span><b><span style="color: #000080">)</span></b><span>&nbsp;</span><b><span style="color: #0000ff">throws</span></b><span> Exception </span><b><span style="color: #000080">{</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class</span><b><span style="color: #000080">&lt;?&gt;</span></b><span> testMethodClass </span><b><span style="color: #000080">=</span></b><span> Class</span><b><span style="color: #000080">.</span></b><span>forName</span><b><span style="color: #000080">(</span></b><span>TestMethod</span><b><span style="color: #000080">.</span></b><span style="color: #8000ff">class</span><b><span style="color: #000080">.</span></b><span>getName</span><b><span style="color: #000080">());</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 用不带参数的构造方法创建实例</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestMethod objA </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>TestMethod</span><b><span style="color: #000080">)</span></b><span> testMethodClass</span><b><span style="color: #000080">.</span></b><span>newInstance</span><b><span style="color: #000080">();</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>objA</span><b><span style="color: #000080">);</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 用带参数的构造方法创建实例</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Constructor</span><b><span style="color: #000080">&lt;?&gt;</span></b><span> constr </span><b><span style="color: #000080">=</span></b><span> testMethodClass</span><b><span style="color: #000080">.</span></b><span>getConstructor</span><b><span style="color: #000080">(</span></b><b><span style="color: #0000ff">new</span></b><span> Class</span><b><span style="color: #000080">[]{</span></b><span style="color: #8000ff">int</span><b><span style="color: #000080">.</span></b><span style="color: #8000ff">class</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">int</span><b><span style="color: #000080">.</span></b><span style="color: #8000ff">class</span><b><span style="color: #000080">});</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestMethod objB </span><b><span style="color: #000080">=</span></b><span>&nbsp;</span><b><span style="color: #000080">(</span></b><span>TestMethod</span><b><span style="color: #000080">)</span></b><span> constr</span><b><span style="color: #000080">.</span></b><span>newInstance</span><b><span style="color: #000080">(</span></b><b><span style="color: #0000ff">new</span></b><span> Object</span><b><span style="color: #000080">[]{</span></b><span style="color: #ff8000">1</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #ff8000">2</span><b><span style="color: #000080">});</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>objB</span><b><span style="color: #000080">);</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 访问属性</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Field field </span><b><span style="color: #000080">=</span></b><span> testMethodClass</span><b><span style="color: #000080">.</span></b><span>getDeclaredField</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"c"</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>field</span><b><span style="color: #000080">.</span></b><span>get</span><b><span style="color: #000080">(</span></b><span>objB</span><b><span style="color: #000080">));</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 调用静态函数</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method method1 </span><b><span style="color: #000080">=</span></b><span> testMethodClass</span><b><span style="color: #000080">.</span></b><span>getMethod</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"add"</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> Class</span><b><span style="color: #000080">[]{</span></b><span style="color: #8000ff">int</span><b><span style="color: #000080">.</span></b><span style="color: #8000ff">class</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #8000ff">int</span><b><span style="color: #000080">.</span></b><span style="color: #8000ff">class</span><b><span style="color: #000080">});</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// invoke函数的第一个参数为实例，所以在静态函数调用时，第一个参数为空</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>method1</span><b><span style="color: #000080">.</span></b><span>invoke</span><b><span style="color: #000080">(</span></b><b><span style="color: #0000ff">null</span></b><b><span style="color: #000080">,</span></b><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> Object</span><b><span style="color: #000080">[]{</span></b><span style="color: #ff8000">3</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><span style="color: #ff8000">4</span><b><span style="color: #000080">}));</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 调用不带参数的实例函数</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method method2 </span><b><span style="color: #000080">=</span></b><span> testMethodClass</span><b><span style="color: #000080">.</span></b><span>getMethod</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"time"</span><b><span style="color: #000080">);</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>method2</span><b><span style="color: #000080">.</span></b><span>invoke</span><b><span style="color: #000080">(</span></b><span>objB</span><b><span style="color: #000080">));</span></b><br />&nbsp;<br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// 调用带参数的实例函数</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method method3 </span><b><span style="color: #000080">=</span></b><span> testMethodClass</span><b><span style="color: #000080">.</span></b><span>getMethod</span><b><span style="color: #000080">(</span></b><span style="color: #808080">"plus"</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> Class</span><b><span style="color: #000080">[]{</span></b><span style="color: #8000ff">int</span><b><span style="color: #000080">.</span></b><span style="color: #8000ff">class</span><b><span style="color: #000080">});</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System</span><b><span style="color: #000080">.</span></b><span>out</span><b><span style="color: #000080">.</span></b><span>println</span><b><span style="color: #000080">(</span></b><span>method3</span><b><span style="color: #000080">.</span></b><span>invoke</span><b><span style="color: #000080">(</span></b><span>objB</span><b><span style="color: #000080">,</span></b><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> Object</span><b><span style="color: #000080">[]{</span></b><span style="color: #ff8000">3</span><b><span style="color: #000080">}));</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">}</span></b><br /><b><span style="color: #000080">}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>执行后，结果如下：<br /> 
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span>TestMethod[a=0, b=0]</span><br /><span>TestMethod[a=1, b=2]</span><br /><span>7</span><br /><span>2</span><br /><span>6</span><br /><span>public c</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/625d654bcffd078d.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cookie的设置读取权限</title>
		<link>http://yutuo.net/archives/48a05a3526827fa9.html</link>
		<comments>http://yutuo.net/archives/48a05a3526827fa9.html#comments</comments>
		<pubDate>Sat, 24 Dec 2011 06:32:35 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Cookie]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=123</guid>
		<description><![CDATA[　　有时所有子域名都使用一个Cookie，或者同一域名下所有目录都使用同一个Cookie，这时就需要设置Cookie的Path和Domain。 Cookie的设置规则一般如下： Domain设置：Domain必须是设置程序URL的域名值的自身或者母域名，必须是一个域名或者IP地址。比如：设置Cookie的程序在blog.domain.net/program/page1.html画面里，那么Domain可以设置为blog.domain.net或者domain.net；再比如localhost就不是一个域名，把Domain设置为localhost，是设置不上的。 Path设置：Path必须是设置程序URL的域名值的前部，或者子目录。比如：设置Cookie的程序在blog.domain.net/program/page1.html画面里，那么Path可以设置为/或者/program或者/program/xxx。 在没有设置时，Domain默认设置为URL的域名，Path默认设置为设置网页所在目录。 &#160; Cookie的读取规则一般如下： 访问地址域名是Cookie的Domain的自身或者子域名。比如：设置的Domain为blog.domain.net，那么blog1.domain.net就不可以访问，但blog.domain.net和xxx.blog.domain.net可以访问。 访问地址目录是Cookie的Path的前部。比如设置的Path为/program，那么/test不能访问，但/program或者/program01或者/program/xxx都可以访问。]]></description>
			<content:encoded><![CDATA[<p>　　有时所有子域名都使用一个Cookie，或者同一域名下所有目录都使用同一个Cookie，这时就需要设置Cookie的Path和Domain。</p>
<p>Cookie的设置规则一般如下：</p>
<ol>
<li>Domain设置：Domain必须是设置程序URL的域名值的自身或者母域名，必须是一个域名或者IP地址。<br />比如：设置Cookie的程序在<font color="#ff0000">blog.domain.net/program/page1.html</font>画面里，那么Domain可以设置为<font color="#ff0000">blog.domain.net</font>或者<font color="#ff0000">domain.net</font>；再比如<font color="#ff0000">localhost</font>就不是一个域名，把Domain设置为<font color="#ff0000">localhost</font>，是设置不上的。</li>
<li>Path设置：Path必须是设置程序URL的域名值的前部，或者子目录。<br />比如：设置Cookie的程序在<font color="#ff0000">blog.domain.net/program/page1.html</font>画面里，那么Path可以设置为/或者<font color="#ff0000">/program</font>或者<font color="#ff0000">/program/xxx</font>。</li>
<li>在没有设置时，Domain默认设置为URL的域名，Path默认设置为设置网页所在目录。</li>
</ol>
<p>&nbsp;</p>
<p>Cookie的读取规则一般如下：</p>
<ol>
<li>访问地址域名是Cookie的Domain的自身或者子域名。比如：设置的Domain为<font color="#ff0000">blog.domain.net</font>，那么<font color="#ff0000">blog1.domain.net</font>就不可以访问，但<font color="#ff0000">blog.domain.net</font><font color="#000000">和</font><font color="#ff0000">xxx.blog.domain.net</font>可以访问。</li>
<li>访问地址目录是Cookie的Path的前部。比如设置的Path为<font color="#ff0000">/program</font>，那么<font color="#ff0000">/test</font>不能访问，但<font color="#ff0000">/program</font>或者<font color="#ff0000">/program01</font>或者<font color="#ff0000">/program/xxx</font>都可以访问。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/48a05a3526827fa9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript对Cookie的操作</title>
		<link>http://yutuo.net/archives/c73c795aec8f5c63.html</link>
		<comments>http://yutuo.net/archives/c73c795aec8f5c63.html#comments</comments>
		<pubDate>Sat, 24 Dec 2011 05:19:58 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Cookie]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=122</guid>
		<description><![CDATA[　　最近做一个项目中，需要用JavaScript对Cookie进行操作，网上的资料很多，找了一下，代码如下： 1234567891011121314151617181920212223242526272829303132333435363738 /*** 设定Cookie值*/function setCookie(name, value)&#160;{&#160;&#160;&#160; var expdate =&#160;new&#160; Date();&#160;&#160;&#160; var argv = setCookie.arguments;&#160;&#160;&#160; var argc = setCookie.arguments.length;&#160;&#160;&#160; var expires =&#160;(argc &#62;&#160;2)&#160;? argv[2]&#160;: null;&#160;&#160;&#160; var path =&#160;(argc &#62;&#160;3)&#160;? argv[3]&#160;: null;&#160;&#160;&#160; var domain =&#160;(argc &#62;&#160;4)&#160;? argv[4]&#160;: null;&#160;&#160;&#160; if( expires != null)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160; expdate.setTime(expdate.getTime()&#160;+&#160;(expires *&#160; 1000));&#160;&#160;&#160; }&#160;&#160;&#160; documents.cookie = name +&#160;"="&#160;+ escape(value)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; +&#160;((expires == null)&#160;?&#160;""&#160;:&#160;(";expires="&#160;+ expdate.toGMTString()))&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; +&#160;((path == [...]]]></description>
			<content:encoded><![CDATA[<p>　　最近做一个项目中，需要用JavaScript对Cookie进行操作，网上的资料很多，找了一下，代码如下：</p>
<div style="padding-bottom: 17px; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto">
<table style="border-bottom: silver 1px solid; border-left: silver 1px solid; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #008080">/**</span><br /><span style="color: #008080">* 设定Cookie值</span><br /><span style="color: #008080">*/</span><br /><b><span style="color: #000080">function</span></b><span> setCookie</span><b><span>(</span></b><span>name</span><b><span>,</span></b><span> value</span><b><span>)</span></b><span>&nbsp;</span><b><span>{</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> expdate </span><b><span>=</span></b><span>&nbsp;</span><b><span style="color: #000080">new</span></b><span>&nbsp; Date</span><b><span>();</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> argv </span><b><span>=</span></b><span> setCookie</span><b><span>.</span></b><span>arguments</span><b><span>;</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> argc </span><b><span>=</span></b><span> setCookie</span><b><span>.</span></b><span>arguments</span><b><span>.</span></b><span>length</span><b><span>;</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> expires </span><b><span>=</span></b><span>&nbsp;</span><b><span>(</span></b><span>argc </span><b><span>&gt;</span></b><span>&nbsp;</span><span style="color: #ff0000">2</span><b><span>)</span></b><span>&nbsp;</span><b><span>?</span></b><span> argv</span><b><span>[</span></b><span style="color: #ff0000">2</span><b><span>]</span></b><span>&nbsp;</span><b><span>:</span></b><span> null</span><b><span>;</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> path </span><b><span>=</span></b><span>&nbsp;</span><b><span>(</span></b><span>argc </span><b><span>&gt;</span></b><span>&nbsp;</span><span style="color: #ff0000">3</span><b><span>)</span></b><span>&nbsp;</span><b><span>?</span></b><span> argv</span><b><span>[</span></b><span style="color: #ff0000">3</span><b><span>]</span></b><span>&nbsp;</span><b><span>:</span></b><span> null</span><b><span>;</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> domain </span><b><span>=</span></b><span>&nbsp;</span><b><span>(</span></b><span>argc </span><b><span>&gt;</span></b><span>&nbsp;</span><span style="color: #ff0000">4</span><b><span>)</span></b><span>&nbsp;</span><b><span>?</span></b><span> argv</span><b><span>[</span></b><span style="color: #ff0000">4</span><b><span>]</span></b><span>&nbsp;</span><b><span>:</span></b><span> null</span><b><span>;</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">if</span></b><b><span>(</span></b><span> expires </span><b><span>!=</span></b><span> null</span><b><span>)</span></b><span>&nbsp;</span><b><span>{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expdate</span><b><span>.</span></b><span>setTime</span><b><span>(</span></b><span>expdate</span><b><span>.</span></b><span>getTime</span><b><span>()</span></b><span>&nbsp;</span><b><span>+</span></b><span>&nbsp;</span><b><span>(</span></b><span>expires </span><b><span>*</span></b><span>&nbsp; </span><span style="color: #ff0000">1000</span><b><span>));</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span>}</span></b><br /><span>&nbsp;&nbsp;&nbsp; documents</span><b><span>.</span></b><span>cookie </span><b><span>=</span></b><span> name </span><b><span>+</span></b><span>&nbsp;</span><span style="color: #808080">"="</span><span>&nbsp;</span><b><span>+</span></b><span> escape</span><b><span>(</span></b><span>value</span><b><span>)</span></b><span>&nbsp;</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span>+</span></b><span>&nbsp;</span><b><span>((</span></b><span>expires </span><b><span>==</span></b><span> null</span><b><span>)</span></b><span>&nbsp;</span><b><span>?</span></b><span>&nbsp;</span><span style="color: #808080">""</span><span>&nbsp;</span><b><span>:</span></b><span>&nbsp;</span><b><span>(</span></b><span style="color: #808080">";expires="</span><span>&nbsp;</span><b><span>+</span></b><span> expdate</span><b><span>.</span></b><span>toGMTString</span><b><span>()))</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span>+</span></b><span>&nbsp;</span><b><span>((</span></b><span>path </span><b><span>==</span></b><span> null</span><b><span>)</span></b><span>&nbsp;</span><b><span>?</span></b><span>&nbsp;</span><span style="color: #808080">""</span><span>&nbsp; </span><b><span>:</span></b><span>&nbsp;</span><b><span>(</span></b><span style="color: #808080">";path="</span><span>&nbsp;</span><b><span>+</span></b><span> path</span><b><span>))</span></b><span>&nbsp; </span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span>+</span></b><span>&nbsp;</span><b><span>((</span></b><span>domain </span><b><span>==</span></b><span> null</span><b><span>)</span></b><span>&nbsp;</span><b><span>?</span></b><span>&nbsp;</span><span style="color: #808080">""</span><span>&nbsp; </span><b><span>:</span></b><span>&nbsp;</span><b><span>(</span></b><span style="color: #808080">";domain="</span><span>&nbsp;</span><b><span>+</span></b><span> domain</span><b><span>));</span></b><br /><b><span>}</span></b><br /><span style="color: #008080">/**</span><br /><span style="color: #008080">* 取得Cookie值</span><br /><span style="color: #008080">*/</span><br /><b><span style="color: #000080">function</span></b><span> getCookie</span><b><span>(</span></b><span>name</span><b><span>)</span></b><span>&nbsp;</span><b><span>{</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> reg </span><b><span>=</span></b><span>&nbsp;</span><b><span style="color: #000080">new</span></b><span> RegExp</span><b><span>(</span></b><span style="color: #808080">"(^| )"</span><span>&nbsp;</span><b><span>+</span></b><span> name </span><b><span>+</span></b><span>&nbsp;</span><span style="color: #808080">"=([^;]*)(;|$)"</span><b><span>);</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> arr </span><b><span>=</span></b><span> document</span><b><span>.</span></b><span>cookie</span><b><span>.</span></b><span>match</span><b><span>(</span></b><span>reg</span><b><span>);</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">if</span></b><span>&nbsp;</span><b><span>(</span></b><span>arr </span><b><span>!=</span></b><span> null</span><b><span>)</span></b><span>&nbsp;</span><b><span style="color: #000080">return</span></b><span> unescape</span><b><span>(</span></b><span>arr</span><b><span>[</span></b><span style="color: #ff0000">2</span><b><span>]);</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">return</span></b><span> null</span><b><span>;</span></b><br /><b><span>}</span></b><br /><span style="color: #008080">/**</span><br /><span style="color: #008080">* 删除Cookie</span><br /><span style="color: #008080">*/</span><br /><b><span style="color: #000080">function</span></b><span> delCookie</span><b><span>(</span></b><span>name</span><b><span>)</span></b><span>&nbsp;</span><b><span>{</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> exp </span><b><span>=</span></b><span>&nbsp;</span><b><span style="color: #000080">new</span></b><span> Date</span><b><span>();</span></b><br /><span>&nbsp;&nbsp;&nbsp; exp</span><b><span>.</span></b><span>setTime</span><b><span>(</span></b><span>exp</span><b><span>.</span></b><span>getTime</span><b><span>()</span></b><span>&nbsp;</span><b><span>-</span></b><span>&nbsp;</span><span style="color: #ff0000">1</span><b><span>);</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">var</span></b><span> cval </span><b><span>=</span></b><span> getCookie</span><b><span>(</span></b><span>name</span><b><span>);</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #000080">if</span></b><span>&nbsp;</span><b><span>(</span></b><span>cval </span><b><span>!=</span></b><span> null</span><b><span>)</span></b><span>&nbsp;</span><b><span>{</span></b><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document</span><b><span>.</span></b><span>cookie </span><b><span>=</span></b><span> name </span><b><span>+</span></b><span>&nbsp;</span><span style="color: #808080">"="</span><span>&nbsp;</span><b><span>+</span></b><span> cval </span><b><span>+</span></b><span>&nbsp;</span><span style="color: #808080">";expires="</span><span>&nbsp;</span><b><span>+</span></b><span> exp</span><b><span>.</span></b><span>toGMTString</span><b><span>();</span></b><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span>}</span></b><br /><b><span>}</span></b><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>参考地址：<a href="http://blog.csdn.net/zxmcl/article/details/1723595">http://blog.csdn.net/zxmcl/article/details/1723595</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/c73c795aec8f5c63.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

