﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-我的java历程</title><link>http://www.blogjava.net/phe441/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 15:04:07 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 15:04:07 GMT</pubDate><ttl>60</ttl><item><title>Apache Tomcat Realm Configuration</title><link>http://www.blogjava.net/phe441/archive/2009/03/11/259027.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Wed, 11 Mar 2009 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2009/03/11/259027.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/259027.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2009/03/11/259027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/259027.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/259027.html</trackback:ping><description><![CDATA[<br />
<br />
参照： http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html<br />
<img src ="http://www.blogjava.net/phe441/aggbug/259027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2009-03-11 10:33 <a href="http://www.blogjava.net/phe441/archive/2009/03/11/259027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache Tomcat Configuration Reference--The Context Container</title><link>http://www.blogjava.net/phe441/archive/2009/03/10/258845.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Tue, 10 Mar 2009 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2009/03/10/258845.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/258845.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2009/03/10/258845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/258845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/258845.html</trackback:ping><description><![CDATA[<br />
<br />
参照： http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
<img src ="http://www.blogjava.net/phe441/aggbug/258845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2009-03-10 16:36 <a href="http://www.blogjava.net/phe441/archive/2009/03/10/258845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache Tomcat Share Library and Class Loader</title><link>http://www.blogjava.net/phe441/archive/2009/03/10/258834.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Tue, 10 Mar 2009 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2009/03/10/258834.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/258834.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2009/03/10/258834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/258834.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/258834.html</trackback:ping><description><![CDATA[<p><br />
<br />
参照文档： http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html<br />
</p>
<img src ="http://www.blogjava.net/phe441/aggbug/258834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2009-03-10 16:22 <a href="http://www.blogjava.net/phe441/archive/2009/03/10/258834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有用的网址记录</title><link>http://www.blogjava.net/phe441/archive/2009/03/10/258825.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Tue, 10 Mar 2009 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2009/03/10/258825.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/258825.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2009/03/10/258825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/258825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/258825.html</trackback:ping><description><![CDATA[<a href="http://java.sun.com/products/jsp/download.html">http://java.sun.com/products/jsp/download.html</a> - <em>JavaServer Pages (JSP) Specfication, Version 2.0</em>.<br />
<a href="http://java.sun.com/products/servlet/download.html">http://java.sun.com/products/servlet/download.html</a> - <em>Servlet API Specification, Version 2.4</em>. <br />
<a href="http://www.cvshome.org/">http://www.cvshome.org</a>. - <em>CVS</em><br />
<a href="http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html">http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html</a> - <em>Apache Tomcat 6.0 Class Loader HOW-TO</em> 
<img src ="http://www.blogjava.net/phe441/aggbug/258825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2009-03-10 16:09 <a href="http://www.blogjava.net/phe441/archive/2009/03/10/258825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>netscape 中使用iframe，对form中target的使用</title><link>http://www.blogjava.net/phe441/archive/2008/06/11/207169.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Wed, 11 Jun 2008 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2008/06/11/207169.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/207169.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2008/06/11/207169.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/207169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/207169.html</trackback:ping><description><![CDATA[<p>我有下面一段程序：<br />
1.jsp中:<br />
&lt;form name="form1" method="post" action="2.jsp" target="heart"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="download"/&gt;<br />
&lt;/form&gt;<br />
&lt;iframe marginwidth=0 marginheight=0 name="heart" frameborder="no" scrolling="no" width=0 height=0 style="display:none"&gt;</p>
<p>2.jsp中只做一些java处理，没有html之类的东西输出，而处理后的值返回iframe，但我现在点击按钮后，弹出新的空白窗口2.jsp。&nbsp;&nbsp; <br />
&nbsp; 请高手指教如何修改，使得点击按钮后在iframe内显示2.jsp，而不会弹出新的空白窗口2.jsp。</p>
<p>另外我通过测试发现：在IE6,IE7,NETSCAPE7.1这几个浏览器中，都实现了我所希望的功能（点击按钮后，将值返回到iframe,但不弹出新的空白窗口2.jsp），可是NETSCAPE7.02却不行，不知道是为什么。</p>
<p>请高手指教，先谢谢各位了。</p>
<img src ="http://www.blogjava.net/phe441/aggbug/207169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2008-06-11 18:08 <a href="http://www.blogjava.net/phe441/archive/2008/06/11/207169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat5.5.17+jstl1.2+servlet2.5+jsp2.1配置</title><link>http://www.blogjava.net/phe441/archive/2007/07/06/128560.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Fri, 06 Jul 2007 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2007/07/06/128560.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/128560.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2007/07/06/128560.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/128560.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/128560.html</trackback:ping><description><![CDATA[<p>tomcat5.5.17+jstl1.2+servlet2.5+jsp2.1配置<br><br>在此我使用的环境是：<br>tomcat5.5.17<br>jstl1.2<br>servlet2.5<br>jsp2.1<br><br>我以一个简单的例子hello1来说明吧，发布工程时最重要的就是目录结构了，hello1是根目录，放在tomcat中的webapps里，先看看目录结构：<br>hello1\index.jsp<br>hello1\response.jsp<br>hello1\WEB-INF\lib\javaee.jar<br>hello1\WEB-INF\lib\jsf-api.jar<br>hello1\WEB-INF\lib\jsf-impl.jar<br>hello1\WEB-INF\lib\jstl-1.2.jar<br>hello1\WEB-INF\web.xml<br><br>如果你按照以上目录发布工程，抛出以下异常：<br>(1)&nbsp; java.lang.NoClassDefFoundError: javax/el/ExpressionFactory<br>(2)&nbsp; 或打开页面后显示：<br><br></p>
<h1>HTTP Status 404 - /hello1/</h1>
<hr noShade SIZE=1>
<p><strong><font style="BACKGROUND-COLOR: #525d76" color=#ffffff>type</font></strong> Status report</p>
<p><strong><font style="BACKGROUND-COLOR: #525d76" color=#ffffff>message</font></strong> <u>/hello1/</u></p>
<p><strong><font style="BACKGROUND-COLOR: #525d76" color=#ffffff>description</font></strong> <u>The requested resource (/hello1/) is not available.</u></p>
<hr noShade SIZE=1>
<h3>Apache Tomcat/5.5.17</h3>
<p><br>则将javaee.jar包再copy一份放在tomcat目录的common\lib下就不会了。<br>关于用到的javaee.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jar这四个包可以通过myeclipse中获得，如果你安装了myeclipse5.5的话，我安装的是MyEclipse 5.5.1 GA，这四个包的所在的目录是：MyEclipse 5.5.1 GA\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_5.5.1\data\libraryset\EE_5\<br><br>到此，再给出具体的文件代码吧。<br>(1)&nbsp; hello1\index.jsp<br><br>&lt;%@ taglib uri="<a href="http://java.sun.com/jsp/jstl/core">http://java.sun.com/jsp/jstl/core</a>" prefix="c" %&gt;<br>&lt;%@ taglib uri="<a href="http://java.sun.com/jsp/jstl/functions">http://java.sun.com/jsp/jstl/functions</a>" prefix="fn" %&gt;</p>
<p>&lt;html&gt;<br>&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;<br>&lt;body bgcolor="white"&gt;<br>&lt;h2&gt;Hello, my name is Duke. What's yours?&lt;/h2&gt;<br>&lt;form method="get"&gt;<br>&lt;input type="text" name="username" size="25"&gt;<br>&lt;p&gt;&lt;/p&gt;<br>&lt;input type="submit" value="Submit"&gt;<br>&lt;input type="reset" value="Reset"&gt;<br>&lt;/form&gt;</p>
<p>&lt;c:if test="${fn:length(param.username) &gt; 0}" &gt;<br>&nbsp; &lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#37;&#64;&#105;&#110;&#99;&#108;&#117;&#100;&#101;">%@include</a> file="response.jsp" %&gt;<br>&lt;/c:if&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br><br>(2)&nbsp; hello1\response.jsp<br><br>&lt;h2&gt;&lt;font color="black"&gt;Hello, ${param.username}!&lt;/font&gt;&lt;/h2&gt;<br><br>(3)&nbsp; hello1\WEB-INF\web.xml<br><br>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; </p>
<p>&lt;web-app xmlns="<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> web-app_2_5.xsd"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version="2.5"&gt;</p>
<p>&lt;jsp-config&gt;&nbsp;<br>&nbsp;&lt;jsp-property-group&gt;<br>&nbsp;&nbsp;&lt;display-name&gt;hello1&lt;/display-name&gt;<br>&nbsp;&nbsp;&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;<br>&nbsp;&nbsp;&lt;el-ignored&gt;false&lt;/el-ignored&gt;<br>&nbsp;&nbsp;&lt;scripting-invalid&gt;false&lt;/scripting-invalid&gt;<br>&nbsp;&nbsp;&lt;is-xml&gt;false&lt;/is-xml&gt;<br>&nbsp;&nbsp;&lt;!-- &lt;include-prelude&gt;/template/prelude.jspf&lt;/include-prelude&gt; --&gt;<br>&nbsp;&nbsp;&lt;!-- &lt;include-coda&gt;/template/coda.jspf&lt;/include-coda&gt; --&gt;<br>&nbsp;&lt;/jsp-property-group&gt; <br>&lt;/jsp-config&gt;<br>&lt;/web-app&gt; </p>
<br>成功之后页面显示为：<br><br>
<h2>Hello, my name is Duke. What's yours?</h2>
<form method=get>
    <input size=25 name=username>
    <p>&#160;</p>
    <input type=submit value=Submit> <input type=reset value=Reset>
</form>
<h2><font color=black>Hello, afdfadsfads!</font></h2>
<img src ="http://www.blogjava.net/phe441/aggbug/128560.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2007-07-06 13:35 <a href="http://www.blogjava.net/phe441/archive/2007/07/06/128560.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷软件开发有感</title><link>http://www.blogjava.net/phe441/archive/2007/05/18/118311.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Fri, 18 May 2007 04:27:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2007/05/18/118311.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/118311.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2007/05/18/118311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/118311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/118311.html</trackback:ping><description><![CDATA[<p>敏捷软件开发有感</p>
<p>1.个体和交互胜过过程和工具<br>&nbsp; 一个优秀的团队成员未必是一个技术一流的程序员，可能是技术一般的程序员，但他能很好的与他人合作，沟通，合作，良好的沟通以及交互能力比单纯的编程更重要。<br>2.可以工作的软件胜过面面俱到的文档<br>&nbsp; 一个可以工作的软件需要具有文档，用文档可以传达系统的原理及结构，以及对系统及设计决策进行描述。但过多的文档也并不是一件好事，首先编制需要花大量的时间，保持各文档同步，文档与代码之间的同步更是一件难事，如果没有做到同步，那么会形成误导，后果将更严重。<br>&nbsp; 对于团队来说，需要编写和维护一份描述系统原理及结构的文档，描述系统原理，结构和设计原理。关于培训新员工，则将其与业务及软件均熟悉的老员工坐在一起，实时指导，并结合代码。<br>3.客户合作胜过合同谈判<br>&nbsp; 与客户紧密的结合在一起，短周期的向客户演示软件的运行情况。得到客户的反馈并及时跟进进行更改。<br>4.响应变化胜过遵循计划<br>&nbsp; 做短时间的详细计划，长时间的粗略计划，时间越长计划越粗略</p>
<p>&nbsp;短周期，持续的交付能工作软件给客户，得到客户的反馈。<br>&nbsp;以人为本，给成员自信，激励成员来沟建项目，信任每个人都成完成。<br>&nbsp;以能够满足客户需求的数量来度量软件的进度。<br>&nbsp;使团队成员保持高度集中的精力，饱满的精神，不要为了多做一点工作而借用明于的精力。<br>&nbsp;最好的架构，需求，设计出自于团队。<br>&nbsp;每隔一段时间，团队对更有效的工作进行反省，对组织方式，规则，关系等进行调整，达到更有效的工作方式<br></p>
<p><br><br>极限编程</p>
<p>1.客户做为团队开发人员，客户可以是和开发团队同一家公司的一组业务分析师或市场专家，可以是用户团体委派的用户代表。<br>2.每两周交付一次可以工作的软件，迭代计划（两周做一次，重复周期），发布计划，一次做大概三个月的发布计划，做一次长周期的交付。<br>3.验收测试<br>4.结对编程，两个人使用一台电脑，一个控制键盘，一个检查代码的错误及可以改进的地方，结对的关系每天改变一次，每个团队成员应该和其他所有团队成在一起工作过，这样能够促进业务知识及技术知识在团队中的快速传播，且能大大减少缺陷率。<br>5.测试驱动的开发，编写所有产品代码的目的都是为了使测试通过，测试用例和代码一起演化，基本是几分钟一次。结果，一个非常完整的测试用例集就和代码一起生成起来。<br>6.每个结对都有对任何一个模块的检出（check out）权，及修改权力，没有程序员对某一个特定的模块单独负责。<br>7.团队人员保持稳定适中的开发速度，不允许加班。<br>8.开放的工作空间，积极讨论的工作环境。生产率会成倍的提高。<br>9.简单的设计开发，考虑能够工作的最简单的方式，如能够能页面完成的就不能EJB，不用数据库。不能出现重复的代码，一次就够。<br>10.团队经常性地对代码进行重构。&nbsp;</p>
<p><br>&nbsp;</p>
<img src ="http://www.blogjava.net/phe441/aggbug/118311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2007-05-18 12:27 <a href="http://www.blogjava.net/phe441/archive/2007/05/18/118311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle启动服务时，启动之后又立即自动停止</title><link>http://www.blogjava.net/phe441/archive/2007/05/04/115312.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Fri, 04 May 2007 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2007/05/04/115312.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/115312.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2007/05/04/115312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/115312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/115312.html</trackback:ping><description><![CDATA[<p>我用的是windows 2003的系统，oracle9i，启动以下这两个服务后会自动停止：<br>OracleOraHome90Agent<br>OracleOraHome90TNSListener<br><br>日志显示：<br><br>OracleOraHome90Agent：<br><br>-------------- [OracleOraHome90Agent] ------------<br>Sending initial service status..<br>Commandline is "E:\oracle\ora90\bin\dbsnmpwd.bat" -agent_name OracleOraHome90Agent <br>2. WAIT_OBJECT_0: Agent exited with retCode 0.<br>Agent failed to startup.<br>Check E:\oracle\ora90\network\log\OracleOraHome90Agent.nohup for details<br><br><br>OracleOraHome90TNSListener：<br><br>TNSLSNR for 32-bit Windows: Version 9.0.1.1.1 - Production on 04-5月 -2007 14:50:30</p>
<p>Copyright (c) 1991, 2001, Oracle Corporation.&nbsp; All rights reserved.</p>
<p>系统参数文件为E:\oracle\ora90\network\admin\listener.ora<br>写入E:\oracle\ora90\network\log\listener.log的日志信息<br>写入E:\oracle\ora90\network\trace\listener.trc的跟踪信息<br>跟踪级别当前为0</p>
<p>以 pid=4092 开始<br>监听：(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))<br>监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ygogo98sla5i4oh)(PORT=1521)))<br>TNS-12545: 因目标主机或对象不存在，连接失败<br>&nbsp;TNS-12560: TNS: 协议适配器错误<br>&nbsp; TNS-00515: 因目标主机或对象不存在，连接失败<br>&nbsp;&nbsp; 32-bit Windows Error: 1004: Unknown error<br>不再监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))<br><br>原因是我安装了oracle之后，又修改了主机名<br>解决方法：<br><br>一、直接修改 listener.ora<br>路径是： oracle安装目录\ora90\network\ADMIN\listener.ora<br>修改HOST 为主机名或者IP</p>
<p>二、通过 Net Manager，在 监听程序\LISTENER 下直接修改主机即可 </p>
<img src ="http://www.blogjava.net/phe441/aggbug/115312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2007-05-04 14:58 <a href="http://www.blogjava.net/phe441/archive/2007/05/04/115312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>会话跟踪技术--session的使用</title><link>http://www.blogjava.net/phe441/archive/2007/04/28/114429.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Sat, 28 Apr 2007 13:33:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2007/04/28/114429.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/114429.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2007/04/28/114429.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/114429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/114429.html</trackback:ping><description><![CDATA[&nbsp;
<p><span>会话跟踪技术</span><span>--session</span><span>的使用</span></p>
<p>&nbsp;</p>
<p><span>会话跟踪：</span></p>
<p><span><span>1、&nbsp;</span></span><span>使用隐藏表单字段</span></p>
<p><span>&lt;INPUT TYPE=&#8221;HIDDEN&#8221; NAME=&#8221;session&#8221; VALUE=&#8221;landril&#8221;</span></p>
<p><span><span>2、&nbsp;</span></span><span>URL</span><span>重写</span></p>
<p><span>http://host/path/file.jsp?sessionid=landril</span></p>
<p><span><span>3、&nbsp;</span></span><span>持久</span><span>Cookie</span></p>
<p><span><span>4、&nbsp;</span></span><span>会话</span><span>HttpSession</span></p>
<p>&nbsp;</p>
<p><span><span>一、</span></span><span>使用</span><span>session</span><span>的简单步骤</span></p>
<p><span>获取</span><span>HttpSession</span><span>（</span><span>request.getSession()</span><span>方法）对象，查找与该会话相关的信息（</span><span>session.getAttribute()</span><span>），存储会话中的信息（</span><span>session.setAttribute()</span><span>），删除会话中的数据（</span><span>session.removeAttribute()</span><span>），删除当前会话（</span><span>session.invalidate()</span><span>）</span></p>
<p><span>在</span><span>session</span><span>中，可以存储任意数量的键值对，通过键即可获取相应的值，即使用：</span><span>session.getAttribute(&#8220;key&#8221;);</span><span>。</span></p>
<p>&nbsp;</p>
<p><span><span>二、</span></span><span>session</span><span>的常用方法</span></p>
<p><span><span>1、&nbsp;</span></span><span>getAttribute()</span><span>：从</span><span>session</span><span>中获取以前存储的值</span></p>
<p><span><span>2、&nbsp;</span></span><span>getAttributeNames()</span><span>：返回</span><span>session</span><span>中所有属性的名称</span></p>
<p><span><span>3、&nbsp;</span></span><span>setAttribute()</span><span>：将键与值关联起来，存储进</span><span>session</span></p>
<p><span><span>4、&nbsp;</span></span><span>removeAttribute()</span><span>：删除</span><span>session</span><span>中存储的对应键的值</span></p>
<p><span><span>5、&nbsp;</span></span><span>invalidate()</span><span>：删除整个</span><span>session</span><span>及其存储的键值</span></p>
<p><span><span>6、&nbsp;</span></span><span>logout()</span><span>：注销当前用户</span></p>
<p><span><span>7、&nbsp;</span></span><span>getId()</span><span>：获取每个</span><span>session</span><span>对应的唯一</span><span>ID</span></p>
<p><span><span>8、&nbsp;</span></span><span>getCreationTime()</span><span>：获取</span><span>session</span><span>创建的时间</span></p>
<p><span><span>9、&nbsp;</span></span><span>getLastAccessedTime()</span><span>：获取</span><span>session</span><span>最后被访问的时间</span></p>
<p><span><span>10、<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>getMaxInactiveInterval()</span><span>：在用户没有访问的情况下，会话在被自动废弃之前应该保持多长时间</span></p>
<p>&nbsp;</p>
<p><span><span>三、</span></span><span>使用</span><span>session</span><span>的一个例子，拥有购物车的在线商店</span></p>
<p>&nbsp;</p>
<p><span>1</span><span>、</span><span>CatalogPage.java</span></p>
<p align=left><strong>&nbsp;</strong></p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>import</span></strong><span> java.io.IOException;</span></p>
<p align=left><strong><span>import</span></strong><span> java.io.PrintWriter;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.ServletException;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpServlet;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpServletRequest;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpServletResponse;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> CatalogPage </span><strong><span>extends</span></strong><span> HttpServlet {</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> CatalogItem[] </span><span>items</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> String[] </span><span>itemIds</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> String </span><span>title</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>protected</span></strong><span> </span><strong><span>void</span></strong><span> setItems(String[] itemIds) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>itemIds</span><span> = itemIds;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>items</span><span> = </span><strong><span>new</span></strong><span> CatalogItem[itemIds.</span><span>length</span><span>];</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>for</span></strong><span> (</span><strong><span>int</span></strong><span> i = 0; i &lt; </span><span>items</span><span>.</span><span>length</span><span>; i++) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>items</span><span>[i] = Catalog.<em>getItem</em>(itemIds[i]);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>protected</span></strong><span> </span><strong><span>void</span></strong><span> setTitle(String title) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>title</span><span> = title;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> doGet(HttpServletRequest request, HttpServletResponse response)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>throws</span></strong><span> ServletException, IOException {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(</span><span>items</span><span> == </span><strong><span>null</span></strong><span>){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>response.sendError(response.</span><em><span>SC_NOT_FOUND</span></em><span>,</span><span>"Missing Items:"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>response.setContentType(</span><span>"text/html"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>PrintWriter out = response.getWriter();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;html&gt;&lt;head&gt;&lt;title&gt;"</span><span>+</span><span>title</span><span>+</span><span>"&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h3&gt;"</span><span>+</span><span>title</span><span>+</span><span>"&lt;/h3&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CatalogItem item;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>for</span></strong><span> (</span><strong><span>int</span></strong><span> i = 0; i &lt; </span><span>items</span><span>.</span><span>length</span><span>; i++) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;hr&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>item = </span><span>items</span><span>[i];</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(item == </span><strong><span>null</span></strong><span>)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"Unknow itemId: "</span><span>+</span><span>itemIds</span><span>[i]);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>else</span></strong><span>{</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String formURL = request.getContextPath()+</span><span>"/orderPage"</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>formURL = response.encodeURL(formURL);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;form action='"</span><span>+formURL+</span><span>"'&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;input type='hidden' name='itemId' value='"</span><span>+item.getItemId()+</span><span>"'&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><strong><span>new</span></strong><span> String(item.getSDesc().getBytes(</span><span>"utf-8"</span><span>),</span><span>"GBK"</span><span>)+</span><span>"$"</span><span>+item.getPrice()+item.getLDesc());</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;input type='submit' value='add to shopping cart'&gt;&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>2</span><span>、</span><span>ComputerBook</span><span>.java</span></p>
<p>&nbsp;</p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> <span>ComputerBook</span> </span><strong><span>extends</span></strong><span> CatalogPage{</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> init(){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String[] ids = {</span><span>"book1"</span><span>,</span><span>"book2"</span><span>,</span><span>"book3"</span><span>,</span><span>"book4"</span><span>};</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setItems(ids);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setTitle(</span><span>"Japanese Book"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>3</span><span>、</span><span>JapaneseBook.java</span></p>
<p>&nbsp;</p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> JapaneseBook </span><strong><span>extends</span></strong><span> CatalogPage{</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> init(){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String[] ids = {</span><span>"book5"</span><span>,</span><span>"book6"</span><span>};</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setItems(ids);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setTitle(</span><span>"Computer Book"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>4</span><span>、</span><span>OrderPage</span><span>.java</span></p>
<p>&nbsp;</p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>import</span></strong><span> java.io.IOException;</span></p>
<p align=left><strong><span>import</span></strong><span> java.io.PrintWriter;</span></p>
<p align=left><strong><span>import</span></strong><span> java.util.List;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.ServletException;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpServlet;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpServletRequest;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpServletResponse;</span></p>
<p align=left><strong><span>import</span></strong><span> javax.servlet.http.HttpSession;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> <span>OrderPage</span> </span><strong><span>extends</span></strong><span> HttpServlet {</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> doGet(HttpServletRequest request, HttpServletResponse response)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>throws</span></strong><span> ServletException, IOException {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>HttpSession session = request.getSession();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ShoppingCart cart;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>synchronized</span></strong><span>(session){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cart = (ShoppingCart)session.getAttribute(</span><span>"shop"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(cart == </span><strong><span>null</span></strong><span>){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cart = </span><strong><span>new</span></strong><span> ShoppingCart();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>session.setAttribute(</span><span>"shop"</span><span>, cart);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String itemId = request.getParameter(</span><span>"itemId"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(itemId != </span><strong><span>null</span></strong><span>){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String num = request.getParameter(</span><span>"num"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(num == </span><strong><span>null</span></strong><span>)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cart.addItem(itemId);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>else</span></strong><span>{</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>int</span></strong><span> numItems;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>try</span></strong><span> {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>numItems = Integer.<em>parseInt</em>(num);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </span><strong><span>catch</span></strong><span> (NumberFormatException e) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>numItems = 1;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cart.setNum(itemId, numItems);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>response.setContentType(</span><span>"text/html"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>PrintWriter out = response.getWriter();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String title = </span><span>"Your Order"</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;html&gt;&lt;head&gt;&lt;title&gt;"</span><span>+title+</span><span>"&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h3&gt;"</span><span>+title+</span><span>"&lt;/h3&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>synchronized</span></strong><span>(session){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List&lt;ItemOrder&gt; itemOrders = cart.getItemOrders();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(itemOrders.size() == 0)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"No items"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>else</span></strong><span>{</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;table border=1&gt;&lt;tr&gt;&lt;th&gt;Item ID&lt;th&gt;Short Description&lt;th&gt;Long Description&lt;th&gt;Unit Price&lt;th&gt;Number&lt;th&gt;Total Price"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ItemOrder order;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>for</span></strong><span> (</span><strong><span>int</span></strong><span> i = 0; i &lt; itemOrders.size(); i++) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>order = (ItemOrder)itemOrders.get(i);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;tr&gt;&lt;td&gt;"</span><span>+order.getItemId()+</span><span>"&lt;td&gt;"</span><span>+order.getSDesc()+</span><span>"&lt;td&gt;"</span><span>+order.getLDesc()+</span><span>"&lt;td&gt;"</span><span>+order.getUnitPrice()+</span><span>"&lt;td&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;form&gt;&lt;input type='hidden' name='itemId' value='"</span><span>+order.getItemId()+</span><span>"'&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;input type='text' name='num' size=3 value='"</span><span>+order.getNum()+</span><span>"'&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;input type='submit' value='update order'&gt;&lt;/form&gt;&lt;td&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(order.getTotalPrice());</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String checkURL = response.encodeURL(request.getContextPath()+</span><span>"/check.html"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;/table&gt;&lt;form action='"</span><span>+checkURL+</span><span>"'&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>out.println(</span><span>"&lt;input type='submit' value='submit'&gt;&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;"</span><span>);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>5</span><span>、</span><span>ShoppingCart.java</span></p>
<p>&nbsp;</p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>import</span></strong><span> java.util.ArrayList;</span></p>
<p align=left><strong><span>import</span></strong><span> java.util.List;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> ShoppingCart {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> List&lt;<span>ItemOrder</span>&gt; </span><span>itemOrders</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> ShoppingCart() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>itemOrders</span><span> = </span><strong><span>new</span></strong><span> ArrayList&lt;<span>ItemOrder</span>&gt;();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> List&lt;<span>ItemOrder</span>&gt; getItemOrders(){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>itemOrders</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>synchronized</span></strong><span> </span><strong><span>void</span></strong><span> addItem(String itemId){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>ItemOrder</span> order;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>for</span></strong><span>(</span><strong><span>int</span></strong><span> i=0;i&lt;</span><span>itemOrders</span><span>.size();i++){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>order = (<span>ItemOrder</span>)</span><span>itemOrders</span><span>.get(i);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(itemId.equals(order.getItemId())){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>order.addNum();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>ItemOrder</span> newOrd = </span><strong><span>new</span></strong><span> <span>ItemOrder</span>(Catalog.<em>getItem</em>(itemId));</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>itemOrders</span><span>.add(newOrd);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>synchronized</span></strong><span> </span><strong><span>void</span></strong><span> setNum(String itemId,</span><strong><span>int</span></strong><span> num){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>ItemOrder</span> order;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>for</span></strong><span> (</span><strong><span>int</span></strong><span> i = 0; i &lt; </span><span>itemOrders</span><span>.size(); i++) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>order = (<span>ItemOrder</span>)</span><span>itemOrders</span><span>.get(i);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(itemId.equals(order.getItemId())){</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span>(num &lt;=0)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>itemOrders</span><span>.remove(i);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>else</span></strong></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>order.setNum(num);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>ItemOrder</span> newOrd = </span><strong><span>new</span></strong><span> <span>ItemOrder</span>(Catalog.<em>getItem</em>(itemId));</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>itemOrders</span><span>.add(newOrd);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>6</span><span>、</span><span>CatalogItem</span><span>.java</span></p>
<p>&nbsp;</p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> CatalogItem {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> <span>String</span> </span><span>itemId</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> <span>String</span> </span><span>sDesc</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> <span>String</span> </span><span>lDesc</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> </span><strong><span>float</span></strong><span> </span><span>price</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> <span>String</span> getItemId() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>itemId</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> setItemId(<span>String</span> itemId) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>itemId</span><span> = itemId;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> <span>String</span> getLDesc() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>lDesc</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> setLDesc(<span>String</span> desc) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>lDesc</span><span> = desc;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>float</span></strong><span> getPrice() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>price</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> setPrice(</span><strong><span>float</span></strong><span> price) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>price</span><span> = price;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> <span>String</span> getSDesc() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>sDesc</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> setSDesc(<span>String</span> desc) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>sDesc</span><span> = desc;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> CatalogItem(<span>String</span> itemId, <span>String</span> desc, <span>String</span> desc2, </span><strong><span>float</span></strong><span> price) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>super</span></strong><span>();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>itemId</span><span> = itemId;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>sDesc</span><span> = desc;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>lDesc</span><span> = desc2;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>price</span><span> = price;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>7</span><span>、</span><span>ItemOrder.java</span></p>
<p>&nbsp;</p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> ItemOrder {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> <span>CatalogItem</span> </span><span>item</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> </span><strong><span>int</span></strong><span> </span><span>num</span><span>;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> ItemOrder(<span>CatalogItem</span> item) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setItem(item);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setNum(1);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> <span>CatalogItem</span> getItem() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>item</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> setItem(<span>CatalogItem</span> item) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>item</span><span> = item;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>int</span></strong><span> getNum() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>num</span><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> setNum(</span><strong><span>int</span></strong><span> num) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>this</span></strong><span>.</span><span>num</span><span> = num;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> String getItemId() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>item</span><span>.getItemId();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> String getSDesc() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>item</span><span>.getSDesc();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> String getLDesc() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>item</span><span>.getLDesc();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>float</span></strong><span> getUnitPrice() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>item</span><span>.getPrice();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> addNum() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setNum(</span><span>num</span><span> + 1);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>void</span></strong><span> cancelOrder() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setNum(0);</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>float</span></strong><span> getTotalPrice() {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><span>num</span><span> * getUnitPrice();</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>}</span></p>
<p>&nbsp;</p>
<p><span>8</span><span>、</span><span>Catalog.java</span></p>
<p align=left><strong>&nbsp;</strong></p>
<p align=left><strong><span>package</span></strong><span> com.landril.session;</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>public</span></strong><span> </span><strong><span>class</span></strong><span> Catalog {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>private</span></strong><span> </span><strong><span>static</span></strong><span> <span>CatalogItem</span>[] </span><em><span>items</span></em><span> = {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>new</span></strong><span> <span>CatalogItem</span>(</span><span>"book1"</span><span>, </span><span>"Hibernate"</span><span>, </span><span>"Hibernate</span><span>，</span><span>Hibernate"</span><span>, 57),</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>new</span></strong><span> <span>CatalogItem</span>(</span><span>"book2"</span><span>, </span><span>"Spring"</span><span>, </span><span>"Spring</span><span>，</span><span>Spring"</span><span>, 36),</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>new</span></strong><span> <span>CatalogItem</span>(</span><span>"book3"</span><span>, </span><span>"Tomcat"</span><span>, </span><span>"Tomcat</span><span>，</span><span>Tomcat"</span><span>, 23),</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>new</span></strong><span> <span>CatalogItem</span>(</span><span>"book4"</span><span>, </span><span>"Jboss"</span><span>, </span><span>"Jboss</span><span>，</span><span>Jboss"</span><span>, 35),</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>new</span></strong><span> <span>CatalogItem</span>(</span><span>"book5"</span><span>, </span><span>"Japanese1"</span><span>, </span><span>"Japanese1</span><span>，</span><span>Japanese1"</span><span>, 35),</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>new</span></strong><span> <span>CatalogItem</span>(</span><span>"book6"</span><span>, </span><span>"Japanese2"</span><span>, </span><span>"Japanese2</span><span>，</span><span>Japanese2"</span><span>, 23) };</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span>public</span></strong><span> </span><strong><span>static</span></strong><span> <span>CatalogItem</span> getItem(String itemId) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>CatalogItem</span> item;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span> (itemId == </span><strong><span>null</span></strong><span>)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><strong><span>null</span></strong><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>for</span></strong><span> (</span><strong><span>int</span></strong><span> i = 0; i &lt; </span><em><span>items</span></em><span>.</span><span>length</span><span>; i++) {</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>item = </span><em><span>items</span></em><span>[i];</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>if</span></strong><span> (itemId.equals(item.getItemId()))</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> item;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span>return</span></strong><span> </span><strong><span>null</span></strong><span>;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p align=left><span>}</span></p>
<p align=left>&nbsp;</p>
<p><span>9</span><span>、</span><span>check.html</span></p>
<p>&nbsp;</p>
<p align=left><span>&lt;</span><span>html</span><span>&gt;</span></p>
<p align=left><span>&lt;</span><span>head</span><span>&gt;</span></p>
<p align=left><span>&lt;</span><span>title</span><span>&gt;</span><span>checking out</span><span>&lt;/</span><span>title</span><span>&gt;</span></p>
<p align=left><span>&lt;/</span><span>head</span><span>&gt;</span></p>
<p align=left><span>&lt;</span><span>body</span><span>&gt;</span></p>
<p align=left><span>Checking out</span></p>
<p><span>&lt;/</span><span>body</span><span>&gt;</span></p>
<img src ="http://www.blogjava.net/phe441/aggbug/114429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2007-04-28 21:33 <a href="http://www.blogjava.net/phe441/archive/2007/04/28/114429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet基础知识及常用类</title><link>http://www.blogjava.net/phe441/archive/2007/04/28/114427.html</link><dc:creator>landril</dc:creator><author>landril</author><pubDate>Sat, 28 Apr 2007 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/phe441/archive/2007/04/28/114427.html</guid><wfw:comment>http://www.blogjava.net/phe441/comments/114427.html</wfw:comment><comments>http://www.blogjava.net/phe441/archive/2007/04/28/114427.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/phe441/comments/commentRss/114427.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/phe441/services/trackbacks/114427.html</trackback:ping><description><![CDATA[&nbsp;
<p><span>Servlet</span><span>基础知识及常用类</span></p>
<p>&nbsp;</p>
<p><span><span>一、</span></span><span>Servlet</span><span>生命周期</span></p>
<p><span>服务器加载</span><span>Servlet</span><span>，创建</span><span>Servlet</span><span>类的实例，调用</span><span>Servlet</span><span>的</span><span>init()</span><span>方法，处理客户端的服务调用（如果收到请求，调用</span><span>service()</span><span>方法，</span><span>service()</span><span>方法处理请求并将结果返回客户端，等待下一下请求，重复），</span><span>Servlet</span><span>在服务器调用</span><span>destroy()</span><span>方法后被卸载</span></p>
<p>&nbsp;</p>
<p><span><span>二、</span></span><span>会话跟踪技术</span></p>
<p><span><span>1、&nbsp;</span></span><span>使用隐藏表单字段</span></p>
<p><span>&lt;INPUT TYPE=&#8221;HIDDEN&#8221; NAME=&#8221;session&#8221; VALUE=&#8221;landril&#8221;</span></p>
<p><span><span>2、&nbsp;</span></span><span>URL</span><span>重写</span></p>
<p><span>http://host/path/file.jsp?sessionid=landril</span></p>
<p><span><span>3、&nbsp;</span></span><span>持久</span><span>Cookie</span></p>
<p><span><span>4、&nbsp;</span></span><span>会话</span><span>HttpSession</span></p>
<p>&nbsp;</p>
<p><span>ServletRequest</span><span>：用于将请求的信息传送给</span><span>Servlet</span></p>
<p><span>ServletResponse</span><span>：提供服务器对客户端请求的响应</span></p>
<p><span>RequestDispatcher</span><span>：接收用户端的请求并将其发送到任何资源，</span><span>RequestDispatcher</span><span>对象用作资源的封装器，通过路径或名称指定</span></p>
<p><span>ServletConfig</span><span>：定义</span><span>Servlet</span><span>配置对象，可以从</span><span>web.xml</span><span>文件中获取初始化参数的值以及对</span><span>ServletContext</span><span>对象的引用</span></p>
<p><span>ServletContext</span><span>：让</span><span>Servlet</span><span>查找有关</span><span>Servlet</span><span>引擎及其环境的信息</span></p>
<img src ="http://www.blogjava.net/phe441/aggbug/114427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/phe441/" target="_blank">landril</a> 2007-04-28 21:32 <a href="http://www.blogjava.net/phe441/archive/2007/04/28/114427.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>