oa系统调试心得

1、此系统,没有包含java文件只是包含了一些类文件,也就是没有src包。利用原来的 java反编译工具,就是不能够生成java文件,尝试了多次都不能实现,这时我想到了下载一个新的的反编译工具:下载了一个JD-GUI只能对单个文件进行反编译,不支持目录级别的反编译,抱着试试看的态度下载了XJAD,这个工具果然好用,实现了反编译功能。

 这时我把原有的.hbm.xml文件与生成的java文件一起合并生成 src。

2、新建一个web工程oa,把第一步生成的src文件夹替换空的文件夹src。

3、把剩余的一些jsp相关以及一些文件夹放置到 webroot下面。

4、myeclipse-add struts capabilities

5、  myeclipse -add hibernate capabilities,增加后,需要修改:hibernate.cfg.xml 中数据库的名称。

6、由于我选择的是jtds,这个数据库驱动在以前的工程中配置过,查看 build path-configure build path 中已经对jtds驱动做了配置。

7、这时可以发布程序了,发布后,在浏览器里面登陆,发现报错(GetHibernate.java):

Configuration conf = (new Configuration()).addClass(com/hiernate/persistence/User).addClass(com/hiernate/persistence/Menu).addClass(com/hiernate/persistence/Meeting).addClass(com/hiernate/persistence/Placard).addClass(com/hiernate/persistence/Waichu).addClass(com/hiernate/persistence/Qingjia).addClass(com/hiernate/persistence/Chuchai).addClass(com/hiernate/persistence/Onduty).addClass(com/hiernate/persistence/Qiye).addClass(com/hiernate/persistence/Bm).addClass(com/hiernate/persistence/Person).addClass(com/hiernate/persistence/Shenhe).addClass(com/hiernate/persistence/TongXunAdd).addClass(com/hiernate/persistence/Tongxun);

这句话报错:

通过查看原有的webole项目里面的书写方式:修改为如下形式问题解决。

Configuration conf = (new Configuration()).addClass(com.hiernate.persistence.User.class).addClass(com.hiernate.persistence.Menu.class).addClass(com.hiernate.persistence.Meeting.class).addClass(com.hiernate.persistence.Placard.class).addClass(com.hiernate.persistence.Waichu.class).addClass(com.hiernate.persistence.Qingjia.class).addClass(com.hiernate.persistence.Chuchai.class).addClass(com.hiernate.persistence.Onduty.class).addClass(com.hiernate.persistence.Qiye.class).addClass(com.hiernate.persistence.Bm.class).addClass(com.hiernate.persistence.Person.class).addClass(com.hiernate.persistence.Shenhe.class).addClass(com.hiernate.persistence.TongXunAdd.class).addClass(com.hiernate.persistence.Tongxun.class);

8、这时可以正常查看了,但是再点击查看通信录的时候仍然报错:

java.lang.Long cannot be cast to java.lang.Integer

类型转换的错误:

解决方法:在tongxun_index.jsp里面修改如下:

 

 Integer intename1 =new Integer(((Long)listTx.get(k)).intValue());     

 

原有书写方式是: Integer intname1=(Integer)listTx.get(k);

 

通过修改后,问题已经解决。

9、

hibernate.proties
session管理类 GetHibernate,获得Session,打开,关闭


如果Hibernate的配置文件为XML格式,只需在配置文件中声明映射文件,在程序中不必调用Configuration类的addClass方法来
加载映射文件。代码如下:
SessionFactory sf= new Configureation().configure().buildSessionFactory()
需要搞清楚到底怎么回事??

----------------------------------------------------------------------------------------------------------------------------------------------------

Hibernate有两种配置文件格式

Hibernate有两种配置文件格式,一种是XML,默认为hibernate.cfg.xml,一种是properties,默认为hibernate.properties
不同的配置文件,对Hibernate的初始化方法是不一样的。
1.   如果采用properties文件作为配置文件
      那么初始化的代码大致为:
      Configuration config = new Configuration();
      config.addClass(myclass.class);
2.   如果配置文件为XML,则
      Configuration config = new Configuration().config();
       XML文件格式的配置文件不支持addClass方法!
       这是因为在配置文件XML文件中,已经定义了Mapping文  件,因此就不需要在用编码方式导入POJO文件了。
很多朋友不知道两者的区别,我在这里详细说说吧。
如果是使用hibernate.properties作为配置文件的话,配置文件的内容大概是这样的:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/work
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.show_sql=true
而我们想用hibernate.cfg.xml的话,内容大概是这样的:
<hibernate-configuration>
        <session-factory>
                <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
                <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
                <property name="connection.url">jdbc:mysql://localhost:3306/work</property>
                <property name="connection.username">root</property>
                <property name="connection.password">1234</property>
                <mapping resource="bean/Note.hbm.xml"/>
                <mapping resource="bean/User.hbm.xml"/>
        </session-factory>
</hibernate-configuration>
大家有没有发现什么不同的地方呢?对了,以hibernate.properties配置的话,没有配置被映射的类 。那hibernate不能在hibernate.properties中知道需要映射的类,在哪里我们能让它知道呢?答案就在源文件里了。
      当我们使用hibernate.properties作为配置文件的时候,我们的源文件中需要这样构造一个config:
               Configuration config = new Configuration();
              config.addClass(User.class).addClass(Note.class);
              SessionFactory sf = config.buildSessionFactory();
              Session session = sf.openSession();
这里的config我们必须调用addClass()方法,这就是我们使hibernate知道映射类的地方了。当然使用hibernate.cfg.xml来配置的话,我们就可以这样写:
               Configuration config = new Configuration();
              SessionFactory sf = config.configure("/hibernate.cfg.xml").buildSessionFactory();
               //这里调用了configure()方法来指定hibernate.cfg.xml的位置
              Session session = sf.openSession();
        我们就不用再配置需要映射的类了,重复配置的话会出现重复映射异常。
        总之,我们要使用两种方法其中一种就行了,就是说如果hibernate.cfg.xml中没有说明映射关系的话,在源文件中使用addClass()方法就可以了,但不能重复!。
        另外,在hibernate的启动过程中,会先找hibernate.properties,然后读取hibernate.cfg.xml,后者会覆盖前者相同的属
-- --------------------------------------------------------------------------------------------------------------------------------------------------

Filter类 javax.servelet    doFilter(),对中文字符进行处理
  request .setChar

 

10、重新发布oa,可以看到控制台出现了如下的警告信息:“log4j:WARN No appenders could be found for logger (org.apache.struts.util.PropertyMessageResources).
log4j:WARN Please initialize the log4j system properly.

网上查找答案:

这个只是 警告,不是错误。你只是没有配置 log4j.properties文件。不用管他。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值