利用SSH框架开发时遇到的各种Bug及解决方法

时间:2022-09-13 12:38:36

hibernate自动生成的配置文件 hibernate.cfg.xml 有时候是有问题的,会出现

org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml

原因是自动生成的hibernate.cfg.xml第二个标签引号内容的最末尾有一个空格,删掉即可

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd ">

、使用spring 3.x的时候最好使用hibernate3.x版本,不要使用4.1,否则可能也会出现下面的错误。

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [E:\Workspaces\MyEclipse 10\Spring&Hibernate\src\applicationContext.xml]: Invocation of init method failed; nested exception is Java.lang.ExceptionInInitializerError

、Exception starting filter struts2
Unable to load configuration. - bean - jar:file:/D:/Tomcat 5.5/webapps/LoginWeb/WEB-INF/lib/struts2-core-2.1.2.jar!/struts-default.xml:46:178
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
....形如这样的一个错误,提示找不到struts-default.xml文件

原因是

<action name="login.action" class="org.action.LoginAction">中之前是class=”login”,本想通过spring注入的。但是这里报错了。  问题是没有导入struts支持Spring的库,Struts 2 Spring Libraries

Messages:

·  antlr.collections.AST.getLine()I

File:

org/hibernate/hql/ast/HqlSqlWalker.java

Line number:

876

Stacktraces

java.lang.reflect.InvocationTargetException

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

问题出在struts包里面有也有个antlr_XXX.jar,与hibernate包里面的冲突了,我是用myclipse自带的类库,要把struts中低版本的antlr删掉

选择windows---preferences---在文本框中搜索struts 2(中间有空格)---选择struts 2---选择antlr-2.7.2.jar---Remove---OK

、No result defined for action org.action.LoginAction and result success

把<action name="login.action" class="loginAction">  和jsp里面的action

的name都改为login就好了, 真是坑爹。

 、

Exception starting filter Struts2 
Caught exception while loading file struts-default.xml - [unknown location] 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100) 
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130) 
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52) 
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)

严重: Exception starting filter struts2

Caught exception while loading file struts-default.xml - [unknown location]

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)

那基本可断定是其他jar包有冲突, 应该是XML解析包有冲突. 
检查发布后的WEB-INF/lib有两个XML解析包: xml-apis.jar和xerces-2.6.2.jar 
这种错误真正原因不是JDK 6和Struts 2冲突, 而是 MyEclipse Hibernate 类库中多了两个包: xml-apis.jar和xerces-2.6.2.jar, 这两个包的功能和JDK的冲突了.

解决:删除  hibernate3.2 中的xerces-2.6.2.jar包,

选择windows---preferences---在文本框中搜索struts 2(中间有空格)---选择struts 2---hibernate---选择hibernate3.2---------删除xerces-2.3.2.jar------移除tomcat中的部署------重新部署——ok

 hibernate反向工程生成的实体类就不能正确放在指定的包路径下

  描述:

  使用hibernate反向工程生成实体类时,类文件可以正确生成在src的一级目录下但在二级或多级目录时就会生成在src的默认包下.例如:表 User,它有俩个字段username和password.在src下的一级目录为hibernate,存放User由反向工程生成的实体类User和 UserDao,这时是正确的.但是当存放位置为二级或多级目录时,反向工程生成的实体类就不能正确放在指定的包路径下:例如,在src下存在包 cn.com.test.hibernate 如果我想把生成的实体类放在此包下,当导入时已经指定了该包,可单击确定按钮后,生成的实体类却在src的default包下.

  源文档 <;

  解决:

  在反向生成的最后一步,让你填写类名的时候,你需要把你的包名也包含进去。这样就可以在两层或者以上层存放了。

  或者最后一步时,类名使用默认值,不做任何更改。

如果手动移动的话,会报Association references unmapped class错

、type Exception report

message Could not execute JDBC batch update; SQL [insert into SCOTT.TEST (Value, Id) values (?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into SCOTT.TEST (Value, Id) values (?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:635)

org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)

org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)

org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)

org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)

java.sql.BatchUpdateException: ORA-00904: "ID": 标识符无效

Jsp 中获取requets、session、application  中的值,在Action则使用IoC实现接口比较常用

${requestScope.xx}

${sessionScope.xxx}

${applicationScope.xxx}

<%=request.getAttribute(“xxx”)%>

<%=session.getAttribute(“xxx”)%>

<%=application.getAttribute(“xxx”)%>

在struts标签中这样用也可以

Value=“%{#request.xxx}”

工作空间编码不能影响JSP文件的编码,必须单独设置,

Window-->Preferences-->MyEclipse-->Files and Editors-->JSP

Encoding下拉列表中选择ISO10646/Unicode(UTF-8)

Struts.i18n.encoding=UTF-8   指定Struts2 Web应用的默认编码集  ,可在struts.xml中用

<constant name=”xxx”, value=”xx”> 或web.xml中

<init-param>

<param-name>xxx</param-name>

<param-value>xxx</param-value>

<init-param>

取代

<!-- 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法和freemarker 、velocity的输出 -->

<constant name="struts.i18n.encoding" value="UTF-8"/>

<!-- 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开-->

<constant name="struts.action.extension" value="do"/>

<!-- 设置浏览器是否缓存静态内容,默认值为true-->

<constant name="struts.serve.static.browserCache" value="false"/>

<!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false,开发阶段最好打开 -->

<constant name="struts.configuration.xml.reload" value="true"/>

<!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->

<constant name="struts.devMode" value="true" />

<!-- 默认的视图主题 -->

<constant name="struts.ui.theme" value="simple" />

<!– 与spring集成时,指定由spring负责action对象的创建 -->

<constant name="struts.objectFactory" value="spring" />

<!–该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false-->

<constant name="struts.enable.DynamicMethodInvocation" value="false"/>

<!--上传文件的大小限制-->

<constant name="struts.multipart.maxSize" value=“10701096"/>

为action取名时,名字中尽量不要使用点号(.)和连接字符(_),否则会出现一些莫名其妙的问题。

可以使用!+方法名调用指定方法,可以这样调用:

/struts/test/helloworld!other.action

在result映射的配置中,在指定实际资源的位置时,可以使用绝对路径也可以使用相对路径。绝对路径是以斜杠(/)开头,相对于当前web项目的上下文路径,相对路径不以斜杠(/)开头,相对于当前执行的action路径。

由于处于chain中的action属于同一个http请求,共享一个ActionContext,故可以在上下文中获取,在页面上可以直接使用。

更新数据库是可以用chain

利用SSH框架开发时遇到的各种Bug及解决方法的更多相关文章

  1. Brophp框架开发时连接数据库读取UTF8乱码的解决(转&rpar;

    Brophp框架开发时连接数据库读取UTF8乱码的解决办法 (2012-09-15 10:41:22) 转载▼ 标签: 杂谈 it php 分类: 建站技术 Brophp框架开发时连接数据库读取UTF ...

  2. 关于Angular2与蚂蚁的NG-ZOORO一同开发时&lbrack;disabled&rsqb;&equals;&quot&semi;true&quot&semi;动态绑定失效的解决方法

    在使用Angular2与蚂蚁的NG-ZOORO一同开发时,当我们的表单使用的是formControlName="value"时[disabled]="true" ...

  3. yii2&period;0高级框架配置时打开init&period;bat秒退的解决方法 &lpar;两种方法&rpar;

    第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...

  4. J2EE进阶&lpar;七&rpar;利用SSH框架根据数据表建立model类

    J2EE进阶(七)利用SSH框架根据数据表建立model类 前言 在利用SSH框架进行项目开发时,若将数据库已经建好,并且数据表之间的依赖关系已经确定,可以利用Hibernate的反转功能进行mode ...

  5. 【详细】总结JavaWeb开发中SSH框架开发问题(用心总结,不容错过)

    在做JavaWeb的SSH框架开发的时候,遇到过很多的细节问题,这里大概记录下 我使用的IDE是Eclipse(老版本)三大框架:Spring4.Struts2.Hibernate5 1.web.xm ...

  6. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  7. SSH框架开发蛋糕房管理系统之质量属性

    SSH框架开发蛋糕房管理系统之质量属性 我要开发的系统是基于ssh框架的蛋糕房管理系统.本系统前台提供的主要功能是在线预定蛋糕,本店管理员拥有最高权限,包括收银管理,设备管理,日常销售管理,蛋糕定制管 ...

  8. SSH整合开发时Scope为默认时现象与原理

    1.前提知识 1)scope默认值 进行SSH整合开发时,Struts2的action须要用spring容器进行管理,仅仅要涉及到类以bean的形式入到spring容器中.无论是xml配置还是使用注解 ...

  9. golang的beego框架开发时出现的问题纪录

    golang的beego框架开发时出现的问题纪录1.数据库并发时问题:[ORM]2017/02/20 23:44:05 -[Queries/default] - [FAIL / db.Query / ...

随机推荐

  1. PHYLIP linux安装

    PHYLIP的安装: http://download.chinaunix.net/download.php?id=29483&ResourceID=8135下载 gunzip phylip-3 ...

  2. Redis和Memcache对比及选择

    没有必要过多的关注性能.由于Redis只使用单核,而Memcached可以使用多核, 所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高.而在100k以上的数据中,Mem ...

  3. SQLserver行转列与列转行

    行表: 行表 姓名 属性 属性值 JACK 身高 180 JACK 体重 80 JACK 年龄 27 TOM 身高 164 TOM 体重 59 TOM 年龄 20 列表: 列表 姓名 身高 年龄 体重 ...

  4. Response&period;Write用法总结

    问题一: Response.Write 后连接Response.Redirect ,则Response.Write无法显示,直接跳转入Response.Redirect 的页面. 解决方案: Resp ...

  5. OpenLayers 项目完整分析——(二)源代码总体结构分析

    转自:http://www.cnblogs.com/lzlynn/archive/2008/07/29/1255848.html 二)源代码总体结构分析 通过前面的项目介绍,我们大概已经知道Openl ...

  6. C&plus;&plus;编程练习&lpar;8&rpar;----&OpenCurlyDoubleQuote;二叉树的建立以及二叉树的三种遍历方式&OpenCurlyDoubleQuote;(前序遍历、中序遍历、后续遍历)

    树 利用顺序存储和链式存储的特点,可以实现树的存储结构的表示,具体表示法有很多种. 1)双亲表示法:在每个结点中,附设一个指示器指示其双亲结点在数组中的位置. 2)孩子表示法:把每个结点的孩子排列起来 ...

  7. OC-不可变数组NSArray

  8. Vue&period;js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

  9. Centos7 下安装Docke

    为什么 要用centos7呢. 现在哪个企业用的是centos7呀.不都是老版本么. 对咱们是新技术.所以只有新系统才可以用.因为docker要求服务CentOS6以上,kernel 版本必须2.6. ...

  10. redis加固

    一.背景描述 1.漏洞描述 Redis 因配置不当存在未授权访问漏洞,可以被攻击者恶意利用. 在特定条件下,如果 Redis 以 root 身份运行,黑客可以给 root 账号写入 SSH 公钥文件, ...