﻿<?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-linansengling</title><link>http://www.blogjava.net/linansengling/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 22:26:19 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 22:26:19 GMT</pubDate><ttl>60</ttl><item><title>将JAVA和LIUNX进行到底</title><link>http://www.blogjava.net/linansengling/archive/2008/02/11/179593.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Mon, 11 Feb 2008 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2008/02/11/179593.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/179593.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2008/02/11/179593.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/179593.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/179593.html</trackback:ping><description><![CDATA[很久没来这里了,今天无意间再次来到这里,看了在学校写的文章,感觉好好.再次燃起了我对计算机技术的追求.写下了这句话,我绝心在业余要把JAVA和LIUNX进行到底.这久由于工作原因学了很多电厂运行的知识,也学了很多网络的知识,毕业半年也不算虚度时光,另外还想学学经济学.希望以后多多学习吧,学无止境.写下这篇BLOG与您共勉.
<img src ="http://www.blogjava.net/linansengling/aggbug/179593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2008-02-11 11:17 <a href="http://www.blogjava.net/linansengling/archive/2008/02/11/179593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VHDL实现VGA接口设计</title><link>http://www.blogjava.net/linansengling/archive/2007/01/14/93816.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Sun, 14 Jan 2007 14:55:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2007/01/14/93816.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/93816.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2007/01/14/93816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/93816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/93816.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1、    																				输入信号																																																																				   																				clk : 						时钟（每个象素点的显示时钟）											...&nbsp;&nbsp;<a href='http://www.blogjava.net/linansengling/archive/2007/01/14/93816.html'>阅读全文</a><img src ="http://www.blogjava.net/linansengling/aggbug/93816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2007-01-14 22:55 <a href="http://www.blogjava.net/linansengling/archive/2007/01/14/93816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生活的忠告</title><link>http://www.blogjava.net/linansengling/archive/2006/12/21/89223.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Thu, 21 Dec 2006 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/12/21/89223.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/89223.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/12/21/89223.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/89223.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/89223.html</trackback:ping><description><![CDATA[<font color=#ffffff></font>
<p align=left>我不会给你钱，因为我没有。 </p>
<p align=left>给你生活的忠告:<br>多吃些粗粮.<br>给别人比他们自己期许的更多，并且用心去做<br>熟记你喜欢的诗歌<br>不要轻信你听到的每件事，不要花光你的所有，不要想睡多久就睡多久。<br>无论何时说&#8220;我爱你&#8221;，请真心实意。<br>无论何时说&#8220;对不起&#8221;，请看着对方的眼睛。<br>相信一见钟情。<br>永远不要忽视别人的梦想。<br>深情热烈地爱，也许你会受伤，但这是使人生完整的唯一方法。<br>用一种明确的方法解决争议，不要冒犯。<br>永远不要以貌取人。慢慢地说，但要迅速地想。<br>当别人问你不想回答的问题时，笑着说&#8220;你为什么想知道？&#8221;<br>记住那些敢于承担最大风险的人才能得到最深的爱和最大的成就。<br>给妈妈打电话。如果不行，至少在心里想着她。<br>当别人打喷嚏时，说一声&#8220;菩萨保佑&#8221;。<br>如果你失败了，千万不要忘记汲取教训。<br>记住三个&#8220;尊&#8221;：尊重你自己；尊重别人；保持尊严，对自己的行为负责。<br>不要让小小的争端损毁了一段伟大的友谊。<br>无论何时你发现自己做错了，竭尽所能去弥补。动作要快！<br>无论什么时候打电话，摘起话筒的时候请微笑，因为对方能感觉到！<br>找一个你爱聊的人结婚 ， 因为当年龄大了以后，你会发觉喜欢聊天是一个人最大的优点。<br>找点时间，单独呆会儿。<br>欣然接收改变，但是不要摒弃你的个人理念。<br>记住，沉默是金。<br>多看点书，少看点电视。<br>过一种高尚而诚实的生活。当你年老时回想起过去，你就能再一次享受人生。<br>相信上帝，但是别忘了锁门。<br>家庭的融洽氛围是难能可贵的。<br>尽你的全力让家平顺和谐。<br>当你和你亲近的人吵嘴的时候，试着就事论事，不要扯出那些陈芝麻，烂谷子的事。<br>不要摆脱不了昨天。<br>多注意言下之意。<br>和别人分享你的知识，那才是永恒之道！<br>善待我们的地球。<br>不要愚弄自然母亲。<br>忙自己该做的事。<br>不要相信接吻时从不闭眼的伴侣。<br>每年至少去一个你从没去过的地方。<br>如果你赚了很多钱，在活着的时候多行善事。这是你能得到的最好回报。<br>记住有时候，不是最好的收获也是一种好运。<br>深刻理解所有的规则，合理地更新他们。<br>记住：最好的关系存在于对别人的爱胜于对别人的索求之上。<br>回头看看你发誓取得的目标，然后评判你到底有多成功。<br>无论是烹调还是爱情，都用百分之百的负责态度对待，但是不要期求太多的回报。</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/89223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-12-21 10:52 <a href="http://www.blogjava.net/linansengling/archive/2006/12/21/89223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌入式系统入门</title><link>http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Mon, 06 Nov 2006 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/79394.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/79394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/79394.html</trackback:ping><description><![CDATA[这久以来听了我的一个老师关于后PC时代的到来，对嵌入式系统产生了极大兴趣，投入了很大的精力在学，有很多的收获写出来与朋友分享。<br /><br />    对于刚进入嵌入式系统的学习首先是象学J2EE那样看不懂且不知所云的名字，所以先要搞定这些名词：<br /><br /><strong>嵌入式软件系统的几种模式</strong>：<br /><br />􀁺 一   简单嵌入式系统，包含简单的硬件初始化以及应用代码。<br />􀁺 二   简单嵌入式系统，包含bootloader以及应用代码，bootloader与应用紧密集成在一起，构成一个嵌<br />            入式系统。<br />􀁺 三   复杂嵌入式系统，包含bootloader、操作系统、应用软件。<br /><br /><strong>开发编绎环境</strong>：<br /><br />      ads1.2                         arm的编译器arm公司开发的<br />     arm-elf-gcc                  Liunx环境下的arm编绎器<br />      cygwin+armtools          windows下模拟linux的程序和运行在cygwin下的arm的编译器<br />      ARM_SDT_2.51         arm比较早版本的编译器<br />这么多开发编绎环境选择适合的就行如果你用操作系统是Linux编辑工具是vi之类一般是arm-elf-gcc 如果操作系统是windows见意ads1.2 。<br /><br /><strong>嵌入式操作系统：</strong><br /><br />        VxWorks            实时性最好，要付费，一般用在高端实时领域，好像美国的飞船上就用它。<br />         uc/os-II              简单适合入门，好多书都讲这个操作系统，其代码量也不大如果要看它的源码的话。<br />         winCE                微软的东四，收费一般小应用就不用它的，高端手机比如多普达上用的就是它。<br />        uclinux                 是为适应没有MMC硬件的CPU（arm7TDMI）开发的liunx的版本，开源、免费，相信 <br />                                   是今天后的趋势，学习有一定的难度，网上资料还是很多的。<br />        liunx                    开源、免费,ARM9上就可以跑<br /><br /><strong>其它名词：</strong><br /><br />       SkyEye             是开源软件 的一个项目，SkyEye的目标是在Linux和Windows操作系统里提供一个完全的<br />                                仿真环境。SkyEye仿真环境相当于一个嵌入式计算机系统，你可以在SkyEye里运行一些<br />                                嵌入式Linux操作系统，如ARMLinux，uClinux，uc/OSII(ucos-ii)等，并能分析和调试它们<br />                                的源代码。<br />Boot Loader             就是在操作系统内核运行之前运行的一段小程序。通过这段小程序，我们可以初始化<br />                                件设备、建立内存空间的映射图，从而将系统的软硬件环境带到一个合适的状态，以便<br />                                为最终调用操作系统内核准备好正确的环境。相当于PC机中的BIOS。<br /><br />Blob、Bootldr、Redboot、U-Boot、ABLE<br />              <br />     Boot Loader 是严重地依赖于硬件而实现的，除了依赖于CPU 的体系结构外，Boot Loader实际上也依赖于具体的嵌入式板级设备的配置。这也就是说，对于两块不同的嵌入式板而言，即使它们是基于同一种CPU 而构建的，要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上，通常也都需要修改BootLoader 的源程序。Blob、Bootldr、Redboot、U-Boot、ABLE都是人们对于CPU 的体系结构外开发的通用的BootLoader程序，你只需对这些程序进行移植就行了。<br /><br /><strong>嵌入式处理器的启动过程：<br /></strong>     <br />􀁺 通常系统上电（或者复位）以后，程序从地址空间的0x0开始􀁺 即PC（程序计数器）指针，指向0x0。从这个地址开始读取指令并运行。通常这个地址对应的是Bank0。因为系统是从bank0上引导的，所以，在Bank0上连接保存有启动代码的FlashROM，这就是我们常说的Boot ROM即Bootloader程序。<br />     <br />Bootloader要实现：<br /><br />􀁺 硬件系统自检。<br /><br />􀁺 配置其他Bank或者端口、外设等工作模式。<br /><br />􀁺 处理中系统的中断– 在不支持remap的处理器中，中断必然要经过Boot ROM的空间，这时，Boot ROM<br />      需要处理的任务就是把固定的中断向量映射到一个可编程的中断处理子程序的地址。<br /><br />     引导操作系统<br />– 系统配置完成以后， Bootloader需要把操作系统（或者其他程序）装载到SDRAM（就是系统的RAM区），然后，把PC指针指向程序的RAM空间，使操作系统启动，这就是引导。<br /><br />     Flash（Boot ROM）编程<br />– 对引导Flash（或者其他的非易失性存储器）编程，通过串口或者以太网口下载编译成功的操作系统或者应用程序，甚至Boot ROM本身。– 要想实现Boot ROM的自编程，必须让Boot程序是在RAM中运行<img src ="http://www.blogjava.net/linansengling/aggbug/79394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-11-06 14:09 <a href="http://www.blogjava.net/linansengling/archive/2006/11/06/79394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 实现分页技术(Structs+Hibernate+MySQL)</title><link>http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Wed, 20 Sep 2006 16:42:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70960.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html#Feedback</comments><slash:comments>30</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70960.html</trackback:ping><description><![CDATA[
		<p>    通过Structs+Hibernate+MySQL数据数来实现分页技术的应用. <br />    <br /> <a href="/Files/linansengling/pagenavitaionsource.rar" target="_blank">  源程序下载</a><br />   至于Hibernate, Structs, MySQL的具体用法我就不说了,你可以看源程序来查看详细内容.我们来看看分页应用的相关内容.<br /> 架构上和Spring JPetStore没多少区别, 只是没用Spring框架所以Structs中的UserdisplayAction中必须new出各个对象并完成它们之间的关联, 这就是Spring IOC可自动完成的功能. 它也是三层:表现层(Structs), 业务层(POJO), 数据层(Hibernate访问MySQL). 同样业务层通过DAO接口(UserDAO)来访问数据库, 访问数据库的通过Hibernate(在UserDAOImpl中实现). 这一次分页要在业务层中来实现, 业务层同样向表现层提供一个Facada(门面,  UserManager接口), 来访问业务. 在UserManagerImpl中通过调用UserDAO来访问数据, 调用POJO来实现分页功能. 看以下关键代码.<br /><br />先看POJO的分布类吧:<br /><br /><font color="#009900" size="5">Page.java<br /></font><br /><font color="#cc00ff">package org.flyware.util.page;</font></p>
		<p>
				<font color="#cc00ff">public class Page { <br />    <br />   <font color="#ff0000"> private boolean hasPrePage; <br />    <br />     private boolean hasNextPage; <br />        <br />    private int everyPage; <br />    <br />    private int totalPage; <br />        <br />    private int currentPage; <br />    <br />      private int beginIndex; <br /></font>    <br />    <br />      public Page(){ <br />        <br />    } <br />    <br />        public Page(int everyPage){ <br />        this.everyPage = everyPage; <br />    } <br />    <br />    /** The whole constructor */ <br />    public Page(boolean hasPrePage, boolean hasNextPage,  <br />                    int everyPage, int totalPage, <br />                    int currentPage, int beginIndex) { <br />        this.hasPrePage = hasPrePage; <br />        this.hasNextPage = hasNextPage; <br />        this.everyPage = everyPage; <br />        this.totalPage = totalPage; <br />        this.currentPage = currentPage; <br />        this.beginIndex = beginIndex; <br />    } </font>
		</p>
		<p>
				<font color="#cc00ff">      ......    <br />      <br />   public int getTotalPage() { <br />        return totalPage; <br />    } <br />   <br />    public void setTotalPage(int totalPage) { <br />        this.totalPage = totalPage; <br />    } <br />    <br />}</font>
		</p>
		<p>
				<font size="5">
						<font color="#009900">PageUtil.java(用来构造Page实例 相当于page工厂)</font>
						<br />
				</font>
				<br />
				<font color="#cc00ff">package org.flyware.util.page;</font>
		</p>
		<p>
				<font color="#cc00ff">public class PageUtil { <br />    <br />    private static final Log logger = LogFactory.getLog(PageUtil.class); <br />    <br />       public static Page<font color="#ff0000"> createPage</font>(Page page, int totalRecords){ <br /><br />        return createPage(page.getEveryPage(), page.getCurrentPage(), totalRecords); <br />    } <br />    <br />        public static <font color="#ff0000">Page createPage</font>(int everyPage, int currentPage, int totalRecords){ <br />        everyPage = getEveryPage(everyPage); <br /><br />        currentPage = getCurrentPage(currentPage); <br /><br />        int beginIndex = getBeginIndex(everyPage, currentPage); <br /><br />        int totalPage = getTotalPage(everyPage, totalRecords); <br /><br />        boolean hasNextPage = hasNextPage(currentPage, totalPage); <br /><br />        boolean hasPrePage = hasPrePage(currentPage); <br />        <br />        return new Page(hasPrePage, hasNextPage,  <br />                                everyPage, totalPage, <br />                                currentPage, beginIndex); <br />    } <br />    <br />    private static int getEveryPage(int everyPage){ <br />        return everyPage == 0 ? 10 : everyPage; <br />    } <br />    <br />    private static int getCurrentPage(int currentPage){ <br />        return currentPage == 0 ? 1 : currentPage; <br />    } <br />    <br />    private static int getBeginIndex(int everyPage, int currentPage){ <br />        return (currentPage - 1) * everyPage; <br />    } <br />        <br />    private static int getTotalPage(int everyPage, int totalRecords){ <br />        int totalPage = 0; <br />                <br />        if(totalRecords % everyPage == 0) <br />            totalPage = totalRecords / everyPage; <br />        else <br />            totalPage = totalRecords / everyPage + 1 ; <br />                <br />        return totalPage; <br />    } <br />    <br />    private static boolean hasPrePage(int currentPage){ <br />        return currentPage == 1 ? false : true; <br />    } <br />    <br />    private static boolean hasNextPage(int currentPage, int totalPage){ <br />        return currentPage == totalPage || totalPage == 0 ? false : true; <br />    } <br />    </font>
		</p>
		<p>
				<font color="#cc00ff">} <br /><br /><br /><br /><font color="#009900" size="5">业务实现类 UserManaerImpl.java</font><br /><br />package com.linan.service.impl;</font>
		</p>
		<p>
				<font color="#cc00ff">public class UserManagerImpl implements UserManager { <br />    <br />    private <font color="#ff0000">UserDAO userDAO</font>; </font>
		</p>
		<p>
				<font color="#cc00ff">       public void setUserDAO(UserDAO userDAO) { <br /><br />        this.userDAO = userDAO; <br /><br />    } <br />  <br />//提供业务方法<br /><br />public <font color="#ff0000">Result listUser</font>(Page page) throws HibernateException, <br /><br />ObjectNotFoundException { <br /><br />        int totalRecords = userDAO.getUserCount(); <br /><br />        if(totalRecords == 0) <br /><br />            throw new ObjectNotFoundException("userNotExist", null);<br /> <br />        page = PageUtil.createPage(page, totalRecords); <br /><br />        <font color="#ff0000">List users = userDAO.getUserByPage(page);</font>   <br />   <br />        return new Result(page, users); <br /><br />    } </font>
		</p>
		<p>
				<font color="#cc00ff">} <br /><br /><br /><font color="#009900" size="5">DAO数据访问实现类 UserDAOImpl.java</font><br /><br />package com.linan.dao.impl;</font>
		</p>
		<p>
				<font color="#cc00ff">public class UserDAOImpl  implements UserDAO { </font>
		</p>
		<p>
				<font color="#cc00ff">  ...........</font>
		</p>
		<p>
				<font color="#cc00ff">      public List getUserByPage(Page page) throws HibernateException { <br /><br />        String querySentence = "FROM user in class com.linan.bo.Userlist"; <br /><br />        Query query = getSession().createQuery(querySentence); <br /><br /><font color="#ff0000">         //实现分页功能<br /><br /></font>        query.setFirstResult(<font color="#ff0000">page.getBeginIndex())</font> <br /><br />                .setMaxResults(<font color="#ff0000">page.getEveryPage());</font> <br /><br />        return query.list(); <br /><br />    } <br /></font>
		</p>
		<p>
				<font color="#cc00ff">} </font>
		</p>
		<p>
				<font color="#cc00ff">
						<font color="#009900" size="5">表现层Structs中的Action UserdisplayAction.java</font>
						<br />
						<br />
				</font>
				<font color="#cc00ff">package com.linan.struts.action;</font>
		</p>
		<p>
				<font color="#cc00ff">public class UserdisplayAction extends Action {</font>
		</p>
		<p>
				<font color="#cc00ff"> </font>
				<font color="#cc00ff"> public ActionForward execute(<br />  ActionMapping mapping,<br />  ActionForm form,<br />  HttpServletRequest request,<br />  HttpServletResponse response) {</font>
		</p>
		<p>
				<font color="#cc00ff">   Page page=new Page(); <br /><br />        UserManagerImpl userManager=new UserManagerImpl();<br /><br />        UserDAOImpl userDAO=new UserDAOImpl();<br /><br />        userManager.setUserDAO(userDAO);<br /><br />      <font color="#ff0000"> //掉用业务代理完成分页<br /></font><br />        Result result=<font color="#ff0000">userManager.listUser(page);<br /></font><br />        List list=result.getContent();<br /><br />        HttpSession session=request.getSession();<br /><br />        session.setAttribute("list",<font color="#ff0000">list</font>);<br /><br />  return mapping.findForward("displayGo");<br /><br /> }</font>
		</p>
		<p>
				<font color="#cc00ff">}</font>
		</p>
		<p>
				<font color="#cc00ff">
						<br /> </font>
		</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-09-21 00:42 <a href="http://www.blogjava.net/linansengling/archive/2006/09/21/70960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(三) 实现自已的Sunlight Netstore</title><link>http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Tue, 19 Sep 2006 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70625.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70625.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70625.html</trackback:ping><description><![CDATA[
		<p>     看过了Spring JPetStore自已觉得界面有点不好看, 我觉得界面在购物网站建设中还是重要的. 所以在Spring  JPetStore基础上我用Structs的Title框架对原系统做了一定的改变形成了自己的"阳光网店"(Sunlight NetStore), 现在贴出来和大家分享, 大虾见了请别见笑, 还请多多指教, 学生的作品, 都没多少实用性, 只是学了一些东西来练练手.<br /><br /><a href="/Files/linansengling/sunshinenetstoresource.rar" target="_blank">Sunlight NetStore源码下载</a><br /><br />下载的源程序是Eclipse下完成的工程源程序,可以在Eclipse下只接导入进来打开完成发布.  也可以在tomcat安装目录\webapps目录下新建一文件夹jpetstore然后把下载下来的WebRoot目录下的所有内容都拷过去.  数据库的建立, 我开发时使用的是mysql4.0(如果你用的是mysql5.0则可能有时会出错, 5.0是它的测试版我用了感觉有时会出现莫明其妙的错误,还以为是程序错误, 费了我好多时间, 而4.0是它的发布版很稳定的). 使用mysql你可以配合使用MySQL Control Center(mysql4.0, MySQL Control Center可以网上下载Google一下吧这里就不提供下载地址了)很好用的和微软的SQL Server差不多. 在MySQL Control Center中执行数据库脚本, 然后启动tomcat服务器. 你将看到如下:  (开发使用的技术是Structs里面的东东, 就不说了. 架构, 业务层和数据层和原来的不变,<a title="spring jpetstore(二)" href="/linansengling/archive/2006/09/19/70625.html"> 想了解请看Spring JPetStore(二) Spring JPetStore的分析</a>)              <br />                                                                                                                                  <br /></p>
		<p align="center">
				<img style="WIDTH: 630px; HEIGHT: 582px" height="768" alt="index1.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/index1.jpg" width="1024" border="0" />
		</p>
		<p>
				<br />
				<br />
		</p>
		<p align="center">
				<img style="WIDTH: 623px; HEIGHT: 1232px" height="1364" alt="index3.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/index3.jpg" width="1024" border="0" />
		</p>
		<p>            <br /><br /></p>
		<p align="center">
				<img style="WIDTH: 627px; HEIGHT: 587px" height="764" alt="dog.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/dog.jpg" width="1024" border="0" />
		</p>
		<p>  </p>
		<p align="center">
				<img style="WIDTH: 624px; HEIGHT: 675px" height="764" alt="data.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/data.jpg" width="1024" border="0" />
		</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-09-19 21:56 <a href="http://www.blogjava.net/linansengling/archive/2006/09/19/70625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>灰子鸟的天空</title><link>http://www.blogjava.net/linansengling/archive/2006/09/17/70157.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Sun, 17 Sep 2006 12:20:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/17/70157.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70157.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/17/70157.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70157.html</trackback:ping><description><![CDATA[
		<p>     世界上有一种鸟叫灰子鸟, 一生下来就没有脚. 生命中注定要飞翔, 永远都不能停......<br />     我像一只灰子鸟, 我想飞翔, 永远都不要停. 我一个人在天空中漫无目的的飞翔, 不知飞了多远, 也不知还能飞多远. 只是记得自已还在飞着, 一直飞着...... 有一天我遇到了一群南寻的大雁, 它们告诉我, 跟我们一起走吧小灰子鸟, 前面很冷你会被冻死的, 跟我们一起到南方去吧, 那里有漫漫的山花还有充足的食物. 谢谢你们的好意大雁阿姨, 我是灰子鸟, 在我的天空没有停留和目的, 我只有往前飞那是我的使命.灰子鸟告别了雁群继续往前飞翔. 天空越来越暗, 空气中充满着寒流, 灰子鸟感到了大难即将来临.....<br />     灰子鸟很累, 很冷. 它连睁开双眼都觉得那么用力, 它好像睡一觉啊! 呼呼的风声告诉他, 他还在飞翔. 它还要飞吗? 还是它会死掉吗? 灰子鸟还是一直飞, 因为那是它的使命, 它没有选择, 因为它没有脚, 生命中注定了飞翔..<br />     灰子鸟还要飞吗? 对他想去远方, 他想去寻找它的天空, 在那里是它们的天堂, 那里有宽阔的草场, 健康的牛羊... 可是灰子鸟的翅膀太小了, 属于他的天空太小, 即使它用尽全力也飞不到了...... 它流泪了!<br />     或许我就是这只灰子鸟, 即使用尽全力你还是离我那么远, 很抱歉我飞不到你的身边了, 或许没有我你的天空会更美...... 很抱歉我的翅膀太小, 你的天空应该属于别人......<br /></p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-09-17 20:20 <a href="http://www.blogjava.net/linansengling/archive/2006/09/17/70157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(二)  JPetStore的分析</title><link>http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Sun, 17 Sep 2006 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70122.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70122.html</trackback:ping><description><![CDATA[
		<p>  Spring JPetStore总体架构属于三层结构. 分为业务服务层  表现层  数据访问层<br />  <br />       业务服务层使用由POJO(java类)实现, 它们运行在轻量级的容器Spring中. 轻量级容器的功能在于, 一 管理业务对象的生命周期. 二 借助于Spring 的IOC(Inversion of Control, 控制反转)功能来完成对象之间的依赖关系, 而不用编程一显示完成. 三 借助于Spring的AOP(Aspect-Oriented Programming, 面向方面的程序设计) 为运行在容器中的对象提供一些企业服务, 比如声明式的事务管理. 业务层放弃了EJB而使用运行在轻量级容器的服务层, 会有以下好处:<br />1.  能够在Servlet引擎中运行. 不用EJB容器的服务器, tomcat就能搞定, 软件的费用低, 容易管理, 负载小.<br />2 . 容易在不同的应用服务器或serverlet引擎之间移植. 要想达到高可移植性, 对于EJB容器来说要比web容器困难, 比如, 就需要确保不同的EJB容器在启动时都会运行某一些代码.<br />3.  实现更为简单.<br />4. 不需要那么累赘的部署文件.<br />不好的地方:<br />1.  缺乏对远程调用的内置支持.<br />2.  缺乏一个标准的环境, 用于容纳, 管理业务对象.<br />3.  没有清晰的业务层.<br />4.  在不同的应用系统之间缺乏一致性, 第个系统都可能会有自己的一套做法: 怎么访问业务对象 怎么解决事务管理 怎么访问数据等.<br />虽然如此但现在我们有了spring一切就有了解决之道了.<br /><br />      表现层中, Spring JPetStore提供了两种不同的web层实现, 二者都要依靠同一个中间层, 一个是基于Structs的,另一个则是Spring的MVC框架. 二者都是基于JSTL的JSP视图.<br /><br />      数据访问层,使用了J2EE模式中的"数据访问对象"(Data Access Object, DAO), 他用一个DAO接口隐藏了持久化操作的细节, 这样使用这个模式的业务对象无需知道底层的持久化技术的细节. Spring JPetStore中使用了iBATIS框架.<br /><br />下面让我们来看一下应用中的细节内容吧, 先在Eclipse下把应用加进来方便调试, 运行.<br /><br />Eclipse可到(<a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>上下载)他是压缩包解压后就可用(可以再去下MyEclipe <a href="http://www.myeclipse.com/">http://www.myeclipse.com</a>是Eclipese的开发插件方便开发, 不过要付费可以下载它的破解文件<a href="http://jinxinxin.bokee.com/inc/myeclipse_keygens.rar">http://jinxinxin.bokee.com/inc/myeclipse_keygens.rar</a> MyEclipse的安装如果不会去Google一下吧). 好了开发工具安装后新建一工程jpetstore, 然后用..\spring-jpetstore\samples\jpetstore下的src目录复盖你的eclipse工作空间下的\jpetstore下的src目录,然后再把..\spring-jpetstore\samples\jpetstore下的war目录下的全部内容拷到你的eclipse工作空间下的\jpetstore下的WebRoot目录下复盖WEB-INF.回到eclipse下刷新工程你可看到如下:<br /><br /></p>
		<p align="center">
				<img style="WIDTH: 694px; HEIGHT: 691px" height="768" alt="e.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/e.jpg" width="1024" border="0" />
		</p>
		<p>
				<br />
				<br />先从数据访问层说起吧, 他使用iBATIS框架来访问数据库,在..\spring-jpetstore\samples\jpetstore\db目录下有它的各种数据库的schema有hsql, mysql, oracle, postges你使用拿一种数据库是通过..\spring-jpetstore\samples\jpetstore\war\WEB-INF下的jdbc.properties来配置的.默认的是hsql数据库:<br /># Properties file with JDBC-related settings.<br /># Applied by PropertyPlaceholderConfigurer from "dataAccessContext-local.xml".<br /># Targeted at system administrators, to avoid touching the context XML files.</p>
		<p>jdbc.driverClassName=org.hsqldb.jdbcDriver<br />jdbc.url=jdbc:hsqldb:hsql://localhost:9002<br />jdbc.username=sa<br />jdbc.password=<br />要改为用mysql只要改为:<br />#jdbc.driverClassName=org.hsqldb.jdbcDriver<br />#jdbc.url=jdbc:hsqldb:hsql://localhost:9002<br />#jdbc.username=sa<br />#jdbc.password=</p>
		<p>jdbc.driverClassName=com.mysql.jdbc.Driver<br />jdbc.url=jdbc:mysql://localhost:3306/jpetstore<br />jdbc.username=root<br />jdbc.password=<br /><br />即可.业务层能过...jpetstore.dao包下的接口来访问....jpetstore.dao.ibatis包从而通过iBATIS框架访问数据库中的数据的部份代码如下:<br /><br /><font color="#cc66ff">package org.springframework.samples.jpetstore.dao;<br />public<font color="#006600"> interface</font> AccountDao {</font></p>
		<p>
				<font color="#cc66ff">  Account getAccount(String username, String password) throws DataAccessException;</font>
		</p>
		<p>
				<font color="#cc66ff">  ...........</font>
		</p>
		<p>
				<font color="#cc66ff">}<br /></font>
				<br />
				<font color="#006600">package org.springframework.samples.jpetstore.dao.ibatis;<br />public class SqlMapAccountDao extends SqlMapDaoSupport <font color="#cc66ff">implements AccountDao</font> {</font>
		</p>
		<p>
				<font color="#006600">    public Account getAccount(String username, String password) throws DataAccessException {<br />    Account account = new Account();<br />    account.setUsername(username);<br />    account.setPassword(password);<br />    return (Account) getSqlMapTemplate().executeQueryForObject("getAccountByUsernameAndPassword", account);<br />  }<br />..............<br />}<br /></font>
				<br />Account.xml<br /><br /><font color="#ff00ff">&lt;mapped-statement name="getAccountByUsernameAndPassword" result-map="result"&gt;<br />    select<br /></font>      SIGNON.USERNAME as USERID,<br />      ACCOUNT.EMAIL,<br />      ACCOUNT.FIRSTNAME,<br />      ACCOUNT.LASTNAME,<br />      ACCOUNT.STATUS,<br />      ACCOUNT.ADDR1,<br />      ACCOUNT.ADDR2,<br />      ACCOUNT.CITY,<br />      ..    <br /><font color="#ff33ff">    from ACCOUNT, PROFILE, SIGNON, BANNERDATA<br />    where ACCOUNT.USERID = #username#</font><br />      and SIGNON.PASSWORD = #password#<br />      and SIGNON.USERNAME = ACCOUNT.USERID<br />      and PROFILE.USERID = ACCOUNT.USERID<br />      and PROFILE.FAVCATEGORY = BANNERDATA.FAVCATEGORY<br />  &lt;/mapped-statement&gt;<br /><br />然后到了业务层, 业务层为表达层提供服务,操纵数据层来完成业务逻辑比如从数据库中读出客启信息传给表达层 向数据库中插入订单等.业务层还要完成对数据库操作的完整性,正确性即事务管理. 此应用是通过Spring的AOP来完成无需编程实现如下:<br /><br /><font color="#009900">dataAccessContex-local.xml</font><br /><br /><font color="#9933ff">&lt;bean id="<font color="#ff0066">dataSource</font>" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;<br />  &lt;property name="driverClassName"&gt;&lt;value&gt;<font color="#ff3366">${jdbc.driverClassName}</font>&lt;/value&gt;&lt;/property&gt;<br />  &lt;property name="url"&gt;&lt;value&gt;${jdbc.url}&lt;/value&gt;&lt;/property&gt;<br />  &lt;property name="username"&gt;&lt;value&gt;${jdbc.username}&lt;/value&gt;&lt;/property&gt;<br />  &lt;property name="password"&gt;&lt;value&gt;${jdbc.password}&lt;/value&gt;&lt;/property&gt;<br /> &lt;/bean&gt;</font></p>
		<p>
				<font color="#9933ff"> &lt;!-- Transaction manager for a single JDBC DataSource --&gt;<br />&lt;bean id="<font color="#ff3366">sessionFactory</font>" class="org.springframework.orm.<font color="#ff3333">hibernate3</font>.LocalSessionFactoryBean"&gt;<br />  &lt;property name="dataSource"&gt;<br />   &lt;ref local="dataSource" /&gt;<br />  &lt;/property&gt;<br />  &lt;property name="mappingResources"&gt;<br />   &lt;list&gt;<br />    &lt;value&gt;org/springframework/samples/jpetstore/Hibernate/Account.hbm.xml&lt;/value&gt;<br />   &lt;/list&gt;<br />  &lt;/property&gt;<br />  &lt;property name="hibernateProperties"&gt;<br />   &lt;props&gt;<br />    &lt;prop key="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/prop&gt;<br />    &lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt;<br />   &lt;/props&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;!-- (see dataAccessContext-jta.xml for an alternative) --&gt;<br />&lt;bean id="<font color="#ff3366">transactionManager</font>" class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;<br />  &lt;property name="sessionFactory"&gt;<br />   &lt;ref local="sessionFactory" /&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;</font>
		</p>
		<p>
				<font color="#9933ff"> &lt;!-- SqlMap setup for iBATIS Database Layer --&gt;<br /> &lt;bean id="sqlMap" class="org.springframework.orm.ibatis.SqlMapFactoryBean"&gt;<br />  &lt;property name="configLocation"&gt;&lt;value&gt;WEB-INF/sql-map-config.xml&lt;/value&gt;&lt;/property&gt;<br /> &lt;/bean&gt;</font>
		</p>
		<p>
				<br />
				<font color="#9933ff"> &lt;!-- ========================= DAO DEFINITIONS: IBATIS IMPLEMENTATIONS ========================= --&gt;</font>
		</p>
		<p>
				<font color="#9933ff"> &lt;bean id="<font color="#ff3366">accountDao</font>" class="org.springframework.samples.jpetstore.dao.hibdaoimp.AccountDaoImp"&gt;<br />  &lt;property name="sessionFactory"&gt;<br />   &lt;ref local="sessionFactory" /&gt;<br />  &lt;/property&gt;<br />   <br /> &lt;/bean&gt;<br />................</font>
		</p>
		<p>
				<font color="#9933ff">&lt;/beans&gt;<br /></font>
		</p>
		<p>
				<font color="#009966">applicationContex.xml<br /></font>
				<br />
				<font color="#cc33ff">&lt;bean id="<font color="#ff0033">petStoreTarget</font>" class="org.springframework.samples.jpetstore.domain.logic.<font color="#ff3300">PetStoreImpl</font>"&gt;<br />  &lt;property name="<font color="#ff0033">accountDao</font>"&gt;&lt;ref bean="<font color="#ff0066">accountDao</font>"/&gt;&lt;/property&gt;<br />  &lt;property name="categoryDao"&gt;&lt;ref bean="categoryDao"/&gt;&lt;/property&gt;<br />  &lt;property name="productDao"&gt;&lt;ref bean="productDao"/&gt;&lt;/property&gt;<br />  &lt;property name="itemDao"&gt;&lt;ref bean="itemDao"/&gt;&lt;/property&gt;<br />  &lt;property name="orderDao"&gt;&lt;ref bean="orderDao"/&gt;&lt;/property&gt;<br /> &lt;/bean&gt;</font>
		</p>
		<p>
				<font color="#cc33ff"> &lt;!-- Transactional proxy for the JPetStore primary business object --&gt;<br /> &lt;bean id="<font color="#ff0033">petStore</font>" class="<font color="#ff0066">org.springframework.transaction.interceptor.</font><font color="#ffcc66">TransactionProxyFactoryBean</font>"&gt;<br />  &lt;property name="t<font color="#ff0066">ransactionManager</font>"&gt;&lt;ref bean="transactionManager"/&gt;&lt;/property&gt;<br />  &lt;property name="target"&gt;&lt;ref local="<font color="#ff0033">petStoreTarget</font>"/&gt;&lt;/property&gt;<br />  &lt;property name="transactionAttributes"&gt;<br />   &lt;props&gt;<br />    &lt;prop key="<font color="#ff0066">insert</font>*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />    &lt;prop key="update*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<br />    &lt;prop key="*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;<br />   &lt;/props&gt;<br />  &lt;/property&gt;<br /></font> <br />从上面的配置代码我们可看到通过Spring的IOC完成了<font color="#ff0033"><font color="#cc33ff">org.springframework.samples.jpetstore.domain.logic.</font><font color="#ff3300">PetStoreImpl<font color="#000000">等类的注入. 通过AOP用</font><font color="#ff0066">org.springframework.transaction.interceptor.</font><font color="#ffcc66">TransactionProxyFactoryBean</font></font></font><font color="#000000">来完成事务代理<br />业务层通过一个门面(facada)PetStoreFacade.java接口来为表达层提供服务:<br /><br /></font><font color="#cc00cc">package org.springframework.samples.jpetstore.domain.logic;<br /></font><font color="#9900cc">public <font color="#ff0066">interface PetStoreFacade</font> {</font></p>
		<p>
				<font color="#9900cc"> Account getAccount(String username);</font>
		</p>
		<p>
				<font color="#9900cc"> Account getAccount(String username, String password);</font>
		</p>
		<p>
				<font color="#9900cc"> void insertAccount(Account account);</font>
		</p>
		<p>
				<font color="#9900cc"> void updateAccount(Account account);</font>
		</p>
		<p>
				<font color="#000000">
						<font color="#9900cc">..........<br />}<br />用PetStoreImp.java来实现:<br /><br />package org.springframework.samples.jpetstore.domain.logic;<br /><br />public class PetStoreImpl implements PetStoreFacade, OrderService {</font>
				</font>
		</p>
		<p>
				<font color="#000000">
						<font color="#9900cc">  private AccountDao accountDao;</font>
				</font>
		</p>
		<p>
				<font color="#000000">
						<font color="#9900cc"> .........<br /></font>
				</font>
				<font color="#000000">
						<font color="#9900cc">
								<br /> public void setAccountDao(AccountDao accountDao) {<br />  this.accountDao = accountDao;<br /> }</font>
				</font>
		</p>
		<p>
				<br /> public Account getAccount(String username) {<br />    return this.accountDao.getAccount(username);<br />  }</p>
		<p>  public Account getAccount(String username, String password) {<br />  return this.accountDao.getAccount(username, password);<br />  }</p>
		<p>  public void insertAccount(Account account) {<br />  this.accountDao.insertAccount(account);<br />  }</p>
		<p>  .......<br />}<br /><br /><font color="#000000">表达层这里介绍Structs,Structs中通过PetStoreFacade接口来访问业务层:<br /><br /></font><font color="#cc00ff">package org.springframework.samples.jpetstore.web.struts;</font></p>
		<p>
				<font color="#cc00ff">public abstract class BaseAction extends Action {</font>
		</p>
		<p>
				<font color="#cc00ff">  private</font>
				<font color="#ff0066">PetStoreFacade petStore;</font>
		</p>
		<p>
				<font color="#cc00ff"> public void setServlet(ActionServlet actionServlet) {<br />  super.setServlet(actionServlet);<br />  ServletContext servletContext = actionServlet.getServletContext();<br />  WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);<br />  <font color="#ff0033">this.petStore = (PetStoreFacade) wac.getBean("petStore");<br /></font> }</font>
		</p>
		<p>
				<font color="#cc00ff"> protected PetStoreFacade getPetStore() {<br />  return petStore;<br /> }</font>
		</p>
		<p>
				<font color="#cc00ff">}<br /><br /><br /></font>
				<font color="#009900">public class SignonAction extends<font color="#cc00ff"> BaseAction</font> {</font>
		</p>
		<p>
				<font color="#009900">  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {<br />       AccountActionForm acctForm = (AccountActionForm) form;<br />      String username = acctForm.getUsername();<br />      String password = acctForm.getPassword();<br />     <font color="#cc00ff"> Account account = getPetStore().getAccount(username, password);</font><br />.....<br />                return mapping.findForward("success");<br />    }<br /><font color="#000000">Structs框架通过struct-config.xml文来控制相关映射转发的:</font>    <br /><br />struct-config.xml       </font>
				<font color="#cc00ff">
						<font color="#009900">
								<br />&lt;action path="/<font color="#ff0066">signon</font>" type="org.springframework.samples.jpetstore.web.struts.<font color="#cc00ff">SignonAction</font>"<br />   name="accountForm" scope="request"<br />   validate="false"&gt;<br />   &lt;forward name="success" path="/<font color="#cc00ff">index.jsp</font>"/&gt;<br />  &lt;/action&gt;<br /><br /></font>
				</font>
				<font color="#000000">关于jsp就不在多说了下面再来看一下它的web.xml文件:</font>
		</p>
		<p>
				<font color="#cc00ff">  &lt;context-param&gt;<br />  &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />  &lt;param-value&gt;<br />   <font color="#ff0066">/WEB-INF/dataAccessContext-local.xml  /WEB-INF/applicationContext.xml</font><br />  &lt;/param-value&gt;<br />   &lt;/context-param&gt;<br /><br />&lt;servlet&gt;<br />  &lt;servlet-name&gt;context&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;<font color="#ff0066">org.springframework.web.context.ContextLoaderServlet</font>&lt;/servlet-class&gt;<br />  &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br /> &lt;/servlet&gt;</font>
		</p>
		<p>
				<font color="#cc00ff"> &lt;servlet&gt;<br />  &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />  &lt;servlet-class&gt;<font color="#ff0033">org.apache.struts.action.ActionServlet</font>&lt;/servlet-class&gt;<br />  &lt;load-on-startup&gt;3&lt;/load-on-startup&gt;<br /> &lt;/servlet&gt;</font>
		</p>
		<p>
				<font color="#cc00ff">  </font>
				<font color="#009966">  &lt;servlet-mapping&gt;<br />   &lt;servlet-name&gt;<font color="#ff0066">action</font>&lt;/servlet-name&gt;<br />  <br />  &lt;url-pattern<font color="#ff0066">&gt;*.do</font>&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;</font>
		</p>
		<p>
				<font color="#009966"> </font>
				<font color="#000000">还有关于远程机制有Caucho的Hessian(一个借助HTTP的二进制协议) Burlap(一个基于XML的借助HTTP的传输协议), Apache Axis提供的JAX-RPC(基于SOAP的借助HTTP传输的web serverice), 还有基于RMI的远程调用.<br />想了解更多还是自已细看里面的代码吧!<br /><a href="/linansengling/archive/2006/09/19/70625.html">请继续关注Spring JPetStore(三) 在其上实现自已的Sunlight Netstore</a></font>
		</p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-09-17 12:16 <a href="http://www.blogjava.net/linansengling/archive/2006/09/17/70122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(一) 发布JPetStore应用</title><link>http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Sat, 16 Sep 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70041.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70041.html</trackback:ping><description><![CDATA[
		<p align="left">    PetStore(宠物店)相信大家都不默生 , 它的功能包括一个产品目录 , 一个购物车 , 客户账户管理 , 订单历史 , 还有一些基本的个性选项功能 . 这是一个相当标准的数据驱动的J2EEWeb应用系统(没有EIS集成,也没有消息处理需求) . The Middleware Company(TMC, 著名JAVA社区TSS的母公司)在2002年正式规范化了本系统的业务需求,并且在2003年出了进一步修正 , 加入了两种特殊的需求: 要支持用唯一的数据库保存所有的持久化数据.  也要支持双数据库的场境: 一个数据库保存客户订单,另一个保存产品和账务数据. 前一种场境当然性能更好,对于相对简单的应用系统也更为实用. 后一种使用了主数据库实现目录跟踪功能(也就是说, 存放产品目录和客户账户数据), 而客户订单则分开存放在另一个订单数据库中. 这样, 由于系统在两个数据库上运行, 所以在下订单的时候就要求实现分布化事务.对PetStore有网上有各种不同的实现这里要讨论的是基于Sructs+Spring+iBATIS的轻量级框架实现的(来自于&lt;&lt;J2EE Development without EJB&gt;&gt; Rod Johnson  电子工业出版社)<br />源码下载(<a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764558315,descCd-download_code.html">http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764558315,descCd-download_code.html</a>) <br /><br />       好了有了源码让我们先来一睹为快然后再来分析.<br />       要构建Spring Jpetstore 应用你还需要安装JDK 和Tomcat详情请看我的<a title="jsp入门" href="/linansengling/archive/2006/09/12/69243.html">JSP开发入门用户登陆认证</a> 此外为了用ANT构建应用还要安装设置ANT工具(下载地址:http://www.jakarta.apache.org) ANT的安装软件是解压软件包,只需把压缩文件解压到本地硬盘. 并设置一下环境变量:ANT_HOME=ANT的安装目录 PATH=%PATH%;%ANT_HOME%\bin; CLASSPATH=%CLASSPATH%;%ANT_HOME%\lib;<br />        好了环境搭建完闭, 现在进入 ..\spring-jpetstore\samples\jpetstore&gt;<br />执行ANT命令 ..\spring-jpetstore\samples\jpetstore&gt;ant<br />则将在 ..\spring-jpetstore\samples\jpetstore\dist目录下生成jpetstore.war的发布文件. 现在大功告成把jpetstore.war文件拷到tomcat安装目录\webapps\下. 启动tomcat服务器(tomcat安装目录\bin\star_up.bat). 启动hsql数据库(..\spring-jpetstore\samples\jpetstore\db\hsqldb\server.bat). 好了一切搞定现在打开浏览器输入(<a href="http://localhost:8080/jpetstore">http://localhost:8080/jpetstore</a>)你将可看到如下:<br /><br /></p>
		<p align="center">
				<img style="WIDTH: 670px; HEIGHT: 301px" height="768" alt="index.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/index.jpg" width="1024" border="0" /> <br /><br />借助于(..\spring-jpetstore\samples\jpetstore\db\hsqldb\manager.bat)看到的hsql数据库中的数据<br /><br /></p>
		<p align="center">
				<img style="WIDTH: 697px; HEIGHT: 344px" height="768" alt="db.jpg" src="http://www.blogjava.net/images/blogjava_net/linansengling/db.jpg" width="1024" border="0" />
		</p>
		<p align="left">发布搞定下面对它做一些简要的分析!<br /><a title="spring jpetstore(二)" href="/linansengling/archive/2006/09/17/70122.html" target="_blank">请看Spring JPetStore(二)   JPetStore的分析</a><br /></p>
<img src ="http://www.blogjava.net/linansengling/aggbug/70041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-09-16 15:13 <a href="http://www.blogjava.net/linansengling/archive/2006/09/16/70041.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>天南地北双飞客 老翅几回寒暑</title><link>http://www.blogjava.net/linansengling/archive/2006/09/16/70015.html</link><dc:creator>fds</dc:creator><author>fds</author><pubDate>Sat, 16 Sep 2006 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/linansengling/archive/2006/09/16/70015.html</guid><wfw:comment>http://www.blogjava.net/linansengling/comments/70015.html</wfw:comment><comments>http://www.blogjava.net/linansengling/archive/2006/09/16/70015.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/linansengling/comments/commentRss/70015.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/linansengling/services/trackbacks/70015.html</trackback:ping><description><![CDATA[        "天南地北双飞客 老翅几回寒暑" 记得是&lt;&lt;神雕侠侣&gt;&gt;中的两句 . 也是最让我感动的一幕 , "两只白雕从绝情谷底救出了它们可爱的小主人郭襄 , 而后一只不幸中了金轮法王的暗算而亡 . 另一只白雕不愿独自狐独生活在这个世界上 , 撞向了石崖 ."  这或许就是里面对爱的最好演艺吧 . "物尤如此 , 人何以堪". 相爱的人切不能永远在一起 , 我相信世界上或许真的有一个地方叫"绝情谷" , 也有一种花叫"情花" , 被情花刺到的人只要想到他的爱人就会心痛 , 爱得越深痛得越深 , 唯一能治好的是他不在想她 , 不在想她 , 他能做到吗?....... 他的世界里不能没有他 , 没有她他宁愿死 . 那该怎么办呢? "一觉醒来的过儿 , 发现龙儿离开了 , 她真的走了...... 她该怎么办呢 . 听说她去了很远的地方 , 十年后她会回来.......  一日白了少年头 , 十年为了十年之后的约定 , 他经历了很多 , 他成了人们敬仰的神雕大侠 , 他的左臂断了 , 他的头发白了 , 他的脸上写满了生活的沧桑 , 终于尽管是黄蓉当时的一句慌言"十年后的相约" , 他们还是在绝情谷底再次见面........"<img src ="http://www.blogjava.net/linansengling/aggbug/70015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/linansengling/" target="_blank">fds</a> 2006-09-16 11:42 <a href="http://www.blogjava.net/linansengling/archive/2006/09/16/70015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>