ssh开发问题总结归纳Word格式文档下载.docx
- 文档编号:19169233
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:36
- 大小:309.75KB
ssh开发问题总结归纳Word格式文档下载.docx
《ssh开发问题总结归纳Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《ssh开发问题总结归纳Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。
3.ssh整合找不到action15
SSH整合抛异常:
16
struts2必须JAR包(6个):
18
hibernate3.2必须JAR包(8个):
eclipse/myeclipse/SpringToolSuite奇怪的问题收集18
当当专区:
19
(二)NoDialectmappingforJDBCtype:
321
关于NoDialectmappingforJDBCtype:
-9hibernate执行原生sql语句问题22
%%%%ErrorCreatingSessionFactory%%%%27
Struts2.1.6
lib\xwork-2.1.2.jar
lib\struts2-core-2.1.6.jar
lib\struts2-convention-plugin-2.1.6.jar
lib\ognl-2.6.11.jar
lib\freemarker-2.3.13.jar
lib\commons-loggin-1.0.4.jar---该包在上面的spring里已经导了lib\commons-fileupload-1.2.1.jarlib\struts2-spring-plugin-2.1.6.jar
struts2+json包冲突问题
在用strtus2的json插件读取数据时,出现了包冲突的问题,搞了老半天才解决,
严重:
Servlet.service()forservletdefaultthrewexception
java.lang.NoClassDefFoundError:
com/opensymphony/xwork2/util/TextUtils
atcom.googlecode.jsonplugin.JSONUtil.writeJSONToResponse(JSONUtil.java:
197)
atcom.googlecode.jsonplugin.JSONResult.writeToResponse(JSONResult.java:
192)
atcom.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:
182)
我看了下xwork-core-2.1.6.jar下是没有com.opensymphony.xwork2.util.TextUtils这个类的,只有struts2.0的xwork才有,可是我的工程师struts2.1的,直接把以前的xwork2包弄进来是会报错的。
XX看了下大概原因就是jar包不兼容。
在struts2的官方上面说struts2.1.x要配合jsonplugin-0.33.jar使用
struts2.0.x配合jsonplugin-0.32.jar
我用的是struts2.1.8和jsonplugin-0.33.jar但是还是出现上面那个错误,后来经过高人的指点终于解决了这个问题解决方案:
将jsonplugin-0.33.jar替换成json-lib-2.1.jar、struts2-json-plugin-2.1.8.1.jar、struts2-junit-plugin-2.1.8.1.jar使用这三个包就不会出现冲突了
java.lang.NoSuchMethodError:
com.opensymphony.xwork2.util.ValueStack.findValue
com.opensymphony.xwork2.util.ValueStack.findValue(Ljava/lang/String;
Z)Ljava/lang/Object;
jar包冲突,搜索有两个jar包含ValueStack这个类,极有可能是xwork-2.1.1.jar系列的包,你引入了多个。
struts2-core-2.1.8.1.jar,而xwork-core用xwork-2.1.2.jar。
有可能不兼容。
建议你用struts2-core-2.1.8.jar和xwork-core-2.1.6.jar的
把的xwork-2.1.2.jar换成xwork-core-2.1.6.jar就OK了!
Request[/B201]doesnotcontainhandlerparameternamed'
action'
.Thismaybecausedbywhitespaceinthelabeltext
解决:
在jsp页面的表单中,加入<
inputtype="
hidden"
name="
method"
>
java.lang.ClassNotFoundException:
mons.lang.xwork.StringUtils
解决方案:
下载个xwork-core-2.1.6.jar
这个包里面有,我也出现了这个问题,我之前的包时xwork-core-2.3.jar的
xwork-core-2.3.jar里面居然没有mons.lang.xwork.stringutils这个类,不过
xwork-core-2.1.6.jar里面就有了
今天在Struts2框架下使用JSON插件时,程序保存找不到类org/apache/commons/lang/xwork
/StringUtils,我很奇怪,commons-lang包明明导入了,却又发现commons-lang包中根本没有xwork子包,几经周折终
于找到了原因:
我没有导入xwork-core这个jar包。
呵呵,问题解决了。
UnabletoinstantiateAction错误的解决
UnabletoinstantiateAction,....action.CertAction,definedfor'
...'
innamespace'
/...'
null
原因是变量定义:
privateUserUtiluserUtil=(UserUtil)ServletActionContext.getContext().getSession().get("
userUtil"
);
关键是这里,这个uerUtil成员变量使用了action的上下文"
ServletActionContext.getContext()"
.
了解webwork中ServletDispatcher原理的人可能知道原因了,因为ServletDispatcher接受客户端的HTTP请求,将JavaServlet的很多相关对象进行包装,再传给我们的XWork框架,由我们的XWork框架去解析我们的xwork.xml配置文件,根据配置文件的信息,创建对应的Action,组装并调用相应的拦截器,执行Action,返回执行结果。
因此每次客户端的请求都将调用ServletDispatcher的service()方法,
该方法执行顺序如下:
1、通过request请求取得action的命名空间
2、根据servlet请求的Path,解析出要调用该请求的Action的名字(actionName)
3、创建Action上下文(extraContext)
4、根据前面获得的namespace、actionName、extraContext,创建一个ActonProxy
5、执行proxy的execute()方法,根据Action执行返回的值去调用执行相应的Result(返回结果处理)的方法。
现在应该能明白,原来是Action对象实例在ActionContext对象实例之前创建的,所有这样取得ActionContext容器对象就有可能会返回null.
因此解决次问题方法很简单,就是最好不要在成员变量或者是构造方法里调用ActionContext,而把它放在其它方法里.
struts2的执行原理是当一个request请求过来之后struts2拦截器根据其配置文件的解析然后再初始化并执行不同的java类,而之所以会出现上面的问题则是因为在初始化java类的时候在java类里面初始化了ActionContext的的一些对象,所以不要再java类里面去初始化一些struts2的类
一般则是在定义全局变量时定义生成了一些ActionContext的对象之类的,呵呵
在解压缩的hibernate-distribution-3.3.1.GA目录中,把hibernate.jar,和\lib\required\下的所用jar包引进到我们项目的lib目录下。
不知道用过Hibernate3.3开发的朋友会不会遇到过这样的问题:
把上面的包都准备好的,开发Hibernate测试类时,会报Causedby:
java.lang.NoClassDefFoundError:
org/slf4j/impl/StaticLoggerBinder或者Causedby:
org/apache/log4j/LogManager的错误。
这是因为Hibernate3.3提供的jar包,缺少了slf4j-log4j12.jar这个包。
解决办法是:
在Hibernate的官方网站上下载hibernate-annotations-3.4.0.GA.zip,解压缩,把其\lib\下的slf4j-log4j12.jar引进我们项目的lib目录下。
而我们引进这个jar包后,若我们没有引进log4j.ar的话,就会报java.lang.NoClassDefFoundError:
org/apache/log4j/LogManager的错误,可能是slf4j-log4j12.jar要用调用log4j的类吧。
我们也引进log4j.jar即行。
当然,hibernate-annotations-3.4.0.GA.zip是我们开发HibernateAnnotation所要用到的,除以上面那些jar包外,我们还要引进其hibernate-annotations.jar,及其\lib\下的hibernate-commons-annotations.jar,ejb3-persistence.jar。
Hbernate3.jar--------核心包
antlr.jar--------------语言转换工具,hibernate用他将hql语句转换为sql语句dom4j.jar----------------解析xml文档的工具
ehcahe.jar-------------缓存工具,如没提供其它缓存,默认使用他
jta.jar-----------标准的JTAAPI(JTA即java事物API,JTA事务比JDBC事务更强大。
一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接),有朋友说这个包可以不要,不过没测试,反正加这个没错,所以就没删除了。
cglib.jar----高效的代码生成工具,Hibernate用它在运行时扩展Java类和实现Java接口
asm.jar-----ASM字节码库,使用“cglib”则必要
asm-attrs.jar----------ASM字节码库,使用“cglib”则必要commons-collections-2.1.1.jar-----Apache的工具集,集合类,用来增强Java对集合的处理能力。
jaxen-1.1-beta-7.jar----用dom的方式解析工程中xml文件,如果想提高启动性能则去使用(可选)
commons-logging.jar---------------日志工具
log4j1.2.11.jar----------log4j库,Apache的日志工具
commons-pool.jar,commons-dbcp.jar--------DBCP数据库连接池,Apache的Jakarta组织开发的,Tomcat4的连接池也是DBCP。
(可选)
xml-apis.jar------------------------------解析xml。
解决方案
在当当网struts+hibernate版本项目中,做“最新上架前几个产品时”,代码如下:
publicList<
Product>
findByAddTime(intsize)throwsException{
//获取最新上架的前size个产品
Stringhql="
fromProductwherehasDeleted=0orderbyaddTimedesc"
;
Queryquery=getSession().createQuery(hql);
query.setFirstResult(0);
query.setMaxResults(size);
List<
products=query.list();
returnproducts;
}
出现主要错误信息:
WARN-SQLError:
1054,SQLState:
42S22
ERROR-Unknowncolumn'
hasDeleted'
Exceptioninthread"
main"
org.hibernate.exception.SQLGrammarException:
couldnotexecutequery
查询google与baidu解决方案:
Stringhql="
fromProductorderbyaddTimedescwherehasDeleted=0"
运行代码:
publicstaticvoidmain(String[]args)throwsException{
ProductDAOImplp=newProductDAOImpl();
Listl=p.findByAddTime(5);
System.out.println(l.size());
}
再次报错:
addTime'
orderclause'
再次检查,更改代码:
fromProductorderby'
descwherehasDeleted=0"
正确运行,得到l.size()为0,不正常。
再次更改代码如,在hibernate使用sql语句执行,代码如:
Stringsql="
select*fromd_productwherehas_deleted=0orderbyadd_timedesc"
Queryquery=getSession().createSQLQuery(sql);
执行结果正常输出。
成功。
参考数据:
(一)
,当在嵌套的查询语句里面用到rownum的时候会遇到这个问题,比如:
SELECT*FROM(selectt.id,t.namefromUSER_INFOtwheret.status=0orderbyt.EMP_IDdesc)_queryForTopwhererownum<
=10;
这条sql语句查询的时候就会遇到Unknowncolumn'
这个错误。
看了下mysql官方的解释,发现在嵌套的查询语句中,当用到where的时候,数据的条数可能还没有被决定,rownum这是根本都还没出来。
所以会报错。
有遇到这个问题的兄弟们,只能改一改你们的sql语句咯。
mysql官方的链接如下:
原来的那段文字如下:
StandardSQLdisallowsreferencestocolumnaliases(别名)inaWHEREclause(子句).ThisrestrictionisimposedbecausewhentheWHEREclauseisevaluated,thecolumnvaluemaynotyethavebeendetermined.
(二)
mysql+hibernate写HQL语句时报错unknowncolumn‘XXX’inwhereclause
单从字面上是列名不存在,但是实际上却是因为少写了单引号而引起的,例如:
(其中id是用uuid生成,对应是string类型)Listlist2=session.createQuery(
"
fromUserwhereid='
"
+"
ff8080812d9f1104012d9f11053a0001"
'
).list();
则会报一下错误Causedby:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Unknowncolumn'
ff8080812d9f1104012d9f11053a0001'
修改HQL如下Listlist2=session.createQuery("
+
fromUserwhereid="
成功运行
异常如图:
少Jar包:
spring2.5.6
spring所需要的包:
spring.jar
lib\jakarta-commons\commons-logging.jar、
commons-dbcp.jar、commons-pool.jar
lib\aspectj\aspectjweaver.jar、aspectjrt.jar
lib\cglib\cglib-nodep-2.1_3.jar
lib\j2ee\common-annotations.jar
lib\log4j\log4j-1.2.15.jar---该包在上面的hibernate里已经导了
---------------------------SPRING详解------------------------------
1.spring.jar是包含有完整发布模块的单个jar包。
2.org.springframework.aop包含在应用中使用Spring的AOP特性时所需的类。
3.org.springframework.asmSpring独立的asm程序,Spring2.5.6的时候需要asmJar包,3.0开始提供他自己独立的asmJar。
4.org.springframework.aspects提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,比如EclipseAJDT。
5.org.springframework.beans所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行InversionofControl/DependencyInjection(IoC/DI)操作相关的所有类。
6.org.springframework.context.support包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(JavaMail、COSMail)、任务计划Scheduling(Timer、Quartz)方面的类。
7.org.springframework.context为Spring核心提供了大量扩展。
可以找到使用SpringApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。
8.org.springframework.core包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心。
9.org.springframework.expressionSpring表达式语言。
10.org.springframework.instrument.tomcatSpring3.0对Tomcat的连接池的集成。
11.org.springframework.instrumentSpring3.0对服务器的代理接口。
12.org.springframework.jdbc包含对Spring对JDBC数据访问进行封装的所有类。
13.org.springframework.jms提供了对JMS1.0.2/1.1的支持类。
14.org.springframework.orm包含Spring对DAO特性集进行了扩展,使其支持iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。
这个jar文件里大部分的类都要依赖spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。
15.org.springframework.oxmSpring对Object/XMl的映射支持,可以让Java与XML之间来回切换。
16.org.springframework.test对Junit等测试框架的简单封装。
17.org.springframework.transaction为JDBC、Hibernat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ssh 开发 问题 总结 归纳