随笔-26  评论-44  文章-20  trackbacks-0
  2009年8月2日
爱情是相知相交的默契,还是好奇加视觉冲击的新鲜感,是平等相待,还是占有和被保护。漫长的人生该和什么样的人渡过,离婚争吵难道无法避免?为什么对异性只是观看美丽,却无法去欣赏崇拜。如果不留心观察,只是流于表面,又怎么能找到另一半。我们沾染太多世俗,俨然社会的傀儡,怎么才能逃离社会阴暗的一面,追寻爱情抑或人生的归宿,只有留心观察,认真思考,不流于表面。
posted @ 2009-08-02 19:07 开机 阅读(133) | 评论 (0)编辑 收藏
  2008年11月10日
     摘要:   阅读全文
posted @ 2008-11-10 21:45 开机 阅读(1647) | 评论 (1)编辑 收藏
  2008年11月6日
在以前religionMIS基础(见我的随笔:extjs做的信息管理系统)上加的sping bean,同时删除的几个类。

代码:http://www.blogjava.net/Files/yijia/(%E5%8E%9F%E5%88%9B)spring_religionMIS.rar

spring包:http://www.blogjava.net/Files/yijia/spring.rar
解压后的spring.jar放到web-info/lib下即可。

数据库文件:http://www.blogjava.net/Files/yijia/reliongionmis 20080829 1731.rar
是mysql做的。

刚开始进系统的时候有点小问题,没数据显示,按一下里面的按钮,如添加,之后就能显示数据了。各个功能就正常的。以前没这个毛病,加了spring 后就这样的,也许是以前每次都创建新实例没问题,现在在spring容器配置后 单实例引起的问题,。总体来说,比以前好的不少。

posted @ 2008-11-06 13:32 开机 阅读(1235) | 评论 (0)编辑 收藏
  2008年11月5日
public class Table {
    String tableName;
    String mainPropertyName;
    static int count=1;
    static DBExcute dbExcute=(DBExcute)new ClassPathXmlApplicationContext("applicationContext.xml").getBean("dbExcute");
   
    Table(String tableName,String mainPropertyName){
        this.tableName=tableName;
        this.mainPropertyName=mainPropertyName;
        System.out.println("construct table"+(count++)+" use:"+dbExcute);
    }
        .............
        .............
     public static void main(String []dsf){
     new Table("user","1");
  }
}

如上只new Table(..)一次:
结果却是:
construct table1 use:null
construct table2 use:null
construct table3 use:null
construct table4 use:null
construct table5 use:null
construct table6 use:com.yijia_ctgu.DB.DBExcute@535b58


奇怪中。。。。。。。


明白了,spring容器初始化的时候,初始化dbDAO bean会生成五个table,可能是先初始化,后才赋值给dbExcute,所以刚开始的五个都是null.

posted @ 2008-11-05 14:45 开机 阅读(165) | 评论 (1)编辑 收藏
我在普通类的main方法中调用bean:
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
for(int i=1;i<5;i++){
          DB dbDAO = (DB)factory.getBean("dbDAO");
          System.out.println(dbDAO);
      }
每次执行程序(不停的调用main方法,不只是只看一次循环!)都是相同的引用:
com.yijia_ctgu.DB.DB@12a54f9
com.yijia_ctgu.DB.DB@12a54f9
com.yijia_ctgu.DB.DB@12a54f9
com.yijia_ctgu.DB.DB@12a54f9


但是在servlet中使用时:
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
 dbDAO = (DB)factory.getBean("dbDAO");
每次操作创建的都是不同的引用:
如com.yijia_ctgu.DB.DB@16e1782
  com.yijia_ctgu.DB.DB@19be6ee

为何会是这样,是不是servlet每次都会重新生成spring容器?是servlet获取bean的方式有问题吗?还是servlet根本不可能每次使用相同的bean.

我懂了,必须用别的方式:先在web.xml中定义applicatincontext的位置,再用WebApplicationContextUtils获取ApplicationContext,在用它获取bean,这样就每次就是同样的bean了。

但是错误还是在继续,spring我没系统的学,所以总是有太多的问题。

posted @ 2008-11-05 10:34 开机 阅读(256) | 评论 (0)编辑 收藏
  2008年11月4日
在web.xml中配置spring的contextconfigloaction时,总是定位不到src/applicationContext.xml或者
/src/applicationContext.xml(也许是我不懂父目录当前目录之类的)。算了,直接删除这个context-param,把applicationContext.xml文件复制到web-info下面,反正spring默认的就是那里。
要是刚开始myeclipse自动生成的applicationContext.xml文件的位置就在web-info下就不什么事都没了,不知道把它放到src有什么意图?

我晕啊,后来,程序还要到src下找applicationContext.xml文件,web-info下的也不能删,无语了。

我发布到tomcat的时候,是以WebRoot为根目录的,即tomcat的server.xml中是这样配置的:
<Context path="" docBase="D:\spring_religionMIS\WebRoot"/>
这也许就是定位不到src/..的原因吧,因为程序总是从WebRoot往下找,当然找不到,我又用../src/applicationContext.xml定位也找不到,不知错在哪里?
posted @ 2008-11-04 17:27 开机 阅读(1977) | 评论 (2)编辑 收藏
  2008年11月3日
MyEclipse中,在加spring时,开始只加了spring-core,spring-aop。后来想加spring-web上去,除了直接复制粘贴包上去,还有没有更好的方法?
posted @ 2008-11-03 21:27 开机 阅读(134) | 评论 (0)编辑 收藏
  搞了半天,只要在myeclispe中打开tomcat就行了。
  我刚刚都是在外部用tomcat自带的monitor打开的,以前没注意到,写在这里提醒自己,希望对出现类似状况的同志有点帮助。
posted @ 2008-11-03 15:16 开机 阅读(529) | 评论 (0)编辑 收藏
  2008年8月30日
我用easyjweb project命令快速生成的工程后,在src/main/java下建了一个包com.easyjweb.action在包下面写了个HelloAction,但是运行时出错,说frameworkException: 没有找到处理模板的类:com.easyjweb.action.HelloAction,我在web-inf的classes目录里看了没编译后的文件。我是用easyjweb project命令快速生成的工程,为什么eclipse没编译对应的java文件呢?

我自己手工新建的工程,添加对应的类,写好web.xml,可以运行程序。

我又用easyjweb project ... -ejs命令试了试,写了Java源文件后,发现classes目录有了编译后的文件,可是这样生产的工程师EasyJweb+JPA+spring结构的。我只是要个简单的应用,用easyjweb project ..又试了几次,还是不能编译对应的Java文件。哎,我也不知道问题出在哪里?我想这样一个成名的框架一定不会有问题了。哪位熟悉此框架的大哥,能不能帮忙解答一下。
posted @ 2008-08-30 18:12 开机 阅读(288) | 评论 (1)编辑 收藏
  2008年8月29日
  extjs做的信息管理系统,由于业务简单,操作数据库的API用自己写的(我以前的 自己做试卷管理系统 系列中 提到),简单实用。在显示打印页面的时候,用到的servlet FormFilter,原因是数据在网络间传输时原先在数据库中的顺序打乱了,在这个servlet中用数组给它重新排列打印页面上数据的顺序。
  程序尽量用只用一个方法完成所有grid中一类类似的功能,用一个servlet完成所有一类类似的操作,用一个jsp显示所有要打印的页面。

代码下载:http://www.blogjava.net/Files/yijia/religionMIS.rar
数据库脚本在代码根目录下。
  开发环境:Eclipse3.2,mysql5.0,
          eclispe开发环境中所有文件的编码都设置为utf-8。修改mysql的配置文件,使其默认编码为utf-8(方法在网上可以搜到)或者用MySQL Administrator图形工具也可设置。
  浏览器:firefox。我用的是firefox3,不知道firefox2可不可以。但在ie中运行不了,我已经试过了。
  还有什么问题,跟我留言,我非常乐意与大家交流,这是我暑假学extjs做的,算作练习。

补充:编辑是自动编辑,在grid输入框编辑完后,监听事件负责主动把编辑的结果上传到数据库。添加按钮也是,点击添加后,新纪录在grid上显示的同时也插入到数据库。删除可选中多行后删除。up按钮用的是ext.ux.uploaddialog上传组件。打印页面是用jsp显示,原先还是想用extjs实现,一来觉得复杂,二来不知道怎么打印ext窗口,就放弃了。

posted @ 2008-08-29 17:56 开机 阅读(6430) | 评论 (9)编辑 收藏
  2008年8月12日
  做试卷管理系统的时候,写了一个操作数据库的工具,它与数据库的具体的表,属性都无关:Tabel t=DB.getTabel("user")后可以操作相应的数据表,只要这个名为user的表存在,t.search(property[][],start,limit)传入一个属性数组,property比如可以为{{"username","admin"},{"password","admin"}....},然后数据库就可以在user表中查找username="admin"....的记录,start,limit是查找起始点和数目限制,js分页时用到。
  这样一来,servlet也可以和具体的表,属性无关,只和几个通用属性有关,如tableName,id(主键也可以为别的,在config.properties中配置),start,limit等等和具体数据库无关的。奇妙就在这里:不管数据库有多少张表,对于与每一个操作,servlet只有一个,如Edit,而不需要EditUser,EditPaper....等等很多edit了。同样以后系统怎样扩展,怎样增加表,表的属性怎样变化。servlet都可以不变,他只是操作相应的数据。那么具体的业务操作呢?
  js为这些带来了可能,它与返回的数据交互操作,和在服务器没有两样,为servlet省去了麻烦。
  以上是我个人感想,仅供参考。
  操作数据库的工具和写的servlet参见 自己动手做试卷管理系统的几篇随笔。js不好意思公开了,这是给别人做的小项目。

posted @ 2008-08-12 08:32 开机 阅读(1561) | 评论 (7)编辑 收藏
  2008年8月7日
在实践中的完善,操作数据库的工具也渐渐的完善了,
下面是我的操作数据库的工具和使用它的servlet:http://www.blogjava.net/Files/yijia/com.rar
另外还有使用到的第三方工具:http://www.blogjava.net/Files/yijia/lib.rar
 

posted @ 2008-08-07 19:35 开机 阅读(241) | 评论 (0)编辑 收藏
  2008年7月26日
参考 随笔:自己动手做试卷管理系统-用户管理部分

我增加了3个类:DB,Table,Row
DB:用来取得所有的table,并生产相应的Table对象,存贮在HashTable中,使用方法getTable("tableName");可以从HashTable中取得。注意:生产Table对象的时候,用了构造方法:new Table("tableName","mainPropertyName");mainProperty是给表设置的主键名,在config.properties中可以修改。
Table:定义了 取得某一行(getRow),插入记录(insert)。这两个方法都必须通过主键来操作。
             删除记录(delete),搜索(search)。这两个方法任意指定条件,如删除 属性username="321"的记录。
             计数(count),此方法有给定条件的,有无条件的(用来求 整个表有多少行)。
             列表(list),返回一个List代表了整个表的信息。用到了RowSetDynaClass(在DBExcute类中),它是个好东东。
Row:更简单了,两个方法:set(String propertyName,String propertyValue)和get(String propertyName) 方法


我的目的就是来做一个操作数据库的通用工具,当环境和数据变化时,只需修改一下config.properties(当然 性能和我这个业余的一样,也是有点业余的)。
下面是我检测的代码:
try {  //取得user表中主键名(这里的主键名是username)为Root的行记录的密码项的值
            System.out.println(DB.getDB().getTable("user").getRow("Root").get("password"));
        } catch (NotQueryException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
有很多地方还需要完善,特别是异常类,我写的异常类有点少,不够用,然后定义的也不是很好。连接池不知道是怎么建的,我发现用连接太浪费啦,就上面的代码就执行了3次连接,getTable的时候,getRow的时候,getPassword的时候,(用HashTable来存贮Tabel对象,尽可能的减少了连接,节约了资源)。等等很多问题,还请各位多多指教!!!

最后提醒一下:我只是在com.yijia_ctgu.DB包中增加了3个类,以前做的页面jsp和servlet,bean都没变化(还没来得及用上这个工具)。java源文件和jsp文件的编码是gb2312,注意改一下,不然会乱码,其实用utf-8挺好的,不过我知道的迟了,现在想改,嫌麻烦的。

代码下载:http://www.blogjava.net/Files/yijia/papermanage0.3.rar

改进后的操作数据库工具:http://www.blogjava.net/Files/yijia/yijia_ctgu.rar
更新时间:2008年7月30日
posted @ 2008-07-26 21:33 开机 阅读(215) | 评论 (0)编辑 收藏
jdbc中sql语句能不能这样写:
String sql="delete from '"+tableName+"' where '"+property+"'='"+propertyName+"'";
就是表的名字,属性名和值 通过方法传进去,
当然我的这个失败了,不知道有没有方法达到同样的效果?
posted @ 2008-07-26 11:13 开机 阅读(408) | 评论 (1)编辑 收藏
  2008年7月11日
     摘要:   阅读全文
posted @ 2008-07-11 16:37 开机 阅读(1275) | 评论 (0)编辑 收藏
  2008年7月10日
     摘要:   阅读全文
posted @ 2008-07-10 10:03 开机 阅读(179) | 评论 (0)编辑 收藏
     摘要:   阅读全文
posted @ 2008-07-10 10:02 开机 阅读(318) | 评论 (0)编辑 收藏
  2008年6月13日
     摘要: 开发环境:java5,myeclipse,tomcat。为了从基础理解javaweb,采用jsp+servlet,没用任何框架。
源文件有四个包:
com.yijia_ctgu.bean
com.yijia_ctgu.DB
com.yijia_ctgu.exception
com.yijia_ctgu.servle  阅读全文
posted @ 2008-06-13 09:42 开机 阅读(889) | 评论 (7)编辑 收藏
  2008年6月9日
     摘要: struts是控制器C,hibernate封装的对数据库的操作,是M层,spring在ssh中的主要作用是整合资源,就像一张地图,web系统需要用到某些资源时就去里面找,这些资源可以是控制层对象,也可以是模型层对象,或者是更广泛的东西。  阅读全文
posted @ 2008-06-09 08:36 开机 阅读(337) | 评论 (2)编辑 收藏
  2008年6月8日
     摘要:   阅读全文
posted @ 2008-06-08 10:33 开机 阅读(1201) | 评论 (0)编辑 收藏
  2008年5月10日
     摘要:   阅读全文
posted @ 2008-05-10 14:41 开机 阅读(445) | 评论 (1)编辑 收藏
  2008年5月9日

回到原点,重新开始.但愿一切,还不是太晚!

posted @ 2008-05-09 16:31 开机 阅读(165) | 评论 (0)编辑 收藏
  2007年8月12日
  我是懒散的,但我也想做一个努力奋斗的人。无奈我的大脑就想睡了几百年似的,一点活力也没有。我真上怀疑我的脑袋还没好好的利用过,就算用了也没用对地方。
  谁又能做我的指路明灯呢?可是常言又道:人比先自救而人救之。
  我常常告诉自己从明天起好好的努力,或者就从现在起。但我也不知道这是对自己的第多少个承诺呢?
  为什么有些人能够一辈子努力,不松懈,比如居里夫人这样的。而我却是在不断的放弃,松懈了。所幸的是我不曾彻底的绝望过,还可以对自己说:从明天起好好干。

posted @ 2007-08-12 16:33 开机 阅读(265) | 评论 (2)编辑 收藏
  2007年8月8日
我能不能这样想java的分布式计算。假如设计一个聊天工具,在自己的窗口写下一行字的时候,同时在“聊友”的窗口写下了这行字,也就是说聊天的人共用了某些类的实例,这些实例可以是:封装了谈话内容,谈话时间...的bean。这样就不用显式的调用socket之类的东东了,而且对数据库的操作也更方便。
  如果真能这样,写一个聊天器就轻而易举了。

posted @ 2007-08-08 10:51 开机 阅读(230) | 评论 (0)编辑 收藏
  2007年8月6日
在struts的表单bean的validate()方法中:
if(username.trim().equals(""))
            error.add("username", new ActionMessage("error.username.username_is_requred"));
if(password.trim().equals(""))
            error.add("password", new ActionError("error.password.password_is_requred"));
测试后,两个的效果看起来一样。
我初次尝试这些,看不出它们的不同。
那位高手有兴趣的,请多多指教!
posted @ 2007-08-06 22:57 开机 阅读(1282) | 评论 (2)编辑 收藏
  2007年8月5日
我想我的配置应该是对的,因为能够生成xwork.xml,也能有生成action的对话框出来,但是当最后点finish时,
出现"xwork.xml not found"的错误.在此前,我的src下已生成了xwork.xml了。
也许是因为这个插件的版本(1.0.1)比较新,连它的配置都和网上介绍的不一样,一般介绍的都要配置两个参数,但是在首选项里,eclipsework一栏里,只有一个参数可配置,我是把wizards.xml移动到templates下,再
配置wizards.xml的位置:..\templates\wizards.xml,这样后Templates才可以用,但是为什么总是出现"xwork.xml not found"的错误了,请大家指教!

posted @ 2007-08-05 19:16 开机 阅读(532) | 评论 (5)编辑 收藏
仅列出标题