JAVA Web开发过程中遇见的各种Exception 总结(待续)
2015-04-20 15:58
357 查看
1、org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of
原因:对应bean中set方法数据类型和hibernate配置文件中定义的类型是否一致。2、This is usually caused by using Struts tags without the associated filter.
原因:是web.xml里面没有添加以下内容
<filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
原因:空指针,所指的对象不存在。用System.out.println()调试,看哪里出现问题。
4、java.lang.IllegalStateException
原因:JSP文件或struts action(纯servlet应用中没发现此问题)中采用了,如下代码:
public void print2Screen(HttpServletResponse resp,String encodeString,String[] htmlCommands) throws IOException{ resp.setCharacterEncoding(encodeString); ServletOutputStream httpOutput= resp.getOutputStream(); for(String temp:htmlCommands) httpOutput.write(temp.getBytes()); } |
1.Servlet规范说明,不能既调用 response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出 IllegalStateException.
2.servlet代码中有out.write(””),这个和JSP中缺省调用的response.getOutputStream()产生冲突.
因为在jsp中,out变量是通过response.getWriter得到的,在程序中既用了 response.getOutputStream,又用了out变量,故出现以上错误。
解决:
法一:在JSP文件中,加入下面两句
<% out.clear(); out = pageContext.pushBody(); %> | 此法的缺陷: 很多开发项目并不是JSP前端,如freemarker,velocity等造成问题的"response.getOutputStream()"并未被写在JSP里,而是写在servlet/action里 |
//return SUCCESS; return null; |
Could not execute JDBC batch update
原因:
1、估计是你的列名里面有关键字的原因吧,命名列的时候不要单独使用date,ID...这种关键字
2、应该是由于myeclipse自动将数据库的表生成映射文件时多增加了一个属性造成的, 在XXX.hbm.xml的映射文件中的class节点,看看是不是有个 catalog 属性,如果有,删除即可。
3、与数据库字段不匹配。
6、org.hibernate.MappingException: entity class not found:
解决:
<hibernate-mapping package="需要包名"> |
7、org.hibernate.exception.GenericJDBCException: Could not
execute JDBC batch update
原因:数据库里面 某个字段的 varchar(??) 取值太长了~
8、com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operation
原因:Statement被关闭了,或者Connection被关闭了。
9、javax.mail.MessagingException: Unknown SMTP host:
原因:邮件服务器不正确,或者说,输入的收件人和发件人的邮箱地址错了。
10、java.lang.IllegalStateException: getOutputStream() has already been called f
原因和解决:
out = pageContext.pushBody(); // 输出图象到页面 ImageIO.write(image, "JPEG", response.getOutputStream()); 产生这样的异常原因:是web容器生成的servlet代码中有out.write(""),这个和JSP中调用的response.getOutputStream()产生冲突.即Servlet规范说明,不能既调用response.getOutputStream(),又调用response.getWriter(),无论先调用哪一个,在调用第二个时候应会抛出IllegalStateException,因为在jsp中,out变量实际上是通过response.getWriter得到的,你的程序中既用了response.getOutputStream,又用了out变量,故出现以上错误。 |
差不多等于没有连接数据库了。要保证Hibernate的Session工厂能正常工作。这个一般我们的做法是Session工厂设置成静态的。
然后需要进行操作就打开一个会话。所以在设计的时候注意一下。这个Session工厂对象。最好是放在
static{}块里。然后用个抽象类去实现它,然后其他的类都实现这个抽象类就搞定了!
它出现的原因是,因为Session已经关闭了,而用户还在干某些事,比如query.list()等操作。
所以建议还是用一些模版,比如HibernateTemplate,由SPRING提供的。
还有一个造成这个问题的就是HIBERNATE版本太低,建议使用3.0以上的.
12、org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter
其实挺好理解的当HIBERNATE获取到空时返回NULL,但是如果你配置的映射文件中type 是long或者其他基本数据类型时,就会出现错误。解决的方法有2种
第一:设定数据库,如果是number类型或者其他映射后是基本数据的类型时,为其设定默认值。
相关文章推荐
- JAVA Web开发过程中遇见的各种Exception 总结(待续)
- Java Web开发过程中登陆模块的验证码的实现方式总结
- Java Web开发过程中登陆模块的验证码的实现方式总结
- javaWeb开发过程中小细节总结(1)
- javaWeb开发过程中小细节总结(2)
- WEB开发过程中遇到的各种问题及解决方法总结
- javaweb开发过程中的错误总结
- 总结一下整合Struts2+Hibernate3+Spring4开发Java Web应用过程
- java web入门级开发全过程-环境搭建,开发,发布,部署,总结
- java web开发中各种注意点总结(1)
- java web开发中各种注意点总结(3)
- java web 开发中各种注意点总结(转)-后期可能会出原创版
- java web开发中各种注意点总结(4)
- Java Web开发过程用各种代码的注释
- java web开发过程常见问题总结
- Java web开发过程中的问题总结
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- 笔记---初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- Java钉钉开发_Exception_异常总结
- Java_WEB开发_struts2学习的总结