﻿<?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-RiKeR</title><link>http://www.blogjava.net/RiKeR/</link><description>本博客停止更新，最新内容请访问--&gt; http://blog.csdn.net/shuailee</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 22:24:44 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 22:24:44 GMT</pubDate><ttl>60</ttl><item><title>RiKeR网上商城</title><link>http://www.blogjava.net/RiKeR/articles/159498.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Fri, 09 Nov 2007 22:48:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/159498.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/159498.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/159498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/159498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/159498.html</trackback:ping><description><![CDATA[&nbsp;
<p>Ricer<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">需求确定</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">普通用户可以通过系统浏览商品（按类别）</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">普通用户可以通过系统搜索商品（按类别、价位、日期等）</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">普通用户可以通过系统下订单（享受市场价）</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">普通用户可以注册成为系统会员（免费注册）</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">会员可以浏览和检索商品</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">会员可以下订单（享受会员价）</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">7.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">会员可以浏览自己下过的订单</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">8.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">会员可以管理自己的信息（自服务系统）</span></p>
<p style="margin-left: 48pt; text-indent: -21pt; tab-stops: list 48.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">修改密码</span></p>
<p style="margin-left: 48pt; text-indent: -21pt; tab-stops: list 48.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">修改送货地址</span></p>
<p style="margin-left: 48pt; text-indent: -21pt; tab-stops: list 48.0pt">c)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">修改联系方式</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">9.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">会员可以分级别</span></p>
<p style="margin-left: 60pt; text-indent: -18pt; tab-stops: list 60.0pt">1)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">不同级别享受不同等级的优惠</span></p>
<p style="margin-left: 60pt; text-indent: -18pt; tab-stops: list 60.0pt">2)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">通过购物的金额确定级别</span></p>
<p>10.&nbsp;&nbsp; <span style="font-family: 宋体">管理员通过后台进行会员管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<span style="font-family: 宋体">）会员浏览</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<span style="font-family: 宋体">）会员历史订单浏览</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<span style="font-family: 宋体">）会员删除</span></p>
<p style="margin-left: 18pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4<span style="font-family: 宋体">）指定会员级别</span></p>
<p>11. <span style="font-family: 宋体">管理员通过后台进行产品分类的管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<span style="font-family: 宋体">）浏览、添加、删除、修改</span></p>
<p>12. <span style="font-family: 宋体">管理员通过后台进行产品管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<span style="font-family: 宋体">）新增产品</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<span style="font-family: 宋体">）产品上柜</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<span style="font-family: 宋体">）产品下柜</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4) <span style="font-family: 宋体">产品销量浏览</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<span style="font-family: 宋体">）产品搜索</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6<span style="font-family: 宋体">）产品删除</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7<span style="font-family: 宋体">）产品修改</span></p>
<p>13. <span style="font-family: 宋体">管理员通过后台进行订单的管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<span style="font-family: 宋体">）订单查询</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<span style="font-family: 宋体">）修改订单状态</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<span style="font-family: 宋体">）订单搜索</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4<span style="font-family: 宋体">）订单跟踪</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<span style="font-family: 宋体">）订单提醒</span></p>
<p>Ricer<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">架构分析与设计</span></p>
<p><span style="font-family: 宋体">逻辑架构</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSP + JavaBeans + Database</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JSP<span style="font-family: 宋体">负责表现</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JavaBeans<span style="font-family: 宋体">负责业务逻辑</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database<span style="font-family: 宋体">负责持久保持数据</span></p>
<p><span style="font-family: 宋体">物理架构</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web<span style="font-family: 宋体">服务器一台</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">配置</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database<span style="font-family: 宋体">服务器一台</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">配置</span></p>
<p><span style="font-family: 宋体">技术解决方案</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web Server—Tomcat5.5</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Database—MySQL5.0</p>
<p>Ricer<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">业务逻辑分析</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">会员类</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">包装系统会员</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">与订单类有一对多的关系</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">管理员类</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">包装系统管理员</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">产品类</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">包装产品的信息</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">与订单是多对多的关系</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">类别类</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">包装产品的类别</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">树状结构</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">3）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">与产品是一对多的关系</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">订单类</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">包装订单的信息</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">与产品是多对多的关系</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">3）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">与会员是多对已的关系</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">购物车类</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">包装购物车的信息</span></p>
<p style="margin-left: 42.75pt; text-indent: -21.75pt; tab-stops: list 42.75pt">2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">与产品是多对多的关系</span></p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">业务逻辑设计</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>User</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>id</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>username</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>password</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iv.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>phone</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>addr</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vi.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>rdate</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getOrders()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>save()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>change()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iv.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>delete</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>static search()</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Administrator</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>usernae</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>password</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>login()</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Product</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>id</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>name</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>descr</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iv.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>normalPrice</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>memberPrice</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vi.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>pdate</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>category</p>
<p style="margin-left: 21pt">2)&nbsp;&nbsp;&nbsp; methods </p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i. &nbsp;&nbsp;&nbsp; getCategory()</p>
<p style="margin-left: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.&nbsp;&nbsp;&nbsp;&nbsp; getSalesCount()</p>
<p style="margin-left: 78pt; text-indent: -36pt; tab-stops: list 78.0pt">iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>save()<span style="font-family: 宋体">、</span>change()<span style="font-family: 宋体">、</span>search()<span style="font-family: 宋体">等</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Category</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>id</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>name</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>descr</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iv.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>pid(parent:Category)</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getProductCounts()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>save()<span style="font-family: 宋体">、</span>change()<span style="font-family: 宋体">等</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SalesOrder&amp;SaleItem</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>id</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>userid</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>addr</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iv.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>SalesItem[]</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>odate</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getTotalPrice()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>save()<span style="font-family: 宋体">、</span>change()<span style="font-family: 宋体">等</span></p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getSalesItems()</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">6.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SalesOrder&amp;SaleItem</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>id</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>productID</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>unitPrice</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iv.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>pCount</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getTotalPrice()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>save()<span style="font-family: 宋体">、</span>change()<span style="font-family: 宋体">等</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">7.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ShoppingCart&amp;CartItem</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>userid</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>CartItem[]</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getTotalPrice()</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>save()<span style="font-family: 宋体">、</span>change()<span style="font-family: 宋体">等</span></p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getCartItems()</p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">8.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ShoppingCart&amp;CartItem</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>properties</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>productID</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>unitPrice</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iii.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>pCount</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>methods</p>
<p style="margin-left: 63pt; text-indent: -63pt; tab-stops: list 63.0pt"><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>getTotalPrice()</p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">数据库设计</span></p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">界面设计</span></p>
<p><span style="font-family: 宋体">前台</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">首页</span>index.jsp</p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">显示某类商品</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">根据</span>id<span style="font-family: 宋体">显示图片</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">c)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">搜索</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">d)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">注册</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">e)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">登录</span></p>
<p style="margin-left: 42pt; text-indent: -21pt; tab-stops: list 42.0pt">f)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">自服务</span></p>
<p>2.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">搜索界面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; search.jsp</p>
<p>3.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">搜索结构</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; searchresult.jsp</p>
<p>4.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">注册</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">注册页面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; register.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b) &nbsp;<span style="font-family: 宋体">注册成功</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; registerok.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">注册失败</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; registererr.jsp</p>
<p>5.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">登录</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; login.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; loginok.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; loginerr.jsp</p>
<p>6.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">自服务</span>&nbsp;&nbsp;&nbsp; selfservice.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; changepassword.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; changepasswordok.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; changepassworderr.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)&nbsp;&nbsp;&nbsp; changeinfo.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e)&nbsp;&nbsp;&nbsp; changeinfook.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f)&nbsp;&nbsp;&nbsp;&nbsp; changeinfoerr.jsp</p>
<p>7.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">购物</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">购物车浏览</span>&nbsp;&nbsp;&nbsp; cart.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">结帐</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buy.jsp</p>
<p><span style="font-family: 宋体">后台（</span>admin<span style="font-family: 宋体">目录下）</span></p>
<p>1.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">登录页面</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; login.jsp</p>
<p>2.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">首页</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">用户管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">产品管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">类别管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">订单管理</span></p>
<p>3.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">用户管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">显示用户</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userlist.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">删除用户</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userdelete.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">搜索用户</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usersearch.jsp</p>
<p>4.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">产品管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; productlist.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; productadd.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; productchange.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)&nbsp;&nbsp;&nbsp; productdelete.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e)&nbsp;&nbsp;&nbsp; productSearch.jsp</p>
<p>5.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">类别管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; categorylist.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; categoryadd.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)&nbsp;&nbsp;&nbsp; categorydelete.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)&nbsp;&nbsp;&nbsp; categorychange.jsp</p>
<p>6.&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">订单管理</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">订单浏览</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; salesorderlist.jsp</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">订单处理</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; salesorderdeal.jsp</p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">开发环境搭建</span></p>
<p><span style="font-family: 宋体">开发工具</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Eclipse3.2</p>
<p>Web Server</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tomcat5.5</p>
<p>Database</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL</p>
<p>SCM</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CVS</p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">开发</span></p>
<p><span style="font-family: 宋体">先写用户</span></p>
<p><span style="font-family: 宋体">再写分类</span></p>
<p><span style="font-family: 宋体">然后写产品</span></p>
<p><span style="font-family: 宋体">接下来购物</span></p>
<p><span style="font-family: 宋体">最后订单处理</span></p>
<p><span style="font-family: 宋体">其他功能</span></p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">开发安排</span></p>
<p>V0.1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">用户</span>—JavaBeans<span style="font-family: 宋体">前台</span>/<span style="font-family: 宋体">后台</span></p>
<p>V0.2</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">分类</span>—JavaBeans<span style="font-family: 宋体">前台</span>/<span style="font-family: 宋体">后台</span></p>
<p>&#8230;&#8230;</p>
<p>RiKeR<span style="font-family: 宋体">网上商城</span>—<span style="font-family: 宋体">文档编纂</span></p>
<p><span style="font-family: 宋体">需求描述文档</span></p>
<p><span style="font-family: 宋体">系统分析与设计</span></p>
<p><span style="font-family: 宋体">数据库设计</span></p>
<p><span style="font-family: 宋体">开发接口</span>API docs&amp;<span style="font-family: 宋体">源代码注释</span></p>
<p><span style="font-family: 宋体">用户帮助（前台）</span></p>
<p><span style="font-family: 宋体">管理员手册（后台）</span></p>
<p><span style="font-family: 宋体">测试文档</span></p>
<img src ="http://www.blogjava.net/RiKeR/aggbug/159498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-11-10 06:48 <a href="http://www.blogjava.net/RiKeR/articles/159498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件项目开发的流程</title><link>http://www.blogjava.net/RiKeR/articles/159398.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Fri, 09 Nov 2007 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/159398.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/159398.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/159398.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/159398.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/159398.html</trackback:ping><description><![CDATA[web项目开发的一般流程--总纲<br />
1.需求分析<br />
&nbsp;通过各种手段确定系统的功能和性能<br />
&nbsp;功能：购物、注册、浏览、搜索。。。<br />
&nbsp;性能：可同时支持N个并发访问，并且响应时间不低于M毫秒。。<br />
&nbsp;手段：<br />
&nbsp;&nbsp;头脑风暴<br />
&nbsp;&nbsp;会议<br />
&nbsp;&nbsp;询问<br />
&nbsp;&nbsp;*原型-界面原型、业务原型<br />
&nbsp;本阶段是项目开发的最重要阶段<br />
&nbsp;在web项目中，通常界面设计会在本阶段进行<br />
2.分析与设计<br />
&nbsp;架构分析与设计<br />
&nbsp;&nbsp;逻辑架构<br />
&nbsp;&nbsp;&nbsp;3层架构，N层架构。。<br />
&nbsp;&nbsp;&nbsp;MVC<br />
&nbsp;&nbsp;&nbsp;MODEL 1 OR MODEL 2<br />
&nbsp;&nbsp;物理架构<br />
&nbsp;&nbsp;&nbsp;web服务器的分布<br />
&nbsp;&nbsp;&nbsp;数据库服务器的分布<br />
&nbsp;&nbsp;技术解决方案的确定<br />
&nbsp;&nbsp;&nbsp;java/.net<br />
&nbsp;&nbsp;&nbsp;openSource/商业<br />
&nbsp;业务逻辑分析<br />
&nbsp;&nbsp;根据需求分析业务逻辑<br />
&nbsp;&nbsp;&nbsp;有哪些人会使用本系统<br />
&nbsp;&nbsp;&nbsp;他们会使用本系统做什么<br />
&nbsp;&nbsp;&nbsp;通常他们使用本系统的步骤是什么样的<br />
&nbsp;&nbsp;&nbsp;会有哪些明显的类来支撑本系统的运行<br />
&nbsp;&nbsp;&nbsp;会有哪些不同的提示会反馈给用户<br />
&nbsp;&nbsp;本阶段与需求的确定密切相关，通常在确定需求的时候就会进行相关的分析<br />
&nbsp;业务逻辑设计<br />
&nbsp;&nbsp;根据需求的分析来确定具体的类<br />
&nbsp;&nbsp;确定类的属性<br />
&nbsp;&nbsp;确定类的接口（方法）<br />
&nbsp;&nbsp;确定类之间的关系<br />
&nbsp;&nbsp;确定用户操作流程在设计上的反映<br />
&nbsp;&nbsp;*进行数据库的设计<br />
&nbsp;界面设计<br />
&nbsp;&nbsp;设计系统的界面风格<br />
&nbsp;&nbsp;&nbsp;颜色、STYLE<br />
&nbsp;&nbsp;设计系统的具体&#8220;模拟&#8221;界面<br />
&nbsp;&nbsp;&nbsp;能够从头走到尾<br />
&nbsp;&nbsp;&nbsp;&nbsp;方便进行需求的确定<br />
&nbsp;&nbsp;&nbsp;&nbsp;方便JSP程序员的开发<br />
3.开发环境搭建<br />
&nbsp;开发工具的确定<br />
&nbsp;配置管理工具的确定<br />
&nbsp;测试工具的确定<br />
&nbsp;文件服务器、配置服务器等的确定<br />
4.开发-测试-开发-测试<br />
&nbsp;按照设计进行开发<br />
&nbsp;&nbsp;*迅速开发原型<br />
&nbsp;&nbsp;*进行迭代开发<br />
&nbsp;&nbsp;提早进行测试<br />
&nbsp;&nbsp;&nbsp;单元测试、黑盒测试、性能测试、易用性测试<br />
5.文档编纂
<img src ="http://www.blogjava.net/RiKeR/aggbug/159398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-11-09 16:39 <a href="http://www.blogjava.net/RiKeR/articles/159398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bbsPrj经验</title><link>http://www.blogjava.net/RiKeR/articles/158933.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 07 Nov 2007 12:56:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/158933.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/158933.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/158933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/158933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/158933.html</trackback:ping><description><![CDATA[<p>where前面要空格，因为是sql语句..</p>
<p>&nbsp;&lt;input type=text size=4 name="pageNo" value=&lt;%=pageNo%&gt; /&gt; 这/&gt;</p>
<p>&lt;select name="pageNo" onchange="document.form1.submit()"&gt;<br />
&nbsp;&nbsp;&lt;%<br />
&nbsp;&nbsp;for(int i=1; i&lt;=totalPages; i++) {<br />
&nbsp;&nbsp;%&gt;<br />
&nbsp;&nbsp;&lt;option value=&lt;%=i %&gt; &lt;%=(pageNo == i) ? "selected" : "" </p>
<p>%&gt;&gt;第&lt;%=i %&gt;页<br />
&nbsp;&nbsp;&lt;%<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;%&gt;<br />
&nbsp;&lt;/select&gt;<br />
中&lt;/select&gt;</p>
<p>一、编程规范 不管是用什么语言一定要有一个规范的写法。。 </p>
<p>密码:&lt;input type="password" name="password"&gt;&lt;br&gt; </p>
<p>如果你要加入 JavaScript 的验证 你一定要加一个 id 属性 </p>
<p>密码:&lt;input type="password" name="password" id="password"&gt;&lt;br&gt; </p>
<p>name 属性是在页面传递值的时候用 ，id 则是在 本页面用 </p>
<p>第二、 在找页面中的某个元素的时候 我不建议你这样写 </p>
<p>password1=document.form1.password1.value; </p>
<p>建议你写成这样 <br />
var password <br />
password = document.getElementById('password'); <br />
得到 password 以后 </p>
<p>if(password.value==null||password==""){ <br />
... ... <br />
return false; <br />
} </p>
<p>最后 </p>
<p>OnSubmit="check()" </p>
<p>OnSubmit = ... 需要的是一个 true 或者 false </p>
<p>所以你就要 check() 的返回值 再返回给 onsubmit </p>
<p>onsubmit="return check()" </p>
<p><br />
==================&gt;</p>
<p>1.树状结构的存储与展现-递归方式<br />
2.JavaScript css html jsp结合运用<br />
3.分页<br />
4.前台、后台<br />
5.Session初步<br />
6.功能完成与健壮之间的区别<br />
</p>
<img src ="http://www.blogjava.net/RiKeR/aggbug/158933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-11-07 20:56 <a href="http://www.blogjava.net/RiKeR/articles/158933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2005年5月软件设计师上午题精解</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/20/154512.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sat, 20 Oct 2007 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/20/154512.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/154512.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/20/154512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/154512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/154512.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 坚持第一印象！还是徘徊在45分边缘，一定要努力啊！！&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/20/154512.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/154512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-20 16:09 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/20/154512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无损分解和保持依赖的判断</title><link>http://www.blogjava.net/RiKeR/articles/153733.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 17 Oct 2007 16:53:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/153733.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153733.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/153733.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153733.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153733.html</trackback:ping><description><![CDATA[大部分是对一个关系模式分解成两个模式的考察，分解为三个以上模式时无损分解和保持依赖的判断比较复杂，考的可能性不大，因此我们只对&#8220;一个关系模式分解成两个模式&#8221;这种类型的题的相关判断做一个总结。
<p>以下的论述都基于这样一个前提：<br />
R是具有函数依赖集F的关系模式，（R1 ，R2）是R的一个分解。</p>
<p>首先我们给出一个看似无关却非常重要的概念：<span style="color: #ff0000">属性集的闭包</span>。<br />
令&#945;为一属性集。我们称在函数依赖集F下由&#945;函数确定的所有属性的集合为F下&#945;的闭包，记为&#945;+ 。<br />
下面给出一个计算&#945;+的算法，该算法的输入是函数依赖集F和属性集&#945;，输出存储在变量result中。<br />
算法一：<br />
result:=&#945;;<br />
while(result发生变化)do<br />
&nbsp;&nbsp;&nbsp; for each 函数依赖&#946;&#8594;&#947; in F do<br />
&nbsp;&nbsp;&nbsp; begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if &#946;&#8712;result then result:=result&#8746;&#947;;<br />
&nbsp;&nbsp;&nbsp; end</p>
<p>属性集闭包的计算有以下两个常用用途：<br />
&#183;判断&#945;是否为超码，通过计算&#945;+（&#945;在F下的闭包），看&#945;+ 是否包含了R中的所有属性。若是，则&#945;为R的超码。<br />
&#183;通过检验是否&#946;&#8712;&#945;+，来验证函数依赖是否成立。也就是说，用属性闭包计算&#945;+，看它是否包含&#946;。</p>
<p>（请原谅我用&#8712;符号来表示两个集合之间的包含关系，那个表示包含的符号我找不到，大家知道是什么意思就行了。）</p>
<p>看一个例子吧，2005年11月系分上午37题：</p>
<p><span style="color: #0000cd">● 给定关系R(A1，A2，A3，A4)上的函数依赖集F={A1&#8594;A2，A3&#8594;A2，A2&#8594;A3，A2&#8594;A4}，R的候选关键字为________。<br />
（37）A. A1 　B. A1A3 　C. A1A3A4 　D. A1A2A3</span></p>
<p>首先我们按照上面的算法计算A1+ 。<br />
result=A1，<br />
由于A1&#8594;A2，A1&#8712;result，所以result=result&#8746;A2=A1A2<br />
由于A2&#8594;A3，A2&#8712;result，所以result=result&#8746;A3=A1A2A3<br />
由于A2&#8594;A4，A2&#8712;result，所以result=result&#8746;A3=A1A2A3A4<br />
由于A3&#8594;A2，A3&#8712;result，所以result=result&#8746;A2=A1A2A3A4</p>
<p>通过计算我们看到，A1+ =result={A1A2A3A4}，所以A1是R的超码，理所当然是R的候选关键字。此题选A 。</p>
<div><br />
好了，有了前面的铺垫，我们进入正题。</div>
<br />
<div><span style="color: #ff0000">无损分解的判断</span>。<br />
如果R1&#8745;R2是R1或R2的超码，则R上的分解（R1，R2）是无损分解。这是一个充分条件，当所有的约束都是函数依赖时它才是必要条件（例如多值依赖就是一种非函数依赖的约束），不过这已经足够了。</div>
<div><br />
<span style="color: #ff0000">保持依赖的判断</span>。<br />
如果F上的每一个函数依赖都在其分解后的某一个关系上成立，则这个分解是保持依赖的（这是一个充分条件）。<br />
如果上述判断失败，并不能断言分解不是保持依赖的，还要使用下面的通用方法来做进一步判断。<br />
该方法的表述如下：<br />
算法二：<br />
对F上的每一个&#945;&#8594;&#946;使用下面的过程：<br />
result:=&#945;;<br />
while(result发生变化)do<br />
&nbsp;&nbsp;&nbsp; for each 分解后的Ri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=(result&#8745;Ri)+ &#8745;Ri<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result=result&#8746;t</div>
<div><br />
这里的属性闭包是在函数依赖集F下计算出来的。如果result中包含了&#946;的所有属性，则函数依赖&#945;&#8594;&#946;。分解是保持依赖的当且仅当上述过程中F的所有依赖都被保持。</div>
<br />
<br />
<div>下面给出一个例题，2006年5月系分上午43题：</div>
<p><span style="color: #0000cd">●设关系模式R&lt;U, F&gt;，其中U=｛A, B, C, D, E｝，F＝{A&#8594;BC，C&#8594;D，BC&#8594;E，E&#8594;A｝，则分解&#961;={R1（ABCE），R2（CD）｝满足 （43） 。<br />
（43） A．具有无损连接性、保持函数依赖<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B．不具有无损连接性、保持函数依赖<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C．具有无损连接性、不保持函数依赖<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D．不具有无损连接性、不保持函数依赖</span></p>
<div>先做无损链接的判断。R1&#8745;R2={C}，计算C+。</div>
<div>Result=C<br />
由于C&#8594;D，C&#8712;result，所以result=result&#8746;D=CD<br />
可见C是R2的超码，该分解是一个无损分解。</div>
<p>再做保持依赖的判断。<br />
A&#8594;BC，BC&#8594;E， E&#8594;A都在R1上成立（也就是说每一个函数依赖左右两边的属性都在R1中），C&#8594;D在R2上成立，因此给分解是保持依赖的。</p>
<p>选A。</p>
<p><br />
再看一个复杂点的例题。2007年5月数工40-41题。</p>
<p><span style="color: #0000cd">●给定关系模式R&lt;U, F&gt;，U=｛A, B, C, D, E｝，F＝{B&#8594;A，D&#8594;A，A&#8594;E，AC&#8594;B｝，其候选关键字为 <br />
（40）&nbsp; ，则分解&#961;={R1（ABCE），R2（CD）｝满足 （41） 。<br />
（40） A．ABD<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; B．ABE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C．ACD<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D．CD<br />
（41） A．具有无损连接性、保持函数依赖<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B．不具有无损连接性、保持函数依赖<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C．具有无损连接性、不保持函数依赖<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D．不具有无损连接性、不保持函数依赖</span></p>
<p>看见了吧，和前面一题多么的相像！<br />
对于第一问，分别计算ABCD四个选项的闭包，<br />
（ABD）+ = { ABDE }<br />
（ABE）+ = { ABE }<br />
（ACD）+ = { ABCDE }<br />
（CD）+ = { ABCDE }<br />
选D。</p>
<div>再看第二问。<br />
先做无损链接的判断。R1&#8745;R2={C}，计算C+。</div>
<div>result=C<br />
因此C既不是R1也不是R2的超码，该分解不具有无损分解性。</div>
<p>再做保持依赖的判断。<br />
B&#8594;A，A&#8594;E，AC&#8594;B在R1上成立，D&#8594;A在R1和R2上都不成立，因此需做进一步判断。<br />
由于B&#8594;A，A&#8594;E，AC&#8594;B都是被保持的（因为它们的元素都在R1中），因此我们要判断的是D&#8594;A是不是也被保持。</p>
<p>对于D&#8594;A应用算法二：<br />
result=D<br />
对R1，result&#8745;R1=ф（空集，找不到空集的符号，就用这个表示吧），t=ф，result=D<br />
再对R2，result&#8745;R2=D，D+ =ADE ，t=D+ &#8745;R2=D，result=D<br />
一个循环后result未发生变化，因此最后result=D，并未包含A，所以D&#8594;A未被保持，该分解不是保持依赖的。</p>
<div>选D。<br />
</div>
<img src ="http://www.blogjava.net/RiKeR/aggbug/153733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-18 00:53 <a href="http://www.blogjava.net/RiKeR/articles/153733.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PV顾客-收银员</title><link>http://www.blogjava.net/RiKeR/articles/153732.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 17 Oct 2007 16:52:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/153732.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153732.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/153732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153732.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#333333"><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">3</font></span></font><font color="#333333"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．在某超市里有一个收银员，且同时最多允许有</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">n</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个顾客购物，我们可以将顾客和收银员看成是两类不同的进程，且工作流程如下图所示。为了利用</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">PV</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作正确地协调这两类进程之间的工作，设置了三个信号量</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">S1</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">S2</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">Sn</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，且初值分别为</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">0</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">0</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">n</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。这样图中的</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">a</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应填写</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">__(1)__</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，图中的</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">b1</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">b2</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应分别填写</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">__(2)__</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，图中的</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">c1</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">c2</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应分别填写</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">__(3)__</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></font><font color="#333333"><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">&nbsp;<br />
<br />
<img style="width: 500px; cursor: pointer" onclick="javascript:window.open(this.src);" src="http://blog.flamesky.com/UploadFile/2006-9/921187159.jpg" onload="javascript:if(this.width  alt="" />500){this.resized=true;this.style.width=500;}" resized="true"><br />
<br />
</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#333333"><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman"><br />
</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">(1) A. P(S1) B</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S2) C</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(Sn) D</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span></font><font color="#333333"><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S1)<br />
<br />
</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">(2) A</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S2) B</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S1) C</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S2)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S1) D.V(S1)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span></font><font color="#333333"><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S2)<br />
<br />
</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">(3) A</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S1)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S2) B</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S1) C</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S2)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S1) D</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman"> V(S1)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span></font><font color="#333333"><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman"> P(S2)<br />
<br />
</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　答案：（</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">1</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">C </font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">2</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">D </font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">3</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span></font><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman"><font color="#333333">A</font><font color="#333333"><br />
<br />
</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　解析：这是一道考查</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">PV</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作的题，所以首先得弄清楚那些地方需要互斥、那些地方需要同步。题目中给出了两类进程：顾客进程与收银元进程，由于超市是顾客进程之间的公有资源，而且超市里限制最多允许有</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">n</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个顾客购物，所以要设置一个公有信号量</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">Sn</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，初值是</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">n</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，顾客进程在进入超市时要执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，离开超市时要执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作。顾客购物后要到收银员处付款，因此顾客进程与收银员进程之间是同步的关系，一次只允许一个顾客进程付款，整个超市只有一个收银员进程收费，所以需要为顾客进程设置一个私有信号量</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">S2</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，为收银员进程设置一个私有信号量</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">S1</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，由于开始时没有顾客去付款，收银员也没有收费，所以</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">S1</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">S2</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的初值为</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">0</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。当有顾客买完东西去付款时执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S1)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，通知收银员进程有顾客付款，此时收银员进程执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S1)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作后就可进入收费，收费完成后收银元进程执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(S2)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，以通知顾客收费完毕，此时顾客执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">P(S2)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就可离开收银台，在离开超市时需执行</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">V(Sn)</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，释放资源。</span></font><span lang="EN-US" style="font-size: 9pt; color: black"><br />
<br />
</span><font color="#333333"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　复习提示：</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">PV</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作在操作系统中处于很重要得地位，要想合适的运用</span><span lang="EN-US" style="font-size: 9pt; color: black"><font face="Times New Roman">PV</font></span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作，必须很好的理解进程之间的互斥与同步，即那些进程之间是互斥的，那些进程之间是同步的。</span></font></p>
<p><font color="#333333">&nbsp;</font></p>
<p><font color="#333333">&nbsp;</font></p>
<p><font color="#333333">2005年上半年程序员试题<br />
●某系统中有一个缓冲区，进程P1不断地生产产品送入缓冲区，进程P2不断地从缓冲区取产品消费。假设该缓冲区只能容纳一个产品。进程P1与P2的同步模型如下图所示： </font></p>
<p><font color="#333333">(这个图就是教程中常见的那个图)</font></p>
<p><font color="#333333">&nbsp;&nbsp;&nbsp; P1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; __|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __|<br />
&nbsp;|&nbsp; 生产一个产品&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; P(S2)<br />
&nbsp;|&nbsp; P(S1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 从缓冲区取一个产品<br />
&nbsp;|&nbsp; 产品送缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; V(S1)<br />
&nbsp;|&nbsp; V(S2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; 消费&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;|__|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |__|<br />
&nbsp;&nbsp; <br />
为此，应设信号量S1的初值为__(18)__，信号量S2的初值为__(19)__。<br />
(18)　A．-2 　　　　B．-1 　　　　C．0 　　　　D．1<br />
(19)　A．-2 　　　　B．-1 　　　　C．0 　　　　D．1<br />
答案：(18)D (19)C</font></p>
<p><font color="#333333">分析：</font></p>
<p><font color="#333333">资源S是这个资源初始状态拥有的数目，也就是没有任何操作，刚开始的时候资源的可用数。<br />
简单的例子，一个盘子可以放8个苹果，一次只能一个人拿一个苹果或者放一个苹果，则设置两个资源S1、S2分别表示盘子中苹果的数量和取放苹果的许可，则S1初始值为8，S2为1。</font></p>
<p><font color="#333333">以下一定要记住：<br />
P操作<br />
S = S-1<br />
S&lt;0 阻塞</font></p>
<p><font color="#333333">V操作<br />
S= S+1<br />
S 〈=0&nbsp; 唤醒</font></p>
<p><font color="#333333">S1、S2分别是P1、P2对缓冲区操作的开关，S1=1表示初始状态P1进程可以对缓冲区进行操作，而对于S2=0正好阻止了P2进程对缓冲区的操作！在刚开始的时候缓冲区为空，其允许P1在其中放入产品，但不能让P2取出产品，所以才产生这样的结果</font></p>
<p><font color="#333333">&nbsp;P一次什么什么就减一个。如果你P的玩意是0.那P下面的东西就不开工了。<br />
V 一次什么就加一次<br />
&nbsp;<br />
这个同步有s1 s2.<br />
s1肯定是为1的。缓冲区可以放几个东西就应该是几.<br />
你P了p1 一次以后。 代表向缓冲区里放了东西。s1 = 0了。表示缓冲区不能放东西了。进程时并行了。假设这句执行完了后跳到第二个程序中去。是p(s2) 刚肯定不行。所以s2一定要为初始要为0. 要等待第一个放进缓冲区的事做完后V(s2)把s2标志位搞醒</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="main"><font color="#333333">●某仓库有两名发货员，一名审核员。当顾客提货时，只要发货员空闲,允许顾客进入仓库提货，顾客离开时，审核员检验顾客提货是否正确。其工作流程如下图所示。为了利用PV操作正确地协调他们之间的工作，设置了两个信号量S1和S2，且S1的初值为2，S2的初值为1。图中的a应填写____(25)___；图中的b、c和d应分别填写____(26)____。<br />
&nbsp;</font></p>
<p class="main"><img style="cursor: pointer" onclick="javascript:window.open(this.src);" src="http://blog.flamesky.com/UploadFile/2006-9/921585194.jpg" onload="javascript:if(this.width  alt="" />500){this.resized=true;this.style.width=500;}"><br />
<br />
&nbsp;<br />
<font color="#333333">供选择的答案：<br />
(25)A.P(S1)　　　　　 B.P(S2) 　　　　　C.V(S1) 　　　　　D.V(S2)<br />
(26)A.P(S2)、V（S2）和V（S1） 　　　　B.P（S1）、V（S1）和V（S2）<br />
　　C.V（S1）、P(S2)和V(S2)　　　　　 D.V（S2）、P（S1）和V（S1）</font></p>
<p class="main"><font color="#333333">分析：</font></p>
<p class="main"><font color="#333333">顾客来了,要看看是否有发货员.即发货员资源是否存在.<br />
所以用P(S1)&nbsp;&nbsp; 若S1&gt;0表示,存在(无论多少)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若S1&lt;=0表示,不存在,进程阻塞.</font></p>
<p class="main"><font color="#333333">提完货.这说明,肯定用发货员了.肯定还有人等着提货.这时,应该释放发货员.<br />
所以用V(S1)</font></p>
<p class="main"><font color="#333333">然后,要审货.<br />
可能有人正在审呢,所以用P(S2)意思和上面相同.<br />
审完货.要释放,可能有人正等着审呢.所以用V(S2)释放审货员.<br />
完毕.<br />
</font></p>
<p>&nbsp;</p>
<p align="center"><strong><font color="#0000ff" size="6">PV原语实现进程间互斥与同步</font></strong>&nbsp;
<p><strong>PV原语的含义</strong><br />
　　P操作和V操作是不可中断的程序段，称为原语。PV原语及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的。信号量sem是一整数，sem大于等于零时代表可供并发进程使用的资源实体数，但sem小于零时则表示正在等待使用临界区的进程数。<br />
　　P原语操作的动作是：<br />
　　（1）sem减1；<br />
　　（2）若sem减1后仍大于或等于零，则进程继续执行；<br />
　　（3）若sem减1后小于零，则该进程被阻塞后进入与该信号相对应的队列中，然后转进程调度。<br />
　　V原语操作的动作是：<br />
　　（1）sem加1；<br />
　　（2）若相加结果大于零，则进程继续执行；<br />
　　（3）若相加结果小于或等于零，则从该信号的等待队列中唤醒一等待进程，然后再返回原进程继续执行或转进程调度。<br />
　　PV操作对于每一个进程来说，都只能进行一次，而且必须成对使用。在PV原语执行期间不允许有中断的发生。<br />
<strong>用PV原语实现进程的互斥</strong><br />
　　由于用于互斥的信号量sem与所有的并发进程有关，所以称之为公有信号量。公有信号量的值反映了公有资源的数量。只要把临界区置于P(sem)和V(sem)之间，即可实现进程间的互斥。就象火车中的每节车厢只有一个卫生间，该车厢的所有旅客共享这个公有资源：卫生间，所以旅客间必须互斥进入卫生间，只要把卫生间放在P(sem)和V(sem)之间，就可以到达互斥的效果。以下例子说明进程的互斥实现。<br />
　　<strong>例1</strong><br />
　　生产围棋的工人不小心把相等数量的黑子和白子混装载一个箱子里，现要用自动分拣系统把黑子和白子分开，该系统由两个并发执行的进程组成，功能如下：<br />
　　（1）进程A专门拣黑子，进程B专门拣白子；<br />
　　（2）每个进程每次只拣一个子，当一个进程在拣子时不允许另一个进程去拣子；<br />
　　<strong>分析：</strong><br />
　　第一步：确定进程间的关系。由功能（2）可知进程之间是互斥的关系。<br />
　　第二步：确定信号量及其值。由于进程A和进程B要互斥进入箱子去拣棋子，箱子是两个进程的公有资源，所以设置一个信号量s，其值取决于公有资源的数目，由于箱子只有一个，s的初值就设为1。<br />
　　<strong>实现：</strong><br />
　　begin<br />
　　s:semaphore;<br />
　　s:=1;<br />
　　　cobegin<br />
　　　　process A<br />
　　　　begin<br />
　　　　L1: P(s);<br />
　　　　　拣黑子；<br />
　　　　　V(s);<br />
　　　　　goto L1;<br />
　　　　end; <br />
　　　　process B<br />
　　　　begin<br />
　　　　L2:P(s);<br />
　　　　　拣白子；<br />
　　　　　V(s);<br />
　　　　　goto L2;<br />
　　　　end;<br />
　　　coend;<br />
　　end;<br />
　　判断进程间是否互斥，关键是看进程间是否共享某一公有资源，一个公有资源与一个信号量相对应。确定信号量的值是一个关键点，它代表了可用资源实体数。如下实例：<br />
　　<strong>例2<br />
</strong>　　某车站售票厅，任何时刻最多可容纳20名购票者进入，当售票厅中少于20名购票者时，厅外的购票者可立即进入，否则需要在外面等待。每个购票者可看成一个进程。<br />
　　分析：第一步：确定进程间的关系。售票厅是各进程共享的公有资源，当售票厅中多于20名购票者时，厅外的购票者需要在外面等待。所以进程间是互斥的关系。第二步：确定信号量及其值。只有一个公有资源：售票厅，所以设置一个信号量s。售票厅最多容纳20个进程，即可用资源实体数为20，s的初值就设为20。<br />
　　<strong>实现：<br />
</strong>　　begin <br />
　　s:semaphore;<br />
　　s:=20;<br />
　　cobegin<br />
　　　process PI(I=1,2,&#8230;&#8230;)<br />
　　　　begin P(s);<br />
　　　　　进入售票厅；<br />
　　　　　购票；<br />
　　　　　退出；<br />
　　　　　V(s);<br />
　　　　end;<br />
　　　coend<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当购票者进入售票厅前要执行P(s)操作，执行后若s大于或等于零，说明售票厅的人数还未满可进入。执行后若s小于零，则说明售票厅的人数已满不能进入。这个实现中同时最多允许20个进程进入售票厅购票，其余进程只能等待。<br />
<strong>用PV原语实现进程的同步</strong><br />
　　与进程互斥不同，进程同步时的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关，所以称该信号量为私有信号量。利用PV原语实现进程同步的方法是：首先判断进程间的关系为同步的，且为各并发进程设置私有信号量，然后为私有信号量赋初值，最后利用PV原语和私有信号量规定各进程的执行顺序。下面我们将例1增添一个条件，使其成为进程间是同步的。<br />
　　<strong>例3<br />
</strong>　　在例1的基础之上再添加一个功能：<br />
　　（3）当一个进程拣了一个棋子（黑子或白子）以后，必让另一个进程拣一个棋子（黑子或白子）。<br />
　　<strong>分析：<br />
</strong>　　第一步：确定进程间的关系。由功能（1）（2）（3）可知，进程间的关系为同步关系。第二步：确定信号量及其值。进程A和B共享箱子这个公有资源，但规定两个进程必须轮流去取不同色的棋子，因而相互间要互通消息。对于进程A可设置一个私有信号量s1，该私有信号量用于判断进程A是否能去拣黑子，初值为1。对于进程B同样设置一个私有信号量s2，该私有信号量用于判断进程B是否能去拣白子，初值为0。当然你也可以设置s1初值为0，s2初值为1。<br />
　　<strong>实现:</strong><br />
　　begin<br />
　　s1,s2:semaphore;<br />
　　s1:=1;s2:=0;<br />
　　cobegin<br />
　　　process A<br />
　　　begin<br />
　　　L1: P(s1);<br />
　　　　拣黑子；<br />
　　　　V(s2);<br />
　　　　goto L1;<br />
　　　end;&nbsp;&nbsp;&nbsp; <br />
　　　process B<br />
　　　begin<br />
　　　L2:P(s2);<br />
　　　　拣白子；<br />
　　　　V(s1);<br />
　　　　goto L2;<br />
　　　end;<br />
　　coend;<br />
　　end;<br />
　　另外一个问题就是P原语是不是一定在V原语的前面？回答是否定的。下面看一个例子。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>例4</strong><br />
　　设在公共汽车上，司机和售票员的活动分别是：司机：启动车辆，正常行车，到站停车。售票员：上乘客，关车门，售票，开车门，下乘客。用PV操作对其控制。<br />
　　<strong>分析：</strong><br />
　　第一步：确定进程间的关系。司机到站停车后，售票员方可工作。同样，售票员关车门后，司机才能工作。所以司机与售票员之间是一种同步关系。<br />
　　第二步：确定信号量及其值。由于司机与售票员之间要互通消息，司机进程设置一个私有信号量run，用于判断司机能否进行工作，初值为0。售票员进程设置一个私有信号量stop，用于判断是否停车，售票员是否能够开车门，初值为0。<br />
　　实现：<br />
　　begin stop ,run:semaphore<br />
　　stop:=0;run:=0;<br />
　　cobegin<br />
　　　driver: begin<br />
　　　L1: P(run);<br />
　　　　启动车辆；<br />
　　　　正常行车；<br />
　　　　到站停车；<br />
　　　　 V(stop);<br />
　　　　goto&nbsp; L1;<br />
　　　end;<br />
　　　conductor:begin<br />
　　　L2:上乘客；<br />
　　　　关车门；<br />
　　　　V(run);<br />
　　　　售票；<br />
　　　　P(stop);<br />
　　　　开车门；<br />
　　　　下乘客；<br />
　　　　goto L2;<br />
　　　end;<br />
　　　coend;<br />
　　end;<br />
　　用PV操作还可以实现进程同步与互斥的混合问题，典型的如：多个生产者和多个消费者共享容量为n的缓存区。这个例子在很多书中都有介绍，在这里就不说了。</p>
<img src ="http://www.blogjava.net/RiKeR/aggbug/153732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-18 00:52 <a href="http://www.blogjava.net/RiKeR/articles/153732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序设计、软件开发之学习方法，指导思想</title><link>http://www.blogjava.net/RiKeR/articles/153731.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 17 Oct 2007 16:48:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/153731.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153731.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/153731.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153731.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153731.html</trackback:ping><description><![CDATA[&nbsp; <strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">强调动手，强调实践</span><span lang="EN-US"><o:p></o:p></span></strong>
<ul style="margin-top: 0cm" type="square">
    <ul style="margin-top: 0cm" type="square">
        <li class="MsoNormal" style="mso-list: l2 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只有通过大量的实践才能不断的培养编程感觉</span></li>
        <li class="MsoNormal" style="mso-list: l2 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编程是有感觉的，就好象英语阅读一样，是有语感的</span></li>
        <li class="MsoNormal" style="mso-list: l2 level2 lfo1; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每天都要编写代码，不断培养编程感觉</span></li>
    </ul>
</ul>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过实践来增强对理论的理解</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<ul style="margin-top: 0cm" type="square">
    <ul style="margin-top: 0cm" type="square">
        <li class="MsoNormal" style="mso-list: l0 level2 lfo2; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">没有实践的理论是空虚的理论</span></li>
        <li class="MsoNormal" style="mso-list: l0 level2 lfo2; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">没有理论的实践是盲目的实践</span></li>
        <li class="MsoNormal" style="mso-list: l0 level2 lfo2; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实践是检验真理的唯一标准</span></li>
    </ul>
</ul>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">打破同学以往在程序设计学习中存在的误区</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<ul style="margin-top: 0cm" type="square">
    <ul style="margin-top: 0cm" type="square">
        <li class="MsoNormal" style="mso-list: l1 level2 lfo3; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区一：注重理论，轻视实践：学习新知识前想把关于这方面的理论全部掌握后再去实践，<strong>大错特错</strong></span><strong><span lang="EN-US"><o:p></o:p></span></strong></li>
        <li class="MsoNormal" style="mso-list: l1 level2 lfo3; tab-stops: list 72.0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：在<span style="background: yellow; mso-highlight: yellow">了解</span>理论后，就<span style="background: yellow; mso-highlight: yellow">立即</span>去实践，实践驱动理论的学习，这样掌握理论才更加扎实，不容易忘记</span></li>
    </ul>
</ul>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区二：不善于做笔记，不善于总结。</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：人总是有忘性的，今天记得很牢的东西，过一星期也许就完全忘记了，用笔记下来，好记性不如烂笔头，不要太相信自己的记忆</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><o:p>&nbsp;</o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区三：不善于思考，遇到问题首先想到问别人</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：勤于思考，在学习的道路上会遇到大量问题，这些遇到的问题是你的宝贵财富。遇到问题时首先想为什么会出现该错误，尤其在程序中，应该学会看错误提示，根据提示去寻找错误的根源，实在不行再去问同学，问老师</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><o:p>&nbsp;</o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">因为自己寻找错误的过程是最好的学习过程，这个错误一旦被自己解决掉，首先得到的是极大的满足感，另外会留下深刻的印象，这是看书所得不到的，有过这种经历的同学才会有这种体会。即使没有解决也会从这个过程中学到很多东西，这种感觉是：只可意会，不可言传。</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区四：容易骄傲，以为自己会点技术就得意起来</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：做人要谦虚，学习程序设计更要谦虚。要知道山外有山，人外有人，只有谦虚才会督促自己不断的去学习，编程水平的提高才会一点点上去的</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区五：没有耐心，怕麻烦，思考时间不够长</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：没有耐心是写不好程序的，写程序是不仅是知识的体现，更是耐心与毅力的体现，任何程序开始都会有错误的，耐心寻找错误体现一个人的编程素养。要多思考，多去想，<span style="background: yellow; mso-highlight: yellow">脑子越用越灵</span></span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区六：<span style="background: yellow; mso-highlight: yellow">想慢慢学好技术，一步一个脚印，踏踏实实，严重错误</span></span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：技术的发展日新月异，尤其在软件方面。学习一门新的技术，开始时不必面面俱到，先把</span><span lang="EN-US">hello world</span></strong><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">写出来再说，<span style="background: yellow; mso-highlight: yellow">要&#8220;趁热打铁&#8221;，会的东西，仔细看；不会的东西，硬着头皮去看，实在不行就跳过。</span></span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">误区七：不看英文，只看中文</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解决方法：很多帮助文件，比如最重要的</span><span lang="EN-US">JDK</span></strong><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帮助文件都是英文的，只有习惯看英文才能进步快，中文的翻译很多都是文不对题，看了还不如不看，看英文虽然慢，可是过了不久，你就会发现英文也没那么难懂</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实践，实践，还是实践</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即使书上有代码，也要把它敲出来，敲代码也是有感觉的</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看明白</span> </strong><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">！</span><span lang="EN-US">= </span></strong><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">运行出来，是两个概念</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US"><o:p>&nbsp;</o:p></span></strong></p>
<p class="MsoNormal"><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">希望大家在每次学习后都能有质的提高，而不仅仅学会了一些新技术，更要学会程序设计的一般方法，一般思想。也许你工作后未必从事</span><span lang="EN-US">J2EE</span></strong><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或者</span><span lang="EN-US">.NET</span></strong><strong><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相关的工作，但是掌握了学习的方法，学习任何其他的技术都不是什么难事</span><span lang="EN-US"><o:p></o:p></span></strong></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/153731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-18 00:48 <a href="http://www.blogjava.net/RiKeR/articles/153731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML查缺补漏</title><link>http://www.blogjava.net/RiKeR/articles/153701.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 17 Oct 2007 14:18:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/153701.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153701.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/153701.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153701.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153701.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;HTML &amp; JavaScriptq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有三种类型的链接路径：q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 绝对路径（例如 http://www.sohu.com/index.html）q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文档相对路径（例如 adver/con...&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/articles/153701.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/153701.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-17 22:18 <a href="http://www.blogjava.net/RiKeR/articles/153701.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2005年11月软件设计师下午试题精析</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/17/153698.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 17 Oct 2007 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/17/153698.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153698.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/17/153698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153698.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这份，有时间多看看。多感悟一下！&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/17/153698.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/153698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-17 22:13 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/17/153698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2005年11月软件设计师上午试题</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/17/153580.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Wed, 17 Oct 2007 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/17/153580.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153580.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/17/153580.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153580.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 又有进步了，嗬嗬。weLL DoNe!!&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/17/153580.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/153580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-17 15:14 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/17/153580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006年5月软件设计师下午试题精解</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/16/153395.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Tue, 16 Oct 2007 14:45:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/16/153395.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153395.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/16/153395.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153395.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天效率蛮高的，质量也还不错。继续努力，HOHO&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/16/153395.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/153395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-16 22:45 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/16/153395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006年5月软件设计师上午试题</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/15/153100.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Mon, 15 Oct 2007 13:38:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/15/153100.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/153100.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/15/153100.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/153100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/153100.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 现在起，一定要仔细消化错题。有些题目实在是非常不应该错！质量第一！理解的感觉最好！！&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/15/153100.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/153100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-15 21:38 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/15/153100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006年11月软件设计师下午试题精析</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/15/152833.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sun, 14 Oct 2007 22:18:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/15/152833.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/152833.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/15/152833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/152833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/152833.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 万事开头难，这是我的第一份试卷分析。接下去我要分析更多份。&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/15/152833.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/152833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-15 06:18 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/15/152833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何当好班长？</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/14/152718.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sun, 14 Oct 2007 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/14/152718.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/152718.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/14/152718.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/152718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/152718.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 千万别拿自己当班长看，把自己的位置放得低一些~~~<br>1、以身作则，如果连自己都做不好，还怎么当班长？ &nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/14/152718.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/152718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-14 14:37 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/14/152718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006年11月软件设计师上午试题</title><link>http://www.blogjava.net/RiKeR/archive/2007/10/12/152184.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Thu, 11 Oct 2007 16:00:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/archive/2007/10/12/152184.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/152184.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/archive/2007/10/12/152184.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/152184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/152184.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 好久没回来了，昨天宿舍装了宽带。今天起，正式回到软考备战中来了，离11月3日，只剩下22天了。努力，高质量得尽可能多做几份历年卷子。我行的！我一定能行！！&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/archive/2007/10/12/152184.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/152184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-10-12 00:00 <a href="http://www.blogjava.net/RiKeR/archive/2007/10/12/152184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于WebWork的认识与思考</title><link>http://www.blogjava.net/RiKeR/articles/webwork.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Tue, 28 Aug 2007 16:39:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/webwork.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/140710.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/webwork.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/140710.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/140710.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">WebWork</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">是一个<span lang=EN-US>Java web-application</span>开发框架<span lang=EN-US>(development framework). </span>它专注于提高开发者的生产效率并简化代码<span lang=EN-US>. WebWork</span>构建在<span lang=EN-US>XWork</span>之上<span lang=EN-US>.<o:p></o:p></span></span></p>
<p style="TEXT-INDENT: 24pt"><font face=宋体><span lang=EN-US>WebWork</span>是由<span lang=EN-US>OpenSymphony</span>组织开发的，致力于组件化和代码重用的拉出式<span lang=EN-US>MVC</span>模式<span lang=EN-US>J2EE Web</span>框架。<span lang=EN-US>WebWork</span>目前最新版本是<span lang=EN-US>2.2</span>，现在的<span lang=EN-US>WebWork2.x</span>前身是<span lang=EN-US>Rickard Oberg</span>开发的<span lang=EN-US>WebWork</span>，但现在<span lang=EN-US>WebWork</span>已经被拆分成了<span lang=EN-US>Xwork1</span>和<span lang=EN-US>WebWork2</span>两个项目。<span lang=EN-US>Xwork</span>简洁、灵活功能强大，它是一个标准的<span lang=EN-US>Command</span>模式实现，并且完全从<span lang=EN-US>web</span>层脱离出来。<span lang=EN-US>Xwork</span>提供了很多核心功能：前端拦截机（<span lang=EN-US>interceptor</span>），运行时表单属性验证，类型转换，强大的表达式语言（<span lang=EN-US>OGNL &#8211; the Object Graph Notation Language</span>），<span lang=EN-US>IoC</span>（<span lang=EN-US>Inversion of Control</span>倒置控制）容器等。<span lang=EN-US> </span></font></p>
<p style="TEXT-INDENT: 24pt"><font face=宋体><span lang=EN-US>WebWork2</span>建立在<span lang=EN-US>Xwork</span>之上，处理<span lang=EN-US>HTTP</span>的响应和请求。<span lang=EN-US>WebWork2</span>使用<span lang=EN-US>ServletDispatcher</span>将<span lang=EN-US>HTTP</span>请求的变成<span lang=EN-US>Action(</span>业务层<span lang=EN-US>Action</span>类<span lang=EN-US>), session</span>（会话）<span lang=EN-US>application</span>（应用程序）范围的映射，<span lang=EN-US>request</span>请求参数映射。<span lang=EN-US>WebWork2</span>支持多视图表示，视图部分可以使用<span lang=EN-US>JSP, Velocity, FreeMarker, JasperReports</span>，<span lang=EN-US>XML</span>等</font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id=_x0000_i1025 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">XWork</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">提供了普通的<span lang=EN-US>(generic)</span>命令模式<span lang=EN-US>(command&nbsp;pattern)</span>框架<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1026 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">同时也是一个反转控制<span lang=EN-US>(Inversion&nbsp;of&nbsp;Control,&nbsp;IoC)</span>容器<span lang=EN-US>.</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">除了上述特性外<span lang=EN-US>, WebWork</span>还为其它功能如<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1027 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">创建可复用的用户界面模版<span lang=EN-US>(UI&nbsp;template)<br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1028 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">表单<span lang=EN-US>(form)</span>控制<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1029 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">用户界面主题<span lang=EN-US>(UI&nbsp;theme)<br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">4</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1030 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">国际化<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">5</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1031 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">表单参数与<span lang=EN-US>JavaBean</span>的动态映射<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">6</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1032 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">健壮的客户端及服务器端校验<span lang=EN-US>(validation)</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 12pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">提供了强有力的支持<span lang=EN-US>. <o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">WebWork 2 : </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">什么是<span lang=EN-US>WebWork <br><br>WebWork</span>是一个强大的基于<span lang=EN-US>Web</span>的<strong><span lang=EN-US style="COLOR: blue">MVC</span><span style="COLOR: blue">框架</span></strong><span lang=EN-US>, </span>它构建在一个命令模式框架<span lang=EN-US>XWork</span>之上<span lang=EN-US>. WebWork</span>的特性包括<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shape id=_x0000_i1033 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">1</span> <span style="COLOR: black">&nbsp;</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：用于处理或代理<span lang=EN-US>&nbsp;</span>请求的分发器<span lang=EN-US>(Dispatcher)<br><v:shape id=_x0000_i1034 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1035 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>2</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black">&nbsp;</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：支持多种视图技术<span lang=EN-US>(JSP,&nbsp;Velocity,&nbsp;JasperReports,&nbsp;XML,&nbsp;FreeMarker)</span>的结果类型<span lang=EN-US><br><v:shape id=_x0000_i1036 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1037 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>3</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black">&nbsp;</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：一个小而强大的<span lang=EN-US>JSP</span>标签库和<span lang=EN-US>Velocity</span>宏定义<span lang=EN-US><br><v:shape id=_x0000_i1038 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1039 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>4</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black">&nbsp;</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：分发器调用<span lang=EN-US>XWork</span>活动来访问和操作模型<span lang=EN-US>(Model)</span>并为视图显示模型数据提供方便的途径<span lang=EN-US>.</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;WebWork</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">真正的优势在于它强调简洁和协作能力的根本理念<span lang=EN-US>. </span>使用<span lang=EN-US>WebWork</span>将有助于<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shape id=_x0000_i1040 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">1</span> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：最小化代码<span lang=EN-US><br><v:shape id=_x0000_i1041 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1042 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>2</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：允许开发人员更多的关注业务逻辑<span lang=EN-US>(business&nbsp;logic)</span>和建模<span lang=EN-US>(modeling)<br><v:shape id=_x0000_i1043 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1044 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>3</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：不是诸如编写<span lang=EN-US>Servlet</span>之类的事情<span lang=EN-US>.&nbsp;</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">一 ：特性<span lang=EN-US> <o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1 </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：灵活的校验<span lang=EN-US>(validation)</span>框架<span lang=EN-US>, </span>允许使用<span lang=EN-US>XML</span>文件定义校验并通过截取器<span lang=EN-US>(Interceptor)</span>在运行时自动应用到活动类<span lang=EN-US>(Action class), </span>从而达到校验与活动类之间的完全解藕<span lang=EN-US>(decoupled). </span>新版本还支持客户端校验<span lang=EN-US>.&nbsp;<br><br>2 </span>：类型转化<span lang=EN-US>(Type conversion)</span>可以很容易的将对象从一个类转换成另一个类型。<span lang=EN-US><br>&nbsp;<br>3 </span>：强大的表达式语言<span lang=EN-US>(Expression Language, EL)</span>建立在<span lang=EN-US>OGNL</span>基础之上<span lang=EN-US>, </span><span style="COLOR: black">允许<span lang=EN-US>:</span></span><span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1045 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">遍历动态对象图<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1046 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">执行对象方法<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1047 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">使用值栈<span lang=EN-US>(ValueStack)</span>实现对多个<span lang=EN-US>JavaBean</span>属性的透明访问<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">4</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1048 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>Webwork</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">也可以使用<span lang=EN-US>JSTL.&nbsp;</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">4&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：使用反转控制<span lang=EN-US>(Inversion of Control, IoC)</span>管理<u>组件<span lang=EN-US>(component)</span>生命周期</u>和<u>依赖关系</u><span lang=EN-US>, </span>不需要编写注册类创建组件<span lang=EN-US>, </span>组件客户也不需要主动获取组件实例<span lang=EN-US>(instance).&nbsp;<br><br>5&nbsp;</span>：<span lang=EN-US>Velocity</span>模版<span lang=EN-US>, </span>使得开发人员可以很容易的定制<span lang=EN-US>Web</span>页面的外观<span lang=EN-US>(look &amp; feel).&nbsp;<br><br>6&nbsp;</span>：截取器<span lang=EN-US>(Interceptors)</span>可以动态截取活动<span lang=EN-US>(Action)</span>执行前后的处理过程<span lang=EN-US>, </span>这<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1049 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">简化了活动的代码<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1050 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">提高了代码复用能力</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">7&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：支持国际化<span lang=EN-US>(I18n).&nbsp;<br><br>8&nbsp;</span>：可以方便的与其他第三方软件集成<span lang=EN-US>, </span>包括<span lang=EN-US>Hibernate, Spring, Pico, Sitemesh.&nbsp;<br><br>9&nbsp;</span>：支持多种视图技术如<span lang=EN-US>:&nbsp;<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1051 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">JSP<br></span><span style="COLOR: teal">2</span> <span style="COLOR: black"><v:shape id=_x0000_i1052 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>Velocity<br></span><span style="COLOR: teal">3</span> <span style="COLOR: black"><v:shape id=_x0000_i1053 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>FreeMarker<br></span><span style="COLOR: teal">4</span> <span style="COLOR: black"><v:shape id=_x0000_i1054 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>JasperReports<br></span><span style="COLOR: teal">5</span> <span style="COLOR: black"><v:shape id=_x0000_i1055 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>XML</span> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br>10&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：<u>使用包</u><span lang=EN-US>(Packages)</span>和<u>名空间</u><span lang=EN-US>(Namespaces)</span>管理数以百计的活动<span lang=EN-US>.&nbsp;<br><br><br></span>二 ：背景与目的<span lang=EN-US> <br>WebWork</span>是一个开放源代码项目<span lang=EN-US>, </span>目标是为在短时间内构建复杂网站提供易于理解和维护的工具及开发框架<span lang=EN-US>. Java</span>是一个平台以及基于该平台的语言<span lang=EN-US>, </span>尽管他支持<span lang=EN-US>although it supports many others as the language in which systems are built, such as JavaScript and XML.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">WebWork</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">在构架上基于最佳实践和那些已被证实有价值的设计模式<span lang=EN-US>. </span>它还基于一个强烈的动机<span lang=EN-US>: </span>尽可能的简单<span lang=EN-US>, </span>并具有维护上的灵活性<span lang=EN-US>(</span>这实际上是一个困难的平衡<span lang=EN-US>).<br><br></span>它也鼓励用户使用恰当的<span lang=EN-US>, </span>符合需要的方式工作<span lang=EN-US>. [It also encourages you, as a user, to do things the way you seem fit for your needs.] <strong><span style="COLOR: blue">WebWork</span></strong></span><strong><span style="COLOR: blue">能以多种方式配置和使用</span></strong><span lang=EN-US>, </span>哪种方式更适合于你依赖于使用环境<span lang=EN-US>. </span>下面是一个例子<span lang=EN-US>, WebWork</span>支持多种不同的<span lang=EN-US>HTML</span>生成技术如<span lang=EN-US>:<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1056 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">JSP<br></span><span style="COLOR: teal">2</span> <span style="COLOR: black"><v:shape id=_x0000_i1057 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>Velocity</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模版引擎<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1058 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>XSLT</span> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">它们之间在理念上和技术上都存在很大的差别<span lang=EN-US>, </span>但都能为<span lang=EN-US>WebWork</span>所用<span lang=EN-US>, </span>同时<span lang=EN-US>, </span>不同的用户确实需要这些不同的方式<span lang=EN-US>. "</span>你不能那么做<span lang=EN-US>"</span>是我们尽可能避免的一句话<span lang=EN-US>, </span>而<span lang=EN-US>"</span>我们不能<span lang=EN-US>"</span>往往是因为有另一个更好<span lang=EN-US>, </span>更适合的工具<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">三<span lang=EN-US>&nbsp;</span>：<span lang=EN-US>WebWork</span>对<span lang=EN-US>MVC Model-1</span>和<span lang=EN-US>Model-2</span>的支持<span lang=EN-US> <br><br>Web</span>应用开发框架的最重要的一个任务是支持<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1059 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">逻辑<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1060 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">内容<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1061 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">表现</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">相分离的理念<span lang=EN-US>. </span>如果没有做到这一点<span lang=EN-US>, </span>通常会导致维护上的问题<span lang=EN-US>, </span>如果开发团队结构复杂<span lang=EN-US>(</span></span><span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">因为每一个团队成员通常只负责应用的某一方面<span lang=EN-US>(aspect)</span></span><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">), </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">还会使应用的开发变得更加困难<span lang=EN-US>. </span>达到分离目的的一般方法是采用<span lang=EN-US>MVC(Model-View-Controller)</span>设计模式<span lang=EN-US>. </span>该模式鼓励使用分离的代码来处理：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1062 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模型<span lang=EN-US>(model,&nbsp;</span>即</span><span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> </span><span style="COLOR: black">业务逻辑</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">)<br></span><span style="COLOR: teal">2</span> <span style="COLOR: black"><v:shape id=_x0000_i1063 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="COLOR: black">控制器<span lang=EN-US>(controller,&nbsp;</span>即</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> </span><span style="COLOR: black">应用逻辑</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">)<br></span><span style="COLOR: teal">3</span> <span style="COLOR: black"><v:shape id=_x0000_i1064 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="COLOR: black">视图<span lang=EN-US>(view).&nbsp;</span></span><span lang=EN-US> <o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">这样分离之后<span lang=EN-US>, </span>下一个问题是<span lang=EN-US>: <o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shape id=_x0000_i1065 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">控制器的代码与表现部分如何交互</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">有两种常用的设计模型可以做到这一点<span lang=EN-US>, </span>它们分别被称为<span lang=EN-US>Model-1</span>和<span lang=EN-US>Model-2. </span>这两种模型将在下文描述<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Model-1 </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：<span lang=EN-US><br>Model-1</span>方式的基本想法是在表示层<span lang=EN-US>(presentation layer)</span>如<span lang=EN-US>JSP</span>或模版中调用控制器代码<span lang=EN-US>. </span>如果你正在使用<span lang=EN-US>JSP, </span>这意味着你可以通过两种方式执行你的<span lang=EN-US>WebWork</span>活动：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1066 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">使用</span><span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">webwork:action</span> <span style="COLOR: black">"</span> </span><span style="COLOR: black">标签调用执行<span lang=EN-US><br></span></span><span lang=EN-US style="COLOR: teal">2</span><span lang=EN-US> <span style="COLOR: black"><v:shape id=_x0000_i1067 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="COLOR: black">使用</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">webwork:bean</span> <span style="COLOR: black">"</span> </span><span style="COLOR: black">标签像调用<span lang=EN-US>JavaBeans</span>一样执行活动<span lang=EN-US>.</span></span><span lang=EN-US> <span style="COLOR: black"><v:shape id=_x0000_i1068 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Model-2 </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：<span lang=EN-US><br></span>在<span lang=EN-US>Model-2</span>方式中<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1069 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">哪些代码调用控制器<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1070 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">哪些视图进行展示</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">由第三方决定<span lang=EN-US>, </span>通常是一个<span lang=EN-US>servlet</span>分发器<span lang=EN-US>. </span>分发器解码<strong><span lang=EN-US style="COLOR: blue">HTTP</span><span style="COLOR: blue">请求中的<span lang=EN-US>URL</span></span></strong><span lang=EN-US>, </span>然后决定执行哪些代码<span lang=EN-US>. </span>一个包含控制器代码的<span lang=EN-US>Java</span>对象被获取并执行<span lang=EN-US>, </span>从而完成对某个应用逻辑和业务逻辑的处理<span lang=EN-US>. </span>当执行结束后<span lang=EN-US>, </span>分发器将请求转交<span lang=EN-US>(forward)</span>给一个视图处理器<span lang=EN-US>(</span>如一个<span lang=EN-US>JSP), </span>它使用前一个处理的数据绘制结果视图<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">四<span lang=EN-US>&nbsp;</span>：如何选择使用<span lang=EN-US>?<br></span>由于<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">1</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <v:shape id=_x0000_i1071 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">控制器逻辑<span lang=EN-US><br></span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; COLOR: teal; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black"><v:shape id=_x0000_i1072 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">表现生成</span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">完全解藕<span lang=EN-US>, </span>使得根据执行情况来显示不同结果页面成为可能<span lang=EN-US>. </span>例如<span lang=EN-US>, </span>如果处理出现错误就可以显示一个错误页面而不显示正常的结果页面<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Model-1</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">方式的优点如下<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shape id=_x0000_i1073 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">1</span> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：不需要建立代码与表示之间的映射关系<span lang=EN-US>.&nbsp;<br><v:shape id=_x0000_i1074 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>2</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：易于察看<span lang=EN-US>JSP</span>或模版中执行了哪些代码<span lang=EN-US>.&nbsp;<br><v:shape id=_x0000_i1075 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>3</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：如果页面中的一部分要求某个处理过程只允许成功<span lang=EN-US>(</span>否则系统失灵<span lang=EN-US>),&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>那么这些代码调用和表现部分的代码<span lang=EN-US>(</span>如<span lang=EN-US>JSP</span>标签库和<span lang=EN-US>HTML)</span>不必分离到新的活动和<span lang=EN-US>JSP</span>页面中处理过程<span lang=EN-US>.&nbsp;</span>这样可以提高性能和可读性<span lang=EN-US>.&nbsp;</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Model-2</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">方式的优点如下<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shape id=_x0000_i1076 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><span style="COLOR: black">1</span> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：代码和表现彻底分离<span lang=EN-US>.&nbsp;</span>同一个表现页面可以被多个不同的活动复用<span lang=EN-US>,&nbsp;<br><v:shape id=_x0000_i1077 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>这些活动可以访问不同的数据但使用相同的方式展示<span lang=EN-US>.&nbsp;<br><v:shape id=_x0000_i1078 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1079 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>2</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> </span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">：如果一个活动可能导致多种状态<span lang=EN-US>,&nbsp;</span>如</span><span style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> </span><span style="COLOR: black">成功</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">,&nbsp;</span> <span style="COLOR: black">"</span> </span><span style="COLOR: black">需要重新输入</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">,&nbsp;</span></span><span style="COLOR: black">或</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> </span><span style="COLOR: black">出现错误</span> <span lang=EN-US style="COLOR: black">"</span><span lang=EN-US> <span style="COLOR: black">,&nbsp;<br><v:shape id=_x0000_i1080 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: black">那么使用<span lang=EN-US>Model</span></span><span lang=EN-US> <span style="COLOR: black">-</span> <span style="COLOR: black">2</span></span><span style="COLOR: black">方式可以很容易的将这些状态映射到不同的页面<span lang=EN-US>.&nbsp;</span></span><span lang=EN-US> <o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">&nbsp;<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">选择使用的首要原则是<span lang=EN-US>: <o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #eeeeee; MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><v:shape id=_x0000_i1081 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">当代码仅仅是获取并显示数据<span lang=EN-US>(</span>这被称为<span lang=EN-US>read</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black">-</span> <span style="COLOR: black">type&nbsp;code)</span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">时使用<span lang=EN-US>Model</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black">-</span> <span style="COLOR: black">1</span> <span style="COLOR: black"><br><v:shape id=_x0000_i1082 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape><br><v:shape id=_x0000_i1083 style="WIDTH: 24pt; HEIGHT: 24pt" alt="" type="#_x0000_t75"></v:shape></span></span><span style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">只要当模型是由活动或一个处理流程所改变时就应当使用<span lang=EN-US>Model</span></span><span lang=EN-US style="FONT-SIZE: 7.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"> <span style="COLOR: black">-</span> <span style="COLOR: black">2</span> <span style="COLOR: black">.&nbsp;</span> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><br>OGNL</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">是<span lang=EN-US>WebWork,XWork</span>中的底层支持组件<span lang=EN-US>.</span>非常强大的函数库<span lang=EN-US>.<o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/140710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-29 00:39 <a href="http://www.blogjava.net/RiKeR/articles/webwork.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我做的第二个MVC项目的小结（完结篇）</title><link>http://www.blogjava.net/RiKeR/articles/140625.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Tue, 28 Aug 2007 10:37:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/140625.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/140625.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/140625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/140625.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/140625.html</trackback:ping><description><![CDATA[&nbsp;
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1</span><span>、</span><span>list.jsp==&gt;</span><span>新建一个</span><span>Servlet</span><span>，</span><span>DeleteServlet.java</span><span>，此时仍用</span><span>doPost</span><span>方法接收（点击按钮）</span></p>
<p><span>package org.riker.news.control;</span></p>
<p>&nbsp;</p>
<p><span>import java.io.IOException;</span></p>
<p><span>import java.io.PrintWriter;</span></p>
<p>&nbsp;</p>
<p><span>import javax.servlet.ServletException;</span></p>
<p><span>import javax.servlet.http.HttpServlet;</span></p>
<p><span>import javax.servlet.http.HttpServletRequest;</span></p>
<p><span>import javax.servlet.http.HttpServletResponse;</span></p>
<p>&nbsp;</p>
<p><span>import org.riker.news.data.NewsDataBean;</span></p>
<p><span>import org.riker.news.logic.NewsLogicBean;</span></p>
<p>&nbsp;</p>
<p><span>public class DetailServlet extends HttpServlet {</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* Constructor of the object.</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public DetailServlet() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>super();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* Destruction of the servlet. &lt;br&gt;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void destroy() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>super.destroy(); // Just puts "destroy" string in log</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Put your code here</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* The doPost method of the servlet. &lt;br&gt;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* This method is called when a form has its tag value method equals to post.</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @param request the request send by the client to the server</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @param response the response send by the server to the client</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @throws ServletException if an error occurred</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @throws IOException if an error occurred</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void doPost(HttpServletRequest request, HttpServletResponse response)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>throws ServletException, IOException {</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String newsid = request.getParameter("newsid");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NewsDataBean bean = new NewsLogicBean().detail(newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(bean!=null) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.setAttribute("bean",bean);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.getRequestDispatcher("main/detail.jsp").forward(request, response);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} else {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.getRequestDispatcher("main/error.jsp").forward(request, response);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* Initialization of the servlet. &lt;br&gt;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @throws ServletException if an error occure</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void init() throws ServletException {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Put your code here</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span>}</span></p>
<p>&nbsp;</p>
<p><span>2</span><span>、</span><span>NewsLogicBean.java</span><span>，写公共的，修改</span><span>relevant</span><span>，写</span><span>deleteNews()</span><span>方法</span></p>
<p><span>package org.riker.news.logic;</span></p>
<p>&nbsp;</p>
<p><span>import java.sql.Connection;</span></p>
<p><span>import java.sql.ResultSet;</span></p>
<p><span>import java.sql.SQLException;</span></p>
<p><span>import java.sql.Statement;</span></p>
<p><span>import java.util.ArrayList;</span></p>
<p><span>import java.util.List;</span></p>
<p>&nbsp;</p>
<p><span>import org.riker.news.comm.DataSource;</span></p>
<p><span>import org.riker.news.data.NewsDataBean;</span></p>
<p>&nbsp;</p>
<p><span>public class NewsLogicBean {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int allRows;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int curPage = 1;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int rowPerPage = 5;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>private int allPages;</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public List findAll() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List list = new ArrayList();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Statement st = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ResultSet rs = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>st = DataSource.getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs = st.executeQuery("select newsid, newstitle, newscontent, newscount, newsdate from news order by newsdate desc");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs.last();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.allRows = rs.getRow();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(this.allRows%this.rowPerPage==0) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.allPages = this.allRows/this.rowPerPage;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} else {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.allPages = this.allRows/this.rowPerPage + 1;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(this.curPage == 1) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs.beforeFirst();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} else {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs.absolute((this.curPage - 1) * this.rowPerPage);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int i = 0;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>while(rs.next() &amp;&amp; i &lt; this.rowPerPage) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NewsDataBean bean = new NewsDataBean();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewsid(rs.getString(1));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewstitle(rs.getString(2));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewscontent(rs.getString(3));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewscount(rs.getString(4));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewsdate(rs.getString(5));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>list.add(bean);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>i++;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} catch (SQLException e) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>e.printStackTrace();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return list;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int insertNews(String newsTitle, String newsContent) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return modify("insert into news(newstitle, newscontent, newscount, newsdate) values ('"+newsTitle+"', '"+newsContent+"', 0, now()");</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int modify(String sql) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int result = 0;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Statement st = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>st = DataSource.getConnection().createStatement();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>result = st</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.executeUpdate(sql);</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} catch (Exception e) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// TODO: handle exception</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} finally {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>st.close();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} catch (SQLException e) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// TODO Auto-generated catch block</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>e.printStackTrace();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return result;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int deleteId(String newsid) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return modify("delete from news where newsid="+newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int updateNews(String newsid, String newsTitle, String newsContent) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return modify("update news set newstitle='"+newsTitle+"', newscontent='"+newsContent+"' where newsid="+newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public NewsDataBean findById(String newsid) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NewsDataBean bean = new NewsDataBean();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Statement st = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ResultSet rs = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>st = DataSource.getConnection().createStatement();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs = st.executeQuery("select newsid, newstitle, newscontent, newscount, newsdate from news where newsid=" + newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs.last();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(rs.next() ) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewsid(rs.getString(1));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewstitle(rs.getString(2));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewscontent(rs.getString(3));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewscount(rs.getString(4));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewsdate(rs.getString(5));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} catch (SQLException e) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>e.printStackTrace();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return bean;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public NewsDataBean detail(String newsid) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NewsDataBean bean = new NewsDataBean();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Statement st = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ResultSet rs = null;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>try {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>st = DataSource.getConnection().createStatement();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>st.executeUpdate("update news set newscount=newscount+1 where newsid="+newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs = st.executeQuery("select newsid, newstitle, newscontent, newscount, newsdate from news where newsid=" + newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rs.last();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(rs.next() ) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewsid(rs.getString(1));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewstitle(rs.getString(2));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewscontent(rs.getString(3));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewscount(rs.getString(4));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>bean.setNewsdate(rs.getString(5));</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} catch (SQLException e) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>e.printStackTrace();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return bean;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public static void main(String[] args) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List list = new NewsLogicBean().findAll();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.out.println(list.size());</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int getCurPage() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return curPage;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void setCurPage(int curPage) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>this.curPage = curPage;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int getAllPages() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return allPages;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int getAllRows() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return allRows;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public int getRowPerPage() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>return rowPerPage;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>3</span><span>、</span><span>DeleteServlet.java</span><span>，去</span><span>COPY</span><span>过来跳转的语</span></p>
<p>&#160;</p>
<p><span>句。</span><span>==&gt;</span><span>查看新闻详细，中间，新建</span><span>DetailServlet.java</span><span>，注意此时为</span><span>doGet</span><span>（</span></p>
<p>&#160;</p>
<p><span>地址栏的提交）</span><span>==&gt;NewsLogicBean.java</span><span>写</span><span>COPY</span><span>上面</span><span>Insert</span><span>的</span><span>public </span></p>
<p>&#160;</p>
<p><span>NewsDataBean detail(String newsid) {}==&gt;DetailServlet.java</span><span>写</span><span>COPY</span><span>过来</span></p>
<p>&#160;</p>
<p><span>FindByIdServlet.java</span><span>中</span><span>NewsDataBean bean = new NewsLogicBean</span></p>
<p>&#160;</p>
<p><span>().findById(newsid)</span><span>，</span><span>modified it==&gt;</span></p>
<p><span>package org.riker.news.control;</span></p>
<p>&nbsp;</p>
<p><span>import java.io.IOException;</span></p>
<p><span>import java.io.PrintWriter;</span></p>
<p>&nbsp;</p>
<p><span>import javax.servlet.ServletException;</span></p>
<p><span>import javax.servlet.http.HttpServlet;</span></p>
<p><span>import javax.servlet.http.HttpServletRequest;</span></p>
<p><span>import javax.servlet.http.HttpServletResponse;</span></p>
<p>&nbsp;</p>
<p><span>import org.riker.news.data.NewsDataBean;</span></p>
<p><span>import org.riker.news.logic.NewsLogicBean;</span></p>
<p>&nbsp;</p>
<p><span>public class DetailServlet extends HttpServlet {</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* Constructor of the object.</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public DetailServlet() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>super();</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* Destruction of the servlet. &lt;br&gt;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void destroy() {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>super.destroy(); // Just puts "destroy" string in log</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Put your code here</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* The doPost method of the servlet. &lt;br&gt;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* This method is called when a form has its tag value method equals to post.</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @param request the request send by the client to the server</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @param response the response send by the server to the client</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @throws ServletException if an error occurred</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @throws IOException if an error occurred</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void doPost(HttpServletRequest request, HttpServletResponse response)</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>throws ServletException, IOException {</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String newsid = request.getParameter("newsid");</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NewsDataBean bean = new NewsLogicBean().detail(newsid);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(bean!=null) {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.setAttribute("bean",bean);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.getRequestDispatcher("main/detail.jsp").forward(request, response);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} else {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>request.getRequestDispatcher("main/error.jsp").forward(request, response);</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/**</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* Initialization of the servlet. &lt;br&gt;</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;* @throws ServletException if an error occure</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&nbsp;*/</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>public void init() throws ServletException {</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// Put your code here</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></p>
<p>&nbsp;</p>
<p><span>}</span></p>
<p>&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>4</span><span>、用</span><span>insert.jsp</span><span>复制新建</span><span>detail.jsp</span><span>，引</span></p>
<p>&#160;</p>
<p><span>入</span><span>NewsDataBean Package</span><span>，写标签</span><span>&nbsp;&lt;jsp:useBean id="news" </span></p>
<p>&#160;</p>
<p><span>class="org.riker.news.logic.NewsLogicBean"/&gt;</span><span>，这么做没必要！！</span><span>WHY</span><span>？</span></p>
<p><span>因为</span><span>DetailServlet.java</span><span>中</span><span>request.setAttribute("bean",bean);</span><span>已经放入</span></p>
<p>&#160;</p>
<p><span>bean</span><span>了，所以直接</span><span>NewsDataBean bean = (NewsDataBean)</span></p>
<p>&#160;</p>
<p><span>request.getAttribute("bean");</span><span>注意</span><span>request.getAttribute("bean")</span><span>，然后格</span></p>
<p>&#160;</p>
<p><span>式化，更美观些，用</span><span>JavaScript</span><span>返回，</span><span>&lt;a href="javascript:history.back</span></p>
<p>&#160;</p>
<p><span>()"&gt;</span><span>返回</span><span>&lt;/a&gt;</span><span>。</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>&lt;%@ </span><span>page </span><span>contentType</span><span>=</span><span>"text/html;charset=GBK" </span><span>import</span><span>=</span><span>"org.riker.news.data.*"</span><span>%&gt;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>&lt;</span><span>html</span><span>&gt;</span></p>
<p align=left><span>&nbsp;</span><span>&lt;</span><span>head</span><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><span>&lt;</span><span>title</span><span>&gt;&lt;/</span><span>title</span><span>&gt;</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><span>&nbsp;</span><span>&lt;/</span><span>head</span><span>&gt;</span></p>
<p align=left><span>&nbsp;</span><span>&lt;</span><span>body</span><span>&gt;</span></p>
<p align=left><span>&nbsp;</span><span>&lt;%</span></p>
<p align=left><span>&nbsp;&nbsp;NewsDataBean bean = (NewsDataBean)request.getAttribute(</span><span>"bean"</span><span>);</span></p>
<p align=left><span>&nbsp;<span>%&gt;</span></span></p>
<p align=left><span>&nbsp;&nbsp;</span><span>&lt;</span><span>h2 </span><span>align</span><span>=</span><span>"center"</span><span>&gt;</span></p>
<p align=left><span>&nbsp;&nbsp;</span><span>&lt;%=</span><span>bean.getNewstitle()</span><span>%&gt;</span><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>发布时间：</span><span>&lt;%=</span><span>bean.getNewsdate()</span><span>%&gt;</span></p>
<p align=left><span>&nbsp;&nbsp;</span><span>&lt;/</span><span>h2</span><span>&gt;</span></p>
<p align=left><span>&nbsp;&nbsp;</span><span>&lt;%=</span><span>bean.getNewscontent()</span><span>%&gt;</span><span>点击的次数：</span><span>&lt;%=</span><span>bean.getNewscount()</span><span>%&gt;</span></p>
<p align=left><span>&nbsp;</span><span>&lt;</span><span>hr</span><span>&gt;</span></p>
<p align=left>&nbsp;</p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp; </span></span><span>&lt;</span><span>a </span><span>href</span><span>=</span><span>"javascript:history.back()"</span><span>&gt;</span><span>返回</span><span>&lt;/</span><span>a</span><span>&gt;</span></p>
<p align=left>&nbsp;</p>
<p align=left>&nbsp;</p>
<p align=left><span>&nbsp;</span><span>&lt;/</span><span>div</span><span>&gt;</span></p>
<p align=left><span>&nbsp;</span><span>&lt;/</span><span>body</span><span>&gt;</span></p>
<p align=left><span>&lt;/</span><span>html</span><span>&gt;</span></p>
<p>&nbsp;</p>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/140625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-28 18:37 <a href="http://www.blogjava.net/RiKeR/articles/140625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse/Eclipse的内存优化与内存不足的解决办法</title><link>http://www.blogjava.net/RiKeR/articles/memory.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sun, 26 Aug 2007 20:40:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/memory.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/139678.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/memory.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/139678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/139678.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 建议使用Eclipse/MyEclipse进行开发的兄弟进来看看，优化我们进行软件开发时的内存，亦可解决内存不足的问题！&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/articles/memory.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/139678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-27 04:40 <a href="http://www.blogjava.net/RiKeR/articles/memory.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战！做MVC项目的小结（续）</title><link>http://www.blogjava.net/RiKeR/articles/mvc2_2.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sun, 26 Aug 2007 05:57:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/mvc2_2.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/139466.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/mvc2_2.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/139466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/139466.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本小系统采用MyEclipse4.0GA+MySQL5.0+JDK5.0+Tomcat4.0+PowerDesigner12.0开发&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/articles/mvc2_2.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/139466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-26 13:57 <a href="http://www.blogjava.net/RiKeR/articles/mvc2_2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse4.0GA+MySQL5.0+JDK5.0+Tomcat4.0+PowerDesigner12.0开发MVC项目</title><link>http://www.blogjava.net/RiKeR/articles/mvc2_1.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sat, 25 Aug 2007 23:08:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/mvc2_1.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/139358.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/mvc2_1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/139358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/139358.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、新建项目prj，导入mysql-connector-java-5.0.7-bin.jar到相应WebRoot下的WEB-INF\lib下，WebRoot下新建index.jsp，list.jsp，code as follows：&lt;%@ page contentType="text/html;charset=GB...&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/articles/mvc2_1.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/139358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-26 07:08 <a href="http://www.blogjava.net/RiKeR/articles/mvc2_1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从JAVA到C++快速进阶(2nd)</title><link>http://www.blogjava.net/RiKeR/articles/139355.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sat, 25 Aug 2007 19:20:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/139355.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/139355.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/139355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/139355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/139355.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="COLOR: red">"In Java, you do not need to declare a method as virtual. Dynamic binding is the default behavior. If you do not want a method to be virtual, you tag it as final"--from &lt;core java2 :volum I&gt;.</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">java</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">中没显示的和<span lang=EN-US>c++</span>中的指针<span lang=EN-US>,</span>但是他有地址的概念的<span lang=EN-US>.</span>而且所有我们申明的<span lang=EN-US>"</span><span style="BACKGROUND: fuchsia; mso-highlight: fuchsia">对象<span lang=EN-US>"</span>其实就是地址<span lang=EN-US>(</span>或叫句柄</span><span lang=EN-US>),</span>给他赋值就是把他指向一个内存单元<span lang=EN-US>.</span>当然也可以改变他的指向<span lang=EN-US>.</span>其实我们<span lang=EN-US>"</span>对象<span lang=EN-US>"</span>的赋值操作全是地址在变东<span lang=EN-US>,</span>对象还是没有变的<span lang=EN-US>.</span>那也许有人会说那样的话不是会产生很多没有<span lang=EN-US>"</span>对象<span lang=EN-US>"(</span>句柄<span lang=EN-US>)</span>的内存区域<span lang=EN-US>.</span>是的是会产生<span lang=EN-US>,</span>但是<span lang=EN-US>java</span>的垃圾收集机制会给我们回收这样的内存<span lang=EN-US>"</span>泄漏<span lang=EN-US>".</span>所以我们只关心我们操作的对象就行<span lang=EN-US>,</span>其他的我们不用的对象的后事垃圾收集会给我们干<span lang=EN-US>.</span></span><strong><span class=1Char><span lang=EN-US style="FONT-SIZE: 22pt; FONT-FAMILY: 'Times New Roman'">帅</span></span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></strong></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">明白了在<span lang=EN-US>java</span>中的<span lang=EN-US>"</span>对象<span lang=EN-US>"</span>而非我们<span lang=EN-US>c++</span>中理解的对象<span lang=EN-US>.</span>而实际上是指针<span lang=EN-US>(</span>句柄<span lang=EN-US>)</span>那多态当然可以实现<span lang=EN-US>.</span></span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">下面举个<span lang=EN-US>"</span>对象<span lang=EN-US>"</span>赋值<span lang=EN-US>(</span>引用<span lang=EN-US>)</span>的例子说明<span lang=EN-US>,</span>全是地址在变<span lang=EN-US>,</span>而非真的内存单元<span lang=EN-US>.</span></span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">public&nbsp;class&nbsp;Number&nbsp;{<br>&nbsp;&nbsp;&nbsp;private&nbsp;int&nbsp;number;<br><br>&nbsp;&nbsp;&nbsp;public&nbsp;Number(&nbsp;int&nbsp;number&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.number&nbsp;=&nbsp;number;<br>&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;getNumber()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this.number;<br>&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;setNumber(&nbsp;int&nbsp;number&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.number&nbsp;=&nbsp;number;<br>&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(&nbsp;String[]&nbsp;args&nbsp;)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;one&nbsp;=&nbsp;new&nbsp;Number(&nbsp;1&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Number&nbsp;two&nbsp;=&nbsp;new&nbsp;Number(&nbsp;2&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"Beginning:&nbsp;"&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"One&nbsp;=&nbsp;"&nbsp;+&nbsp;one.getNumber()&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"Two&nbsp;=&nbsp;"&nbsp;+&nbsp;two.getNumber()&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Assign&nbsp;two&nbsp;to&nbsp;one<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;two&nbsp;=&nbsp;one;//</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">在这里</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">two</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">这个句柄的值</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">(</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">即某个对象的地址</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">)</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">改成</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">one</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">这个句柄的值了</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">.</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">从而</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">two</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">和</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">one</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">指同时</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">//</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">向</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">one</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">以前指向的那个内存单元</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">(</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">对象</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">).</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">而</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">two </span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">以前指向的那个对象现在为没有句柄连接的对象了</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt">.</span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">可能要被垃圾收集</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"\nAfter&nbsp;assigning&nbsp;two&nbsp;to&nbsp;one:&nbsp;"&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"One&nbsp;=&nbsp;"&nbsp;+&nbsp;one.getNumber()&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"Two&nbsp;=&nbsp;"&nbsp;+&nbsp;two.getNumber()&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Change&nbsp;the&nbsp;value&nbsp;of&nbsp;two<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;two.setNumber(&nbsp;3&nbsp;);//t<span style="BACKGROUND: fuchsia; mso-highlight: fuchsia">wo</span></span><span style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-highlight: fuchsia; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">和</span><span lang=EN-US style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt; mso-highlight: fuchsia">one</span><span style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-highlight: fuchsia; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">指向同一个单元</span><span lang=EN-US style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt; mso-highlight: fuchsia">,</span><span style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-highlight: fuchsia; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">所以他对改单元的改变</span><span lang=EN-US style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt; mso-highlight: fuchsia">,one</span><span style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: Arial; mso-highlight: fuchsia; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">能感知</span><span lang=EN-US style="FONT-SIZE: 12pt; BACKGROUND: fuchsia; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt; mso-highlight: fuchsia">.</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: Arial; mso-font-kerning: 0pt"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"\nAfter&nbsp;modifying&nbsp;two:&nbsp;"&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"One&nbsp;=&nbsp;"&nbsp;+&nbsp;one.getNumber()&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"Two&nbsp;=&nbsp;"&nbsp;+&nbsp;two.getNumber()&nbsp;);<br>&nbsp;&nbsp;&nbsp;}<br>}</span><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><br></span><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">运行结果<span lang=EN-US>:</span></span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">Beginning:<br>One = 1<br>Two = 2</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 15pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">After assigning two to one:<br>One = 1<br>Two = 1</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">After modifying two:<br>One = 3<br>Two = 3<br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 12pt; COLOR: #666666; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">下面进行概括总结<span lang=EN-US>..</span></span><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><br><br>1</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体">．指针<span lang=EN-US> <br><br>JAVA</span>语言让编程者无法找到指针来直接访问内存无指针，并且增添了自动的内存管理功能，从而有效地防止了<span lang=EN-US>c</span>／<span lang=EN-US>c++</span>语言中指针操作失误，如野指针所造成的系统崩溃。但也不是说<span lang=EN-US>JAVA</span>没有指针，虚拟机内部还是使用了指针，只是外人不得使用而已。这有利于<span lang=EN-US>Java</span>程序的安全。<span lang=EN-US> <br><br>2</span>．多重继承<span lang=EN-US> <br><br>c++</span>支持多重继承，这是<span lang=EN-US>c++</span>的一个特征，它允许多父类派生一个类。尽管多重继承功能很强，但使用复杂，而且会引起许多麻烦，编译程序实现它也很不容易。<span lang=EN-US>Java</span>不支持多重继承，但允许一个类继承多个接口<span lang=EN-US>(extends+implement)</span>，实现了<span lang=EN-US>c++</span>多重继承的功能，又避免了<span lang=EN-US>c++</span>中的多重继承实现方式带来的诸多不便。<span lang=EN-US> <br><br>3</span>．数据类型及类<span lang=EN-US> <br><br>Java</span>是完全面向对象的语言，所有函数和变量部必须是类的一部分。除了基本数据类型之外，其余的都作为类对象，包括数组。对象将数据和方法结合起来，把它们封装在类中，这样每个对象都可实现自己的特点和行为。而<span lang=EN-US>c++</span>允许将函数和变量定义为全局的。此外，<span lang=EN-US>Java</span>中取消了<span lang=EN-US>c</span>／<span lang=EN-US>c++</span>中的结构和联合，消除了不必要的麻烦。<span lang=EN-US> <br><br>4</span>．自动内存管理<span lang=EN-US> <br><br>Java</span>程序中所有的对象都是用<span lang=EN-US>new</span>操作符建立在内存堆栈上，这个操作符类似于<span lang=EN-US>c++</span>的<span lang=EN-US>new</span>操作符。下面的语句由一个建立了一个类<span lang=EN-US>Read</span>的对象，然后调用该对象的<span lang=EN-US>work</span>方法：<span lang=EN-US> <br><br>Read r</span>＝<span lang=EN-US>new Read()</span>；<span lang=EN-US> <br><br>r.work()</span>；<span lang=EN-US><br><br><br><br></span>语句<span lang=EN-US>Read r</span>＝<span lang=EN-US>new Read()</span>；在堆栈结构上建立了一个<span lang=EN-US>Read</span>的实例。<span lang=EN-US>Java</span>自动进行无用内存回收操作，不需要程序员进行删除。而<span lang=EN-US>c</span>十十中必须由程序贝释放内存资源，增加了程序设计者的负扔。<span lang=EN-US>Java</span>中当一个对象不被再用到时，无用内存回收器将给它加上标签以示删除。<span lang=EN-US>JAVA</span>里无用内存回收程序是以线程方式在后台运行的，利用空闲时间工作。<span lang=EN-US> <br><br>5</span>．操作符重载<span lang=EN-US> <br><br>Java</span>不支持操作符重载。操作符重载被认为是<span lang=EN-US>c</span>十十的突出特征，在<span lang=EN-US>Java</span>中虽然类大体上可以实现这样的功能，但操作符重载的方便性仍然丢失了不少。<span lang=EN-US>Java</span>语言不支持操作符重载是为了保持<span lang=EN-US>Java</span>语言尽可能简单。<span lang=EN-US> <br><br>6</span>．预处理功能<span lang=EN-US> <br><br>Java</span>不支持预处理功能。<span lang=EN-US>c</span>／<span lang=EN-US>c</span>十十在编译过程中都有一个预编泽阶段，即众所周知的预处理器。预处理器为开发人员提供了方便，但增加丁编译的复杂性。<span lang=EN-US>JAVA</span>虚拟机没有预处理器，但它提供的引入语句<span lang=EN-US>(import)</span>与<span lang=EN-US>c</span>十十预处理器的功能类似。<span lang=EN-US> <br><br>7. Java</span>不支持缺省函数参数，而<span lang=EN-US>c</span>十十支持<span lang=EN-US> <br><br></span>在<span lang=EN-US>c</span>中，代码组织在函数中，函数可以访问程序的全局变量。<span lang=EN-US>c</span>十十增加了类，提供了类算法，该算法是与类相连的函数，<span lang=EN-US>c</span>十十类方法与<span lang=EN-US>Java</span>类方法十分相似，然而，由于<span lang=EN-US>c</span>十十仍然支持<span lang=EN-US>c</span>，所以不能阻止<span lang=EN-US>c</span>十十开发人员使用函数，结果函数和方法混合使用使得程序比较混乱。<span lang=EN-US> <br><br>Java</span>没有函数，作为一个比<span lang=EN-US>c</span>十十更纯的面向对象的语言，<span lang=EN-US>Java</span>强迫开发人员把所有例行程序包括在类中，事实上，用方法实现例行程序可激励开发人员更好地组织编码。<span lang=EN-US> <br><br>8 </span>字符串<span lang=EN-US> <br><br>c</span>和<span lang=EN-US>c</span>十十不支持字符串变量，在<span lang=EN-US>c</span>和<span lang=EN-US>c</span>十十程序中使用<span lang=EN-US>Null</span>终止符代表字符串的结束，在<span lang=EN-US>Java</span>中字符串是用类对象<span lang=EN-US>(strinR</span>和<span lang=EN-US>stringBuffer)</span>来实现的，这些类对象是<span lang=EN-US>Java</span>语言的核心，用类对象实现字符串有以下几个优点：<span lang=EN-US> <br><br>(1)</span>在整个系统中建立字符串和访问字符串元素的方法是一致的；<span lang=EN-US> <br><br>(2)J3</span>阳字符串类是作为<span lang=EN-US>Java</span>语言的一部分定义的，而不是作为外加的延伸部分；<span lang=EN-US> <br><br>(3)Java</span>字符串执行运行时检空，可帮助排除一些运行时发生的错误；<span lang=EN-US> <br><br>(4)</span>可对字符串用<span lang=EN-US>&#8220;</span><st1:chmetcnv w:st="on" UnitName="&#8221;" SourceValue="10" HasSpace="False" Negative="False" NumberType="3" TCSC="1">十<span lang=EN-US>&#8221;</span></st1:chmetcnv>进行连接操作。<span lang=EN-US> <br><br>9&#8220;goto</span>语句<span lang=EN-US> <br><br>&#8220;</span>可怕<span lang=EN-US>&#8221;</span>的<span lang=EN-US>goto</span>语句是<span lang=EN-US>c</span>和<span lang=EN-US>c++</span>的<span lang=EN-US>&#8220;</span>遗物<span lang=EN-US>&#8221;</span>，它是该语言技术上的合法部分，引用<span lang=EN-US>goto</span>语句引起了程序结构的混乱，不易理解，<span lang=EN-US>goto</span>语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由，<span lang=EN-US>Java</span>不提供<span lang=EN-US>goto</span>语句，它虽然指定<span lang=EN-US>goto</span>作为关键字，但不支持它的使用，使程序简洁易读。<span lang=EN-US> <br><br>l0</span>．类型转换<span lang=EN-US> <br><br></span>在<span lang=EN-US>c</span>和<span lang=EN-US>c</span>十十中有时出现数据类型的隐含转换，这就涉及了自动强制类型转换问题。例如，在<span lang=EN-US>c</span>十十中可将一浮点值赋予整型变量，并去掉其尾数。<span lang=EN-US>Java</span>不支持<span lang=EN-US>c</span>十十中的自动强制类型转换，如果需要，必须由程序显式进行强制类型转换。<span lang=EN-US> <br><br>11.</span>异常<span lang=EN-US> <br><br>JAVA</span>中的异常机制用于捕获例外事件，增强系统容错能力<span lang=EN-US> <br><br>try{</span>／／可能产生例外的代码<span lang=EN-US> <br><br>}catch(exceptionType name){ <br><br>//</span>处理<span lang=EN-US> <br><br>}<br><br></span>其中<span lang=EN-US>exceptionType</span>表示异常类型。而<span lang=EN-US>C++</span>则没有如此方便的机制。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/139355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-26 03:20 <a href="http://www.blogjava.net/RiKeR/articles/139355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从JAVA到C++的区别</title><link>http://www.blogjava.net/RiKeR/articles/139269.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Sat, 25 Aug 2007 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/139269.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/139269.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/139269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/139269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/139269.html</trackback:ping><description><![CDATA[&nbsp;
<p align=left><span>一个完整的<span>C++</span>程序包括头文件<span>(.h)</span>和文本文件<span>(.cpp).</span>当然两者都不是必须存在的<span>.</span>只要有其中之一就可以<span>.<br><br>1.C++</span>使用<span>#include</span>预处理器指示符来将头文件引入而成为我们程序的一部分<span>.</span>它将读入指定文件的内容<span>,</span>有两种格式<span><br>#include &lt;some_file.h&gt;<br>#include "my_file.h"<br></span>我们可以把用<span>"&lt;"</span>和<span>"&gt;"</span>引入的头文件理解成是一个工程或者标准头文件<span>(</span>系统提供的<span>).</span>查找过程会检查预定义的目录<span>.<br></span>而用引号括起来则表明该文件是用户提供的头文件<span>.</span>查找将从当前文件目录开始<span>.<br></span>这个<span>include</span><span>我觉得类似于<span>JAVA</span>的<span>import</span></span><span><br><br>2.</span>注释方法一样<span><br><br>3.</span>类文件的定义<span>.</span>严格来说并没有类文件的说法<span>.</span>我是为了和普通的<span>cpp</span>文件区分开来才这么说的<span>.<span>C++</span></span><span>中类的声明写在头文件中</span><span><br></span><span>声明一个类<span>:</span></span></span></p>
<p align=left><span>class test{<br>public:void test1();<br>private:void test2();<br>};</span></p>
<p align=left><span><br><br></span><span>注意这里的写法<span>.</span>最后那个大括号后面必须要跟一个分号的<span>.JAVA</span>则不用<span>.</span>我一开始及其不适应<span>.<br></span>然后在<span>cpp</span>文件中来定义</span></p>
<p align=left><span>void test::test1(){<br>cout &lt;&lt; "aaa";<br>}<br>void test::test2(){<br>cout &lt;&lt; "bb";<br>}</span></p>
<p align=left><span><br></span><span>注意<span>:</span>这里大括号后面有没有带分号都没关系<span>.<br><br>4.C++</span>中对函数的调用方法也灵活<span>.</span></span></p>
<p align=left><span>test t;<br>t.test2();<br>----------------<br>test* t = new test();<br>t-&gt;test2();</span></p>
<p align=left><span><br></span><span>其实我还是喜欢<span>test t = new test();t.test2() <br><br>5.</span>编译器的解析<span>.</span>如果没有引入头文件的话你必须把<span>main()</span>函数放到文件的最下面<span>.</span></span></p>
<p align=left><span>void main(){<br>test();<br>}<br>void test(){<br>cout &lt;&lt; "aa";<br>} </span></p>
<p align=left><span><br><br></span><span>这样写编译器会报找不到<span>test()</span>方法的<span>.</span>这个是<span>C</span>遗留下的问题<span>.</span>解决方法就是引入头文件<span>,</span>或者把<span>main</span>写到最后<span>.</span>或者在<span>main</span>前面声明一下<span>:</span></span></p>
<p align=left><span>void test();<br>void main(){<br>test();<br>}<br>void test(){<br>cout &lt;&lt; "aa";<br>} </span></p>
<p align=left><span><br></span><span>这种做法就和引入头文件差不多了<span>.<br><br>6.</span><span>析构函数<span>.</span>这个特性很有用<span>,</span>在类消失的最后一刻自动调用这个种类型的函数来做一些清除操作</span><span><br><br>7.</span>争议比较大的声明指针类型<span>.<br>int* pt=0;<br>int *pt=0;<br></span>这个星号是紧跟着类型呢还是紧跟着变量名呢<span>.</span>由于<span>C++</span>的灵活度太高<span>.</span>这两种写法都没错误<span>.</span>但按理来说紧跟着类型应该会好一些<span>.</span>因为我们是在声明一个指针类型的变量<span>.</span>但如果按下面的写法<span>:<br><span>int* pt,pt1;</span><br></span>你说<span>pt1</span>是指针类型吗<span>,</span>答案是不是<span>.</span>遇到这种情况就要把<span>*</span>号紧跟着变量名了<span><br><span>int *pt,*pt1;<br><br>耐心点，接下来的是精华<br><br>&nbsp; </p>
<p align=left><strong><u><span>main </span></u></strong><strong><u><span>函数<span><br></span></span></u></strong><strong><span>C++</span></strong><span><br>//</span><span>自由浮动</span><span>的函数<span><br>int main( int argc, char* argv[])<br>{<br>&nbsp;&nbsp;&nbsp; printf( "Hello, world" );<br>}<br><strong>Java</strong><br>// </span>每个函数<span>(</span>方法<span>)</span>都必须是一个类的一部分<span>;</span>当<span>java &lt;class&gt;</span>运行是一个特定类的主函数会被调用<span><br>// (</span>因此你可以让每个类都有一个<span>main</span>函数，这在写<span>单元测试</span>是很有用<span>)<br>class HelloWorld<br>{<br>&nbsp;&nbsp;&nbsp; public static void main(String args[])<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println( "Hello, World" );<br>&nbsp;&nbsp;&nbsp; }<br>}</span></span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>类的声明</span></strong><span><br></span><span>除了<span> Java </span>不要求用分号外几乎是相同的。<span> <br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; class Bar {}<span>;</span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp; class Bar {}<br>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><strong><span>方法声明</span></strong><span><br>&nbsp;&nbsp; </span><span>都相同的<span>, </span>除了在<span>Java,</span>方法必须总是某个类的一部分并且可能<span>public/private/protected </span>作为修饰</span></p>
<p align=left><span><br></span><strong><span>构造函数和<span>析构函数</span><span><br></span></span></strong><span>构造函数都是相同的<span> (</span>即类的名字<span>), Java</span>没有准确意义上的的析构函数<span> </span></span></p>
<p align=left><strong><span>静态成员函数和变量</span></strong><span><br></span><span>方法声明是相同的<span>, </span>但<span> Java </span>提供静态初始化块来来初始化静态变量<span> (</span>不需要<span>在源文件中声明</span><span>): <br>class Foo <br>{<br>&nbsp;&nbsp;&nbsp; static private int x;<br>&nbsp;&nbsp;&nbsp; // </span><span>静态初始化块</span><span><br>&nbsp;&nbsp;&nbsp; { x = 5; }<br>}</span></span></p>
<p align=left><strong><span>对象的声明</span></strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; <span>// </span></span><span>在栈中<span><br>&nbsp;&nbsp;&nbsp; myClass x;</span></span><span><br>&nbsp;<br>&nbsp;&nbsp;&nbsp; <span>//</span></span><span>或者在堆中<span><br>&nbsp;&nbsp;&nbsp; myClass *x = new myClass;</span></span><span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java<br></strong>&nbsp;&nbsp;&nbsp;// </span><span>总是在对堆中声明</span><span><br>&nbsp;&nbsp;&nbsp; myClass x = new myClass();<br>&nbsp;&nbsp;&nbsp; </span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>继<span>&nbsp;&nbsp; </span>承</span></strong><span><br><strong>C++<br></strong>&nbsp;&nbsp;&nbsp; <span>class Foo : public Bar</span><br>&nbsp;&nbsp;&nbsp; { ... };<br>&nbsp;&nbsp;&nbsp; <br><strong>Java<br></strong>&nbsp;&nbsp;&nbsp; class Foo extends Bar<br>&nbsp;&nbsp;&nbsp; { ... }<br>&nbsp;&nbsp;&nbsp; </span></p>
<p align=left><strong><span>访问级别<span> (abstraction barriers)<br>C++</span></span></strong><span><br>&nbsp;&nbsp;&nbsp;<span>public:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void foo();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void bar();</span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java<br></strong>&nbsp;&nbsp;&nbsp; public void foo();<br>&nbsp;&nbsp;&nbsp; public void bar();<br>&nbsp;&nbsp;&nbsp; </span></p>
<p align=left><strong><span>虚函数</span></strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; virtual int foo(); // </span><span>或者非虚函数写作<span> int foo();<br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp; // </span>函数默认的就是虚函数<span>; </span>用<span>final</span>关键字防止重载<span><br>&nbsp;&nbsp;&nbsp; int foo(); // </span>或者<span>, final int foo();</span></span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>内存管理<span><br></span></span></strong><span>大体上是相同的<span>--new </span>来分配， 但是<span> Java</span>没有<span> delete</span>，因为它有垃圾回收器。<span> </span></span></p>
<p align=left><strong><span>NULL vs null</span></strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; // </span><span>初始化一个指针为<span> NULL<br>&nbsp;&nbsp;&nbsp; <span>int *x = NULL;</span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp;// </span>编译器将捕获使用未初始化的引用<span><br>&nbsp;&nbsp; //</span>但是如果你因需要初始化一个引用而赋一个<span>null</span>，那么这是无效的<span><br>&nbsp;&nbsp;&nbsp; myClass x = null;<br>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><strong><span>布尔型</span></strong><span><br>Java</span><span>有一点罗嗦<span>: </span>你必须写<span> boolean</span>而不止是<span> bool. <br><strong>C++</strong><br><strong>&nbsp;&nbsp; bool foo;<br>Java</strong><br>&nbsp;&nbsp;&nbsp;&nbsp; boolean foo;</span></span></p>
<p align=left><strong><span>常<span>&nbsp;&nbsp; </span>量</span></strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; <strong>const int x = 7;</strong><br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp; final int x = 7;<br>&nbsp;&nbsp;&nbsp; </span></p>
<p align=left><strong><span>抛异常</span></strong><span><br></span><span>首先，<span>Java</span>在编译器强制抛异常<span>—</span>如果你的方法可能会抛异常你必需明确报告<span> <br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp;&nbsp; <span>int foo() throw (IOException)</span><br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp;&nbsp; int foo() throws IOException</span></span></p>
<p align=left><strong><span>数<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>组</span></strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; int x[10];<br>&nbsp;&nbsp;&nbsp; // </span><span>或<span><br>&nbsp;&nbsp;&nbsp; <span>int *x = new x[10];</span><br>&nbsp;&nbsp;&nbsp; // </span>使用<span> x,</span>然后归还内存<span><br>&nbsp;&nbsp;&nbsp; <span>delete[] x;</span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java<br></strong>&nbsp;&nbsp;&nbsp; int[] x = new int[10];<br>&nbsp;&nbsp;&nbsp; // </span>使用<span> x, </span>内存有垃圾回收器回收或<span><br>&nbsp;&nbsp;&nbsp; //</span>或在程序生命周期尽头归还给系统<span><br>&nbsp;&nbsp;&nbsp; </span></span></p>
<p align=left><strong><span>集合和迭代器<span><br>C++</span></span></strong><span><br></span><span>迭代器是类的成员。范围的开始是<span>&lt;</span>容器<span>&gt;.begin(), </span>结束是<span> &lt;</span>容器<span>&gt;.end()</span>。 用<span>++ </span>操作符递增<span>,&nbsp; </span>用<span> *</span>操作符访。<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; <span>vector myVec;<br>&nbsp;&nbsp;&nbsp; for ( vector&lt;int&gt;::iterator itr = myVec.begin();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itr != myVec.end();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++itr )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; *itr;<br>&nbsp;&nbsp;&nbsp; }</span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br></span>迭代器只是一个接口。 范围的开始是<span> &lt;</span>集合<span>&gt;.iterator</span>，你必须用<span>itr.hasNext()</span>来查看是否到达集合尾。 使用<span>itr.next()(</span>是在<span>C++</span>中使用操作符<span>++ </span>和<span>*</span>操作的结合<span>)</span>来获得下一个元素。<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; ArrayList myArrayList = new ArrayList();<br>&nbsp;&nbsp;&nbsp; Iterator itr = myArrayList.iterator();<br>&nbsp;&nbsp;&nbsp; while ( itr.hasNext() )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println( itr.next() );<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; // </span>或<span>, </span>在<span>Java 5</span>中<span><br>&nbsp;&nbsp;&nbsp; ArrayList myArrayList = new ArrayList();<br>&nbsp;&nbsp;&nbsp; for( Object o : myArrayList ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println( o );<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;</span></span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; <br></span><strong><span>抽象类</span></strong><span><br><strong>C++<br></strong>&nbsp;&nbsp;&nbsp; // </span><span>只需要包含一个纯虚函数<span><br>&nbsp;&nbsp;&nbsp; class Bar { public: virtual void foo() = 0; };<br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp; // </span>语法上允许显示的声明<span>!<br>&nbsp;&nbsp;&nbsp; abstract class Bar { public abstract void foo(); }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; // </span>或者你也可以声明一个接口<span><br>&nbsp;&nbsp;&nbsp; interface Bar { public void foo(); }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; // </span>然后让一个类继承这个接口<span>:<br>&nbsp;&nbsp;&nbsp; class Chocolate implements Bar<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void foo() { /* do something */ }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br></span><strong>引用<span> vs&nbsp; </span>指针</strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; //</span>引用不可改变<span>,</span>通过使用指针来获得更多的灵活性<span><br>&nbsp;&nbsp;&nbsp; int bar = 7, qux = 6;<br>&nbsp;&nbsp;&nbsp; int&amp; foo = bar;<br>&nbsp;&nbsp;&nbsp; <br><strong>Java</strong><br>&nbsp;&nbsp;&nbsp; // </span>引用是可变的，仅存储对象地址<span>; <br>&nbsp;&nbsp;&nbsp; //</span>没有指针类型<span><br>&nbsp;&nbsp;&nbsp; myClass x;<br>&nbsp;&nbsp;&nbsp; x.foo(); // error, x is a null &#8220;pointer&#8221;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; // </span>注意你要总是用<span> . </span>来访问域<span><br>&nbsp;&nbsp;&nbsp; <br></span><strong>编&nbsp;译</strong><span><br><strong>C++</strong><br>&nbsp;&nbsp;&nbsp; // </span>编译<span><br>&nbsp;&nbsp;&nbsp; <span>g++ foo.cc -o outfile</span><br>&nbsp;&nbsp;&nbsp; // </span>运行<span><br>&nbsp;&nbsp;&nbsp; <span>./outfile</span><br>&nbsp;&nbsp;&nbsp; <br><strong>Java<br></strong>&nbsp;&nbsp;&nbsp;// </span>编译<span>foo.java</span>文件中的类成<span>&lt;classname&gt;.class&nbsp;&nbsp;&nbsp; javac foo.java <br>&nbsp;&nbsp;&nbsp; // </span>通过调用<span>&lt;classname&gt;</span>中的静态<span>main</span>方法来运行<span><br>&nbsp;&nbsp;&nbsp; java &lt;classname&gt;<br>&nbsp;&nbsp;&nbsp; <br></span><strong>注<span>&nbsp;&nbsp; </span>释</strong><span><br></span>两种语言是一样的<span> (// </span>和<span> /* */ </span>可以用<span>)</span></span></span></span></span></p>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/139269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-25 15:49 <a href="http://www.blogjava.net/RiKeR/articles/139269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL5.0密码忘记的解决方案</title><link>http://www.blogjava.net/RiKeR/articles/139199.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Fri, 24 Aug 2007 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/139199.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/139199.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/139199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/139199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/139199.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在windows下：<br>打开命令行窗口，停止mysql服务：     Net stop mysql<br>启动mysql，一般到mysql的安装路径，找到 mysqld-nt.exe<br>执行：mysqld-nt --skip-grant-tables<br>另外打开一个命令行窗口，进入相应目录下，执行mysql<br>>use mysql<br>>update user set password=password("new_pass") where user="root";<br>>flush privileges;<br>>exit<br>用Ctrl+Alt+Del，找到mysqld-nt的进程杀掉它，在重新启动mysql-nt服务，就可以用新密码登录了<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/RiKeR/articles/139199.html'>阅读全文</a><img src ="http://www.blogjava.net/RiKeR/aggbug/139199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-24 23:50 <a href="http://www.blogjava.net/RiKeR/articles/139199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习编程学习、软件开发的指导原则</title><link>http://www.blogjava.net/RiKeR/articles/principle.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Fri, 10 Aug 2007 17:15:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/principle.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/135960.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/principle.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/135960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/135960.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 培养兴趣，兴趣是最好的老师，可以参考一些IT史话以及一些软件发展历史etc</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 慎重选取程序设计语言，一旦选了，就心无旁骛地坚持学到底；创建一些企业级的应用程序</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要脚踏实地，快餐式的学习不可取，这点非常重要，时刻保证质量第一；引用小学班主任的话&#8220;一步一个脚印&#8221;，遵循发展的规律来学，循序渐进地去学习，千万！绝对！！不能幻想三两下马上就搞定一门语言，激情固然总要，但前述更为大大地重要。工具（IDE）固然重要，Java语言本身才是本质的问题</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多动手实践，不要夸夸其谈，动手是最好最快的消化方式；发现相关的细节的问题，发现一些只有当我们动手去敲击键盘时才会遇到的种种问题</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多参考程序代码，汲取营养；吸收编程思想，包括设计、架构的思想；考虑别人是怎么发现问题、分析问题、解决问题的；思路流程，思想非常非常地重要，这点再怎么强调都不过分，这点也是学习编程的一个&#8220;捷径&#8221;</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加强英文阅读能力，习惯成自然；作为&#8220;英语高手&#8221;的我在这方面也不能麻痹大意，不能疏忽，不能放松自己，也要老老实实地掌握一些专业词汇</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 求人不如求己（万不得已才请教别人，或者利用搜索），又涉及到老生常谈的一个问题了&#8220;浮躁&#8221;，读了这么多书，有&#8220;智慧&#8221;的我非常的不应该在这里犯迷糊了！！碰到问题，自己尝试独立解决，认真的好好去思考，用尽各种办法，各种途径，这个解决问题的过程其实就是提高自己能力，提高自己实力的过程，我们应该感谢这样的过程</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多读好书，读一流的书，做一流的人；何为&#8220;好书&#8221;，其实就是适合自己的书，当然我本人喜欢同一方面的书多读几本，这样更有掌控感。LSY学长好像说过&#8220;适合自己的才是最好的&#8221;这话现在是最好的应用了</strong></p>
<p style="FONT-SIZE: 14pt; COLOR: red"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用合适的工具，工具和某项新技术、新观念的诞生便是为了世界的更美好一些<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以上为个人愚见，还请各位兄弟指教！</strong></p>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/135960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-11 01:15 <a href="http://www.blogjava.net/RiKeR/articles/principle.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读书笔记_1</title><link>http://www.blogjava.net/RiKeR/articles/135865.html</link><dc:creator>RiKeR</dc:creator><author>RiKeR</author><pubDate>Fri, 10 Aug 2007 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/RiKeR/articles/135865.html</guid><wfw:comment>http://www.blogjava.net/RiKeR/comments/135865.html</wfw:comment><comments>http://www.blogjava.net/RiKeR/articles/135865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RiKeR/comments/commentRss/135865.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RiKeR/services/trackbacks/135865.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不知不觉自己学</span><span lang=EN-US>JAVA</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也有</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年多了了</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年多里我感觉就像是过了三年</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">大家不要误会</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我不是说这</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年特别难过</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而是指这</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">年所学的知识的种类及数量可以说是我在读大学时三年的总量</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有人说</span><span lang=EN-US>JAVA</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">难学</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在我认为</span><span lang=EN-US>JAVA</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并不难而难在于一直持续的学习这些浩如烟海的技术</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果说没有破釜沉舟的决心</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我建议你放弃</span><span lang=EN-US>,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">否则你定然会被这多如牛毛的技术所淹没</span><span lang=EN-US>!</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>----joahon学长</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>--</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">》关键字：持续学习，破釜沉舟</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;面向对象的特征有哪些方面</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;抽象：过程、数据的抽象。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;封装：现实的世界就是一个封装的世界，通过一个受保护的借口来访问，类似地，封装了过程和数据。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;继承：&#8220;一种联结类的层次模型，允许和鼓励类的重用&#8221;，子类从父类继承方法和（实例）变量，并可以根据需要增加方法和变量。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;多态：&#8220;允许不同类的对象对同一事件做出响应&#8221;，参数化、包含多态性。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;</span><span lang=EN-US>final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US>finally</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span lang=EN-US>finalize</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的区别</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;</span><span lang=EN-US>final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span><span lang=EN-US>1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、修饰类时，表示此类不能被继承，也不会从其他类继承；用了</span><span lang=EN-US>final</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就不能出现</span><span lang=EN-US>abstract</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，否则矛盾；</span><span lang=EN-US>2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、修饰方法和变量时，修饰变量时只能初始化一次，且不能再修改，方法的话不能被重载。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;</span><span lang=EN-US>finally</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span><span lang=EN-US>try{..}catch(..){..}</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中用来执行任何的清除操作。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#183;</span><span lang=EN-US>finalize</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span><span lang=EN-US>Garbage Collector</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在收集垃圾之前，用</span><span lang=EN-US>finalize</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法来整理系统资源或者执行相关清理操作。</span><span lang=EN-US>finalize</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span><span lang=EN-US>java.lang</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包中</span><span lang=EN-US>Object</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类定义的方法，因此被所有的类继承。</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>System.gc() ;</span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US>Runtime.getRuntime().gc() ;<br></p>
</span>
 <img src ="http://www.blogjava.net/RiKeR/aggbug/135865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RiKeR/" target="_blank">RiKeR</a> 2007-08-10 16:43 <a href="http://www.blogjava.net/RiKeR/articles/135865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>