java web后台开发新手常见问题

来源:互联网 发布:excel表格查找重复数据 编辑:程序博客网 时间:2024/05/16 12:52

自从4月份开始答应接受一个介绍的外包网站项目,即一家内衣公司的产品展示网站,到目前4月27日,业已完成该项目的展示功能、新闻功能以及相对应的后台管理系统。

本次项目的后台使用了Struts2和hibernate的集成框架。

在开发过程中,作为java后台开发人员,确实遇到过不少新手难以避免的问题,以下将一一进行介绍。


问题一:新手最为典型的错误,在myeclipse环境下运行自带的tomcat时,明明有导入外部jar包,却又有找不到class文件的报错或其他异常报错

原因分析:myeclipse环境下,其源代码与myeclipse自带tomcat是分别独立的,因此在myeclipse中即使在project菜单的properties选项里通过java bulid path设置导入了相关的外部jar包,实际上是无法影响到自带tomcat里的该项目的。

解决方案:把要导入的jar包复制到myeclipse自带tomcat的该项目文件夹下的WEB-INF目录中的lib文件夹


问题二:用myeclipse自动集成Struts2和hibernate,运行时发现错误: java.lang.NoSuchMethodError: antlr.collections.AST.getLine()

原因分析:目前的myeclipse中(鄙人用的是2013版本),其自带的Struts2框架中的jar包:antlr-2.7.2.jar  与其自带的hibernate框架中的jar包:antlr-2.7.7.jar是冲突的。(这个jar包是用于hibernate执行hql语句的)

解决方案:http://nealcai.iteye.com/blog/1484784


问题三:数据库的脏读问题。在程序的运行过程中可以发现,在部署服务程序之后,即使数据库已经增删改了某个表的部分元组,但是从数据库取出的数据仍然是在数据库改动之前的脏数据,而且取出的数据相当不稳定(即表现在:有时取出的是新数据,但是有时取出的仍然是脏数据,两者偶尔交替)。最后发现原因是这样,我使用了hibernate框架,而设置的关于事务隔离级别(connection.isolation)的默认参数是1,即最低事务隔离级别,所以不可避免地出现了脏读。把该参数设置为事务隔离级别较高的2后,成功地解决了脏读的问题。

参考文章:http://www.cnblogs.com/yangy608/archive/2011/06/29/2093497.html


问题四:mysql数据八小时自动断开连接。前一天部署好服务器程序,第二天早上爬起来打开网页一看,发现竟然不能正常访问了,检查报错发现是经过八小时数据库连接已经自动失效。后经百度过种种方法,比如设置mysql内部参数等方法,但并没有什么卵用。最后尝试使用hibernate的c3p0连接池,配置如下图

但是仍然是没有卵用。。。奇怪了啊,明明这样的配置在网上的c3p0教程里都是可以用的,但是为什么还是没解决这个问题呢?

最后经过不断测试,终于发现了问题:我使用的DAO是hibernate自动创建的,而这个自动创建的DAO里,在执行完增改删操作后是没有关闭session的,所以导致session一直处于打开状态,导致c3p0连接池失效。最后在业务中手动加上session.close(),成功解决了问题。




0 0