??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成网亚洲欧洲无码,亚洲AV成人影视在线观看,国产精品亚洲专一区二区三区http://www.tkk7.com/linansengling/zh-cnFri, 09 May 2025 22:36:55 GMTFri, 09 May 2025 22:36:55 GMT60JAVA和LIUNXq行到底http://www.tkk7.com/linansengling/archive/2008/02/11/179593.htmlfdsfdsMon, 11 Feb 2008 03:17:00 GMThttp://www.tkk7.com/linansengling/archive/2008/02/11/179593.htmlhttp://www.tkk7.com/linansengling/comments/179593.htmlhttp://www.tkk7.com/linansengling/archive/2008/02/11/179593.html#Feedback1http://www.tkk7.com/linansengling/comments/commentRss/179593.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/179593.html

fds 2008-02-11 11:17 发表评论
]]>
VHDL实现VGA接口设计http://www.tkk7.com/linansengling/archive/2007/01/14/93816.htmlfdsfdsSun, 14 Jan 2007 14:55:00 GMThttp://www.tkk7.com/linansengling/archive/2007/01/14/93816.htmlhttp://www.tkk7.com/linansengling/comments/93816.htmlhttp://www.tkk7.com/linansengling/archive/2007/01/14/93816.html#Feedback0http://www.tkk7.com/linansengling/comments/commentRss/93816.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/93816.html阅读全文

fds 2007-01-14 22:55 发表评论
]]>
生活的忠?/title><link>http://www.tkk7.com/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.tkk7.com/linansengling/archive/2006/12/21/89223.html</guid><wfw:comment>http://www.tkk7.com/linansengling/comments/89223.html</wfw:comment><comments>http://www.tkk7.com/linansengling/archive/2006/12/21/89223.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/linansengling/comments/commentRss/89223.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/linansengling/services/trackbacks/89223.html</trackback:ping><description><![CDATA[<font color=#ffffff></font> <p align=left>我不会给你钱Q因为我没有?</p> <p align=left>l你生活的忠?<br>多吃些粗_?<br>l别人比他们自己期许的更多,q且用心d<br>熟记你喜Ƣ的诗歌<br>不要M你听到的每g事,不要花光你的所有,不要想睡多久q多久?br>无论何时?#8220;我爱?#8221;Q请真心实意?br>无论何时?#8220;对不?#8221;Q请看着Ҏ的眼睛?br>怿一见钟情?br>永远不要忽视别h的梦惟?br>深情热烈地爱Q也怽会受伤,但这是人生完整的唯一Ҏ?br>用一U明的Ҏ解决争议Q不要冒犯?br>永远不要以貌取h。慢慢地_但要q速地惟?br>当别人问你不惛_{的问题ӞW着?#8220;你ؓ什么想知道Q?#8221;<br>C那些敢于承担最大风险的人才能得到最q爱和最大的成就?br>l妈妈打电话。如果不行,臛_在心里想着奏V?br>当别人打喷嚏Ӟ说一?#8220;菩萨保佑”?br>如果你失败了Q千万不要忘记݅取教训?br>C三个“?#8221;Q尊重你自己Q尊重别人;保持严Q对自己的行责?br>不要让小的争端损毁了一D伟大的友谊?br>无论何时你发现自己做错了Q竭所能去弥补。动作要快!<br>无论什么时候打电话Q摘赯{的时候请微笑Q因为对方能感觉刎ͼ<br>找一个你p的hl婚 Q?因ؓ当年龄大了以后,你会发觉喜欢聊天是一个h最大的优点?br>扄旉Q单独呆会儿?br>ƣ然接收改变Q但是不要摒弃你的个人理c?br>CQ沉默是金?br>多看点书Q少看点电视?br>q一U高而诚实的生活。当你年老时回想赯去,你就能再一ơn受h生?br>怿上帝Q但是别忘了锁门?br>家庭的融z氛围是难能可贵的?br>你的全力让家^和谐?br>当你和你亲近的h吵嘴的时候,试着׃ZQ不要扯出那些陈芝麻Q烂谷子的事?br>不要摆脱不了昨天?br>多注意言下之意?br>和别人分享你的知识,那才是永恒之道!<br>善待我们的地球?br>不要愚弄自然母亲?br>忙自p做的事?br>不要怿接吻时从不闭眼的伴G?br>每年臛_M个你从没去过的地斏V?br>如果你赚了很多钱Q在zȝ的时候多行善事。这是你能得到的最好回报?br>C有时候,不是最好的收获也是一U好q?br>深刻理解所有的规则Q合理地更新他们?br>CQ最好的关系存在于对别h的爱胜于对别人的索求之上?br>回头看看你发誓取得的目标Q然后评判你到底有多成功?br>无论是烹调还是爱情,都用癑ֈ之百的负责态度对待Q但是不要期求太多的回报?/p> <img src ="http://www.tkk7.com/linansengling/aggbug/89223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/linansengling/" target="_blank">fds</a> 2006-12-21 10:52 <a href="http://www.tkk7.com/linansengling/archive/2006/12/21/89223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嵌入式系l入?/title><link>http://www.tkk7.com/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.tkk7.com/linansengling/archive/2006/11/06/79394.html</guid><wfw:comment>http://www.tkk7.com/linansengling/comments/79394.html</wfw:comment><comments>http://www.tkk7.com/linansengling/archive/2006/11/06/79394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/linansengling/comments/commentRss/79394.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/linansengling/services/trackbacks/79394.html</trackback:ping><description><![CDATA[q久以来听了我的一个老师关于后PC时代的到来,对嵌入式pȝ产生了极大兴,投入了很大的_֊在学Q有很多的收获写出来与朋友分享?br /><br />    对于刚进入嵌入式pȝ的学习首先是象学J2EE那样看不懂且不知所云的名字Q所以先要搞定这些名词:<br /><br /><strong>嵌入式Y件系l的几种模式</strong>Q?br /><br />􀁺 一   单嵌入式pȝQ包含简单的g初始化以及应用代码?br />􀁺 二 ?单嵌入式pȝQ包含bootloader以及应用代码Qbootloader与应用紧密集成在一P构成一个嵌<br />            入式pȝ?br />􀁺 三 ?复杂嵌入式系l,包含bootloader、操作系l、应用Y件?br /><br /><strong>开发编l环?/strong>Q?br /><br />      ads1.2                         arm的编译器arm公司开发的<br />     arm-elf-gcc                  Liunx环境下的arm~绎?br />      cygwin+armtools          windows下模拟linux的程序和q行在cygwin下的arm的编译器<br />      ARM_SDT_2.51         arm比较早版本的~译?br />q么多开发编l环境选择适合的就行如果你用操作系l是Linux~辑工具是vi之类一般是arm-elf-gcc 如果操作pȝ是windows见意ads1.2 ?br /><br /><strong>嵌入式操作系l:</strong><br /><br />        VxWorks            实时性最好,要付费,一般用在高端实旉域,好像国的飞船上q它?br />         uc/os-II              单适合入门Q好多书都讲q个操作pȝQ其代码量也不大如果要看它的源码的话?br />         winCE                微Y的东四,收费一般小应用׃用它的,高端手机比如多普达上用的是它?br />        uclinux                 是ؓ适应没有MMCg的CPUQarm7TDMIQ开发的liunx的版本,开源、免费,怿 <br />                                   是今天后的趋势,学习有一定的隑ֺQ网上资料还是很多的?br />        liunx                    开源、免?ARM9上就可以?br /><br /><strong>其它名词Q?/strong><br /><br />       SkyEye             是开源Y件 的一个项目,SkyEye的目标是在Linux和Windows操作pȝ里提供一个完全的<br />                                仿真环境。SkyEye仿真环境相当于一个嵌入式计算机系l,你可以在SkyEye里运行一?br />                                嵌入式Linux操作pȝQ如ARMLinuxQuClinuxQuc/OSII(ucos-ii){,q能分析和调试它?br />                                的源代码?br />Boot Loader             是在操作系l内核运行之前运行的一D小E序。通过q段程序,我们可以初始?br />                                件设备、徏立内存空间的映射图,从而将pȝ的Yg环境带到一个合适的状态,以便<br />                                为最l调用操作系l内核准备好正确的环境。相当于PCZ的BIOS?br /><br />Blob、Bootldr、Redboot、U-Boot、ABLE<br />              <br />     Boot Loader 是严重地依赖于硬件而实现的Q除了依赖于CPU 的体pȝ构外QBoot Loader实际上也依赖于具体的嵌入式板U设备的配置。这也就是说Q对于两块不同的嵌入式板而言Q即使它们是Z同一UCPU 而构建的Q要惌q行在一块板子上的Boot Loader E序也能q行在另一块板子上Q通常也都需要修改BootLoader 的源E序。Blob、Bootldr、Redboot、U-Boot、ABLE都是Z对于CPU 的体pȝ构外开发的通用的BootLoaderE序Q你只需对这些程序进行移植就行了?br /><br /><strong>嵌入式处理器的启动过E:<br /></strong>     <br />􀁺 通常pȝ上电Q或者复位)以后Q程序从地址I间?x0开始􀁺 即PCQ程序计数器Q指针,指向0x0。从q个地址开始读取指令ƈq行。通常q个地址对应的是Bank0。因为系l是从bank0上引导的Q所以,在Bank0上连接保存有启动代码的FlashROMQ这是我们常说的Boot ROM即BootloaderE序?br />     <br />Bootloader要实玎ͼ<br /><br />􀁺 gpȝ自检?br /><br />􀁺 配置其他Bank或者端口、外讄工作模式?br /><br />􀁺 处理中系l的中断?在不支持remap的处理器中,中断必然要经qBoot ROM的空_q时QBoot ROM<br />      需要处理的d是把固定的中断向量映射C个可~程的中断处理子E序的地址?br /><br />     引导操作pȝ<br />?pȝ配置完成以后Q?Bootloader需要把操作pȝQ或者其他程序)装蝲到SDRAMQ就是系l的RAM区)Q然后,把PC指针指向E序的RAMI间Q操作pȝ启动Q这是引导?br /><br />     FlashQBoot ROMQ编E?br />?对引导FlashQ或者其他的非易失性存储器Q编E,通过串口或者以太网口下载编译成功的操作pȝ或者应用程序,甚至Boot ROM本n。?要想实现Boot ROM的自~程Q必让BootE序是在RAM中运?img src ="http://www.tkk7.com/linansengling/aggbug/79394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/linansengling/" target="_blank">fds</a> 2006-11-06 14:09 <a href="http://www.tkk7.com/linansengling/archive/2006/11/06/79394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 实现分页技?Structs+Hibernate+MySQL)http://www.tkk7.com/linansengling/archive/2006/09/21/70960.htmlfdsfdsWed, 20 Sep 2006 16:42:00 GMThttp://www.tkk7.com/linansengling/archive/2006/09/21/70960.htmlhttp://www.tkk7.com/linansengling/comments/70960.htmlhttp://www.tkk7.com/linansengling/archive/2006/09/21/70960.html#Feedback30http://www.tkk7.com/linansengling/comments/commentRss/70960.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/70960.html    通过Structs+Hibernate+MySQL数据数来实现分页技术的应用. 
   
   源程序下?/a>
   至于Hibernate, Structs, MySQL的具体用法我׃说了,你可以看源程序来查看详细内容.我们来看看分应用的相关内容.
 架构上和Spring JPetStore没多区? 只是没用Spring框架所以Structs中的UserdisplayAction中必new出各个对象ƈ完成它们之间的关? q就是Spring IOC可自动完成的功能. 它也是三?表现?Structs), 业务?POJO), 数据?Hibernate讉KMySQL). 同样业务层通过DAO接口(UserDAO)来访问数据库, 讉K数据库的通过Hibernate(在UserDAOImpl中实?. q一ơ分要在业务层中来实现, 业务层同样向表现层提供一个Facada(门面,  UserManager接口), 来访问业? 在UserManagerImpl中通过调用UserDAO来访问数? 调用POJO来实现分功? 看以下关键代?

先看POJO的分布类?

Page.java

package org.flyware.util.page;

public class Page { 
    
    private boolean hasPrePage; 
    
     private boolean hasNextPage; 
        
    private int everyPage; 
    
    private int totalPage; 
        
    private int currentPage; 
    
      private int beginIndex; 
    
    
      public Page(){
       
    } 
    
        public Page(int everyPage){
        this.everyPage = everyPage;
    }
   
    /** The whole constructor */
    public Page(boolean hasPrePage, boolean hasNextPage, 
                    int everyPage, int totalPage,
                    int currentPage, int beginIndex) {
        this.hasPrePage = hasPrePage;
        this.hasNextPage = hasNextPage;
        this.everyPage = everyPage;
        this.totalPage = totalPage;
        this.currentPage = currentPage;
        this.beginIndex = beginIndex;
    }

      ......    
      
   public int getTotalPage() {
        return totalPage;
    } 
   
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
   
}

PageUtil.java(用来构造Page实例 相当于page工厂)

package org.flyware.util.page;

public class PageUtil {
   
    private static final Log logger = LogFactory.getLog(PageUtil.class); 
    
       public static Page createPage(Page page, int totalRecords){ 

        return createPage(page.getEveryPage(), page.getCurrentPage(), totalRecords);
    } 
    
        public static Page createPage(int everyPage, int currentPage, int totalRecords){
        everyPage = getEveryPage(everyPage); 

        currentPage = getCurrentPage(currentPage); 

        int beginIndex = getBeginIndex(everyPage, currentPage); 

        int totalPage = getTotalPage(everyPage, totalRecords); 

        boolean hasNextPage = hasNextPage(currentPage, totalPage); 

        boolean hasPrePage = hasPrePage(currentPage);
       
        return new Page(hasPrePage, hasNextPage, 
                                everyPage, totalPage,
                                currentPage, beginIndex);
    }
   
    private static int getEveryPage(int everyPage){
        return everyPage == 0 ? 10 : everyPage;
    }
   
    private static int getCurrentPage(int currentPage){
        return currentPage == 0 ? 1 : currentPage;
    }
   
    private static int getBeginIndex(int everyPage, int currentPage){
        return (currentPage - 1) * everyPage;
    }
       
    private static int getTotalPage(int everyPage, int totalRecords){
        int totalPage = 0;
               
        if(totalRecords % everyPage == 0)
            totalPage = totalRecords / everyPage;
        else
            totalPage = totalRecords / everyPage + 1 ;
               
        return totalPage;
    }
   
    private static boolean hasPrePage(int currentPage){
        return currentPage == 1 ? false : true;
    }
   
    private static boolean hasNextPage(int currentPage, int totalPage){
        return currentPage == totalPage || totalPage == 0 ? false : true;
    }
   

}



业务实现c?UserManaerImpl.java

package com.linan.service.impl;

public class UserManagerImpl implements UserManager {
   
    private UserDAO userDAO;

       public void setUserDAO(UserDAO userDAO) { 

        this.userDAO = userDAO; 

    } 
  
//提供业务Ҏ

public Result listUser(Page page) throws HibernateException,

ObjectNotFoundException { 

        int totalRecords = userDAO.getUserCount(); 

        if(totalRecords == 0) 

            throw new ObjectNotFoundException("userNotExist", null);
 
        page = PageUtil.createPage(page, totalRecords); 

        List users = userDAO.getUserByPage(page);   
   
        return new Result(page, users); 

    }

}


DAO数据讉K实现c?UserDAOImpl.java

package com.linan.dao.impl;

public class UserDAOImpl  implements UserDAO {

  ...........

      public List getUserByPage(Page page) throws HibernateException { 

        String querySentence = "FROM user in class com.linan.bo.Userlist"; 

        Query query = getSession().createQuery(querySentence); 

         //实现分页功能

        query.setFirstResult(page.getBeginIndex()) 

                .setMaxResults(page.getEveryPage()); 

        return query.list(); 

    }

}

表现层Structs中的Action UserdisplayAction.java

package com.linan.struts.action;

public class UserdisplayAction extends Action {

   public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {

   Page page=new Page(); 

        UserManagerImpl userManager=new UserManagerImpl();

        UserDAOImpl userDAO=new UserDAOImpl();

        userManager.setUserDAO(userDAO);

       //掉用业务代理完成分页

        Result result=userManager.listUser(page);

        List list=result.getContent();

        HttpSession session=request.getSession();

        session.setAttribute("list",list);

  return mapping.findForward("displayGo");

 }

}


 



fds 2006-09-21 00:42 发表评论
]]>
Spring JPetStore(? 实现自已的Sunlight Netstorehttp://www.tkk7.com/linansengling/archive/2006/09/19/70625.htmlfdsfdsTue, 19 Sep 2006 13:56:00 GMThttp://www.tkk7.com/linansengling/archive/2006/09/19/70625.htmlhttp://www.tkk7.com/linansengling/comments/70625.htmlhttp://www.tkk7.com/linansengling/archive/2006/09/19/70625.html#Feedback20http://www.tkk7.com/linansengling/comments/commentRss/70625.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/70625.html     看过了Spring JPetStore自已觉得界面有点不好? 我觉得界面在购物|站中还是重要的. 所以在Spring  JPetStore基础上我用Structs的Title框架对原pȝ做了一定的改变形成了自q"阛_|店"(Sunlight NetStore), 现在贴出来和大家分n, 大虾见了请别见笑, q请多多指教, 学生的作? 都没多少实用? 只是学了一些东西来l练?

Sunlight NetStore源码下蝲

下蝲的源E序是Eclipse下完成的工程源程?可以在Eclipse下只接导入进来打开完成发布.  也可以在tomcat安装目录\webapps目录下新Z文g夹jpetstore然后把下载下来的WebRoot目录下的所有内定w拯?  数据库的建立, 我开发时使用的是mysql4.0(如果你用的是mysql5.0则可能有时会出错, 5.0是它的测试版我用了感觉有时会出现莫明其妙的错?q以为是E序错误, 费了我好多时? ?.0是它的发布版很稳定的). 使用mysql你可以配合用MySQL Control Center(mysql4.0, MySQL Control Center可以|上下蝲Google一下吧q里׃提供下蝲地址?很好用的和微软的SQL Server差不? 在MySQL Control Center中执行数据库脚本, 然后启动tomcat服务? 你将看到如下:  (开发用的技术是Structs里面的东? ׃说了. 架构, 业务层和数据层和原来的不? 想了解请看Spring JPetStore(? Spring JPetStore的分?/a>)              
                                                                                                                                 

index1.jpg



index3.jpg

           

dog.jpg

  

data.jpg



fds 2006-09-19 21:56 发表评论
]]>
灰子鸟的天空http://www.tkk7.com/linansengling/archive/2006/09/17/70157.htmlfdsfdsSun, 17 Sep 2006 12:20:00 GMThttp://www.tkk7.com/linansengling/archive/2006/09/17/70157.htmlhttp://www.tkk7.com/linansengling/comments/70157.htmlhttp://www.tkk7.com/linansengling/archive/2006/09/17/70157.html#Feedback1http://www.tkk7.com/linansengling/comments/commentRss/70157.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/70157.html     世界上有一U鸟叫灰子鸟, 一生下来就没有? 生命中注定要飞翔, 永远都不能停......
     我像一只灰子鸟, 我想飞翔, 永远都不要停. 我一个h在天IZ漫无目的的飞? 不知飞了多远, 也不知还能飞多远. 只是记得自已q在飞着, 一直飞着...... 有一天我遇到了一南ȝ大雁, 它们告诉? 跟我们一赯吧小灰子? 前面很冷你会被冻ȝ, 跟我们一起到南方d, 那里有O漫的pq有充的食? 谢谢你们的好意大雁阿? 我是灰子? 在我的天I没有停留和目的, 我只有往前飞那是我的使命.灰子鸟告别了雁群l箋往前飞? 天空来暗, I气中充满着寒流, 灰子鸟感C大难卛_来.....
     灰子鸟很? 很冷. 它连睁开双眼都觉得那么用? 它好像睡一觉啊! 呼呼的风声告诉他, 他还在飞? 它还要飞? q是它会L? 灰子鸟还是一直飞, 因ؓ那是它的使命, 它没有选择, 因ؓ它没有脚, 生命中注定了飞翔..
     灰子鸟还要飞? 对他惛_q方, 他想d扑֮的天I? 在那里是它们的天? 那里有宽阔的草场, 健康的牛?.. 可是灰子鸟的膀太小? 属于他的天空太小, 即它用全力也飞不C...... 它流泪了!
     或许我就是这只灰子鸟, 即用尽全力你还是离我那么远, 很抱歉我飞不C的n边了, 或许没有我你的天IZ更美...... 很抱歉我的翅膀太小, 你的天空应该属于别h......



fds 2006-09-17 20:20 发表评论
]]>
Spring JPetStore(? JPetStore的分?/title><link>http://www.tkk7.com/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.tkk7.com/linansengling/archive/2006/09/17/70122.html</guid><wfw:comment>http://www.tkk7.com/linansengling/comments/70122.html</wfw:comment><comments>http://www.tkk7.com/linansengling/archive/2006/09/17/70122.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.tkk7.com/linansengling/comments/commentRss/70122.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/linansengling/services/trackbacks/70122.html</trackback:ping><description><![CDATA[ <p>  Spring JPetStoreM架构属于三层l构. 分ؓ业务服务层?表现层?数据讉K?br />  <br />       业务服务层用由POJO(javac?实现, 它们q行在轻量的容器Spring? 轻量U容器的功能在于, 一 理业务对象的生命周? ?借助于Spring 的IOC(Inversion of Control, 控制反{)功能来完成对象之间的依赖关系, 而不用编E一昄完成. ?借助于Spring的AOP(Aspect-Oriented Programming, 面向斚w的程序设? 行在容器中的对象提供一些企业服? 比如声明式的事务理. 业务层放弃了EJB而用运行在轻量U容器的服务? 会有以下好处:<br />1.  能够在Servlet引擎中运? 不用EJB容器的服务器, tomcatp搞定, 软g的费用低, Ҏ理, 负蝲?<br />2 . Ҏ在不同的应用服务器或serverlet引擎之间UL. 要想辑ֈ高可UL? 对于EJB容器来说要比web容器困难, 比如, 需要确保不同的EJB容器在启动时都会q行某一些代?<br />3.  实现更ؓ?<br />4. 不需要那么篏赘的部v文g.<br />不好的地?<br />1.  ~Z对远E调用的内置支持.<br />2.  ~Z一个标准的环境, 用于容纳, 理业务对象.<br />3.  没有清晰的业务层.<br />4.  在不同的应用pȝ之间~Z一致? W个pȝ都可能会有自q一套做? 怎么讉K业务对象 怎么解决事务理 怎么讉K数据{?<br />虽然如此但现在我们有了spring一切就有了解决之道?<br /><br />      表现层中, Spring JPetStore提供了两U不同的web层实? 二者都要依靠同一个中间层, 一个是ZStructs?另一个则是Spring的MVC框架. 二者都是基于JSTL的JSP视图.<br /><br />      数据讉K?使用了J2EE模式中的"数据讉K对象"(Data Access Object, DAO), 他用一个DAO接口隐藏了持久化操作的细? q样使用q个模式的业务对象无需知道底层的持久化技术的l节. Spring JPetStore中用了iBATIS框架.<br /><br />下面让我们来看一下应用中的细节内容吧, 先在Eclipse下把应用加进来方便调? q行.<br /><br />Eclipse可到(<a >http://www.eclipse.org/downloads/</a>上下?他是压羃包解压后可?可以再去下MyEclipe <a >http://www.myeclipse.com</a>是Eclipese的开发插件方便开? 不过要付费可以下载它的破解文?a >http://jinxinxin.bokee.com/inc/myeclipse_keygens.rar</a> MyEclipse的安装如果不会去Google一下吧). 好了开发工具安装后新徏一工程jpetstore, 然后?.\spring-jpetstore\samples\jpetstore下的src目录复盖你的eclipse工作I间下的\jpetstore下的src目录,然后再把..\spring-jpetstore\samples\jpetstore下的war目录下的全部内容拷到你的eclipse工作I间下的\jpetstore下的WebRoot目录下复盖WEB-INF.回到eclipse下刷新工E你可看到如?<br /><br /></p> <p align="center"> <img style="WIDTH: 694px; HEIGHT: 691px" height="768" alt="e.jpg" src="http://www.tkk7.com/images/blogjava_net/linansengling/e.jpg" width="1024" border="0" /> </p> <p> <br /> <br />先从数据讉K层说起吧, 他用iBATIS框架来访问数据库,?.\spring-jpetstore\samples\jpetstore\db目录下有它的各种数据库的schema有hsql, mysql, oracle, postges你用拿一U数据库是通过..\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 />卛_.业务层能q?..jpetstore.dao包下的接口来讉K....jpetstore.dao.ibatis包从而通过iBATIS框架讉K数据库中的数据的部䆾代码如下:<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"><mapped-statement name="getAccountByUsernameAndPassword" result-map="result"><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 />  </mapped-statement><br /><br />然后C业务? 业务层ؓ表达层提供服?操纵数据层来完成业务逻辑比如从数据库中读出客启信息传l表辑ֱ 向数据库中插入订单等.业务层还要完成对数据库操作的完整?正确性即事务理. 此应用是通过Spring的AOP来完成无需~程实现如下:<br /><br /><font color="#009900">dataAccessContex-local.xml</font><br /><br /><font color="#9933ff"><bean id="<font color="#ff0066">dataSource</font>" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><br />  <property name="driverClassName"><value><font color="#ff3366">${jdbc.driverClassName}</font></value></property><br />  <property name="url"><value>${jdbc.url}</value></property><br />  <property name="username"><value>${jdbc.username}</value></property><br />  <property name="password"><value>${jdbc.password}</value></property><br /> </bean></font></p> <p> <font color="#9933ff"> <!-- Transaction manager for a single JDBC DataSource --><br /><bean id="<font color="#ff3366">sessionFactory</font>" class="org.springframework.orm.<font color="#ff3333">hibernate3</font>.LocalSessionFactoryBean"><br />  <property name="dataSource"><br />   <ref local="dataSource" /><br />  </property><br />  <property name="mappingResources"><br />   <list><br />    <value>org/springframework/samples/jpetstore/Hibernate/Account.hbm.xml</value><br />   </list><br />  </property><br />  <property name="hibernateProperties"><br />   <props><br />    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><br />    <prop key="hibernate.show_sql">true</prop><br />   </props><br />  </property><br /> </bean><br /> <br /> <!-- (see dataAccessContext-jta.xml for an alternative) --><br /><bean id="<font color="#ff3366">transactionManager</font>" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><br />  <property name="sessionFactory"><br />   <ref local="sessionFactory" /><br />  </property><br /> </bean></font> </p> <p> <font color="#9933ff"> <!-- SqlMap setup for iBATIS Database Layer --><br /> <bean id="sqlMap" class="org.springframework.orm.ibatis.SqlMapFactoryBean"><br />  <property name="configLocation"><value>WEB-INF/sql-map-config.xml</value></property><br /> </bean></font> </p> <p> <br /> <font color="#9933ff"> <!-- ========================= DAO DEFINITIONS: IBATIS IMPLEMENTATIONS ========================= --></font> </p> <p> <font color="#9933ff"> <bean id="<font color="#ff3366">accountDao</font>" class="org.springframework.samples.jpetstore.dao.hibdaoimp.AccountDaoImp"><br />  <property name="sessionFactory"><br />   <ref local="sessionFactory" /><br />  </property><br />   <br /> </bean><br />................</font> </p> <p> <font color="#9933ff"></beans><br /></font> </p> <p> <font color="#009966">applicationContex.xml<br /></font> <br /> <font color="#cc33ff"><bean id="<font color="#ff0033">petStoreTarget</font>" class="org.springframework.samples.jpetstore.domain.logic.<font color="#ff3300">PetStoreImpl</font>"><br />  <property name="<font color="#ff0033">accountDao</font>"><ref bean="<font color="#ff0066">accountDao</font>"/></property><br />  <property name="categoryDao"><ref bean="categoryDao"/></property><br />  <property name="productDao"><ref bean="productDao"/></property><br />  <property name="itemDao"><ref bean="itemDao"/></property><br />  <property name="orderDao"><ref bean="orderDao"/></property><br /> </bean></font> </p> <p> <font color="#cc33ff"> <!-- Transactional proxy for the JPetStore primary business object --><br /> <bean id="<font color="#ff0033">petStore</font>" class="<font color="#ff0066">org.springframework.transaction.interceptor.</font><font color="#ffcc66">TransactionProxyFactoryBean</font>"><br />  <property name="t<font color="#ff0066">ransactionManager</font>"><ref bean="transactionManager"/></property><br />  <property name="target"><ref local="<font color="#ff0033">petStoreTarget</font>"/></property><br />  <property name="transactionAttributes"><br />   <props><br />    <prop key="<font color="#ff0066">insert</font>*">PROPAGATION_REQUIRED</prop><br />    <prop key="update*">PROPAGATION_REQUIRED</prop><br />    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop><br />   </props><br />  </property><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">表达层这里介lStructs,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 /><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"><br />   <forward name="success" path="/<font color="#cc00ff">index.jsp</font>"/><br />  </action><br /><br /></font> </font> <font color="#000000">关于jsp׃在多说了下面再来看一下它的web.xml文g:</font> </p> <p> <font color="#cc00ff">  <context-param><br />  <param-name>contextConfigLocation</param-name><br />  <param-value><br />   <font color="#ff0066">/WEB-INF/dataAccessContext-local.xml  /WEB-INF/applicationContext.xml</font><br />  </param-value><br />   </context-param><br /><br /><servlet><br />  <servlet-name>context</servlet-name><br />  <servlet-class><font color="#ff0066">org.springframework.web.context.ContextLoaderServlet</font></servlet-class><br />  <load-on-startup>1</load-on-startup><br /> </servlet></font> </p> <p> <font color="#cc00ff"> <servlet><br />  <servlet-name>action</servlet-name><br />  <servlet-class><font color="#ff0033">org.apache.struts.action.ActionServlet</font></servlet-class><br />  <load-on-startup>3</load-on-startup><br /> </servlet></font> </p> <p> <font color="#cc00ff">  </font> <font color="#009966">  <servlet-mapping><br />   <servlet-name><font color="#ff0066">action</font></servlet-name><br />  <br />  <url-pattern<font color="#ff0066">>*.do</font></url-pattern><br /> </servlet-mapping></font> </p> <p> <font color="#009966"> </font> <font color="#000000">q有关于q程机制有Caucho的Hessian(一个借助HTTP的二q制协议) Burlap(一个基于XML的借助HTTP的传输协?, Apache Axis提供的JAX-RPC(ZSOAP的借助HTTP传输的web serverice), q有ZRMI的远E调?<br />想了解更多还是自已细看里面的代码?<br /><a href="/linansengling/archive/2006/09/19/70625.html">Ll关注Spring JPetStore(? 在其上实现自已的Sunlight Netstore</a></font> </p> <img src ="http://www.tkk7.com/linansengling/aggbug/70122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/linansengling/" target="_blank">fds</a> 2006-09-17 12:16 <a href="http://www.tkk7.com/linansengling/archive/2006/09/17/70122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring JPetStore(一) 发布JPetStore应用http://www.tkk7.com/linansengling/archive/2006/09/16/70041.htmlfdsfdsSat, 16 Sep 2006 07:13:00 GMThttp://www.tkk7.com/linansengling/archive/2006/09/16/70041.htmlhttp://www.tkk7.com/linansengling/comments/70041.htmlhttp://www.tkk7.com/linansengling/archive/2006/09/16/70041.html#Feedback0http://www.tkk7.com/linansengling/comments/commentRss/70041.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/70041.html    PetStore(宠物?怿大家都不默生 , 它的功能包括一个品目?, 一个购物R , 客户账户理 , 订单历史 , q有一些基本的个性选项功能 . q是一个相当标准的数据驱动的J2EEWeb应用pȝ(没有EIS集成,也没有消息处理需? . The Middleware Company(TMC, 著名JAVAC֌TSS的母公司)?002q正式规范化了本pȝ的业务需?q且?003q出了进一步修?, 加入了两U特D的需? 要支持用唯一的数据库保存所有的持久化数?  也要支持双数据库的场? 一个数据库保存客户订单,另一个保存品和账务数据. 前一U场境当然性能更好,对于相对单的应用pȝ也更为实? 后一U用了L据库实现目录跟踪功能(也就是说, 存放产品目录和客戯̎h?, 而客戯单则分开存放在另一个订单数据库? q样, ׃pȝ在两个数据库上运? 所以在下订单的时候就要求实现分布化事?对PetStore有网上有各种不同的实现这里要讨论的是ZSructs+Spring+iBATIS的轻量框架实现?来自?lt;<J2EE Development without EJB>> Rod Johnson  电子工业出版C?
源码下蝲(http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764558315,descCd-download_code.html

       好了有了源码让我们先来一睹ؓ快然后再来分?
       要构建Spring Jpetstore 应用你还需要安装JDK 和Tomcat详情L我的JSP开发入门用L陆认?/a> 此外Z用ANT构徏应用q要安装讄ANT工具(下蝲地址:http://www.jakarta.apache.org) ANT的安装Y件是解压软g?只需把压~文件解压到本地盘. q设|一下环境变?ANT_HOME=ANT的安装目?PATH=%PATH%;%ANT_HOME%\bin; CLASSPATH=%CLASSPATH%;%ANT_HOME%\lib;
        好了环境搭徏完闭, 现在q入 ..\spring-jpetstore\samples\jpetstore>
执行ANT命o ..\spring-jpetstore\samples\jpetstore>ant
则将?..\spring-jpetstore\samples\jpetstore\dist目录下生成jpetstore.war的发布文? 现在大功告成把jpetstore.war文g拷到tomcat安装目录\webapps\? 启动tomcat服务?tomcat安装目录\bin\star_up.bat). 启动hsql数据?..\spring-jpetstore\samples\jpetstore\db\hsqldb\server.bat). 好了一切搞定现在打开览器输?
http://localhost:8080/jpetstore)你将可看到如?

index.jpg 

借助?..\spring-jpetstore\samples\jpetstore\db\hsqldb\manager.bat)看到的hsql数据库中的数?br />

db.jpg

发布搞定下面对它做一些简要的分析!
LSpring JPetStore(?   JPetStore的分?/a>



fds 2006-09-16 15:13 发表评论
]]>
天南地北双飞?老翅几回寒暑http://www.tkk7.com/linansengling/archive/2006/09/16/70015.htmlfdsfdsSat, 16 Sep 2006 03:42:00 GMThttp://www.tkk7.com/linansengling/archive/2006/09/16/70015.htmlhttp://www.tkk7.com/linansengling/comments/70015.htmlhttp://www.tkk7.com/linansengling/archive/2006/09/16/70015.html#Feedback0http://www.tkk7.com/linansengling/comments/commentRss/70015.htmlhttp://www.tkk7.com/linansengling/services/trackbacks/70015.html

fds 2006-09-16 11:42 发表评论
]]>
վ֩ģ壺 ޹˾žۺ| þþþ޾ƷС˵| jizzjizzƵ| ˾Ʒ123Ƶ| av߹ۿһ| ŷAۺһ | þۺɫhezyo| һȫٸɫƬ| һaƵ| պƷѹۿ| ƬAVƬѹۿ| ŮڵƵվ | ȫӰѹۿȫ| ĻѾþӰԺ| ߹ۿ| ޾Ʒ˳߹ۿ鶹| ŷպƷһ| ްv2017| 99߹ۿƷ99| penƵѹۿ| þþþþþ޾Ʒ| ޳aƬ߹| ŮƷþþþ| 13СϴƵվ| 㻨ۿ| ҹƷþ| ޹ɫƵ| ؼëƬaaaaѹۿ | Ļ߹ۿƬ| ƷרëƬ| av߹ۿ| ۺϼ| ԻȫƵѿ| 99Ʒѹۿ| ޹Ʒ˰| 91޾Ʒר| ˰ǿŮ²Ƶ| ˳ѹۿ| ޾Ʒһþ| ɫ͵͵Ů˵| aëƬѹۿ|