我在SSH框架遇到一些的问题
有很多是网上找的答案!@
包的冲突
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.
asm-2.2.3.jar
asm.jar
asm-attrs.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
Tomcat的Debug报错
Source not found for WebappClassLoader.loadClass
Source not found for SystemLogHandler.findStream() line: 123
将设置里的tomcat--advanced--add java projects to tomcat classpath在你相应的项目名前打勾,Source
not found.......的问题自会解决!
注意struts-config.xml的Type路径
在struts-config.xml里的每个action声明时type="org.springframework.web.struts.DelegatingActionProxy"
如下:
<action
attribute="regForm"
input="/WEB-IN地/page/reg.jsp"
name="regForm"
path="/reg"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="suc" path="/WEB-INF/page/suc.jsp" />
<forward name="false" path="/WEB-INF/page/err.jsp" />
</action>
3种解决重复提交问题
1 <script language="javascript">
var checkSubmitFlg = false;
function checkSubmit() {
if (checkSubmitFlg == true) {
return false;
}
checkSubmitFlg = true;
return true;
}
document.ondblclick = function docondblclick() {
window.event.returnValue = false;
}
document.onclick = function doconclick() {
if (checkSubmitFlg) {
window.event.returnValue = false;
}
}
</script>
<html:form action="myAction.do" method="post" onsubmit="return checkSubmit();">
2 还是javascript,将提交按钮或者image置为disable
<html:form action="myAction.do" method="post"
onsubmit="getElById('submitInput').disabled = true; return true;">
<html:image styleId="submitInput" src="images/ok_b.gif" border="0" />
</html:form>
3 利用struts的同步令牌机制
利用同步令牌(Token)机制来解决Web应用中重复提交的问题,Struts也给出了一个参考实现。
基本原理:
服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。
if (isTokenValid(request, true)) {
// your code here
return mapping.findForward("success");
} else {
saveToken(request);
return mapping.findForward("submitagain");
}
Struts根据用户会话ID和当前系统时间来生成一个唯一(对于每个会话)令牌的,具体实现可以参考TokenProcessor类中的generateToken()方法。
1. //验证事务控制令牌,<html:form >会自动根据session中标识生成一个隐含input代表令牌,防止两次提交
2. 在action中:
//<input type="hidden" name="org.apache.struts.taglib.html.TOKEN"
// value="6aa35341f25184fd996c4c918255c3ae">
if (!isTokenValid(request))
errors.add(ActionErrors.GLOBAL_ERROR,
new ActionError("error.transaction.token"));
resetToken(request); //删除session中的令牌
3. action有这样的一个方法生成令牌
protected String generateToken(HttpServletRequest request) {
HttpSession session = request.getSession();
try {
byte id[] = session.getId().getBytes();
byte now[] =
new Long(System.currentTimeMillis()).toString().getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(id);
md.update(now);
return (toHex(md.digest()));
} catch (IllegalStateException e) {
return (null);
} catch (NoSuchAlgorithmException e) {
return (null);
}
}
分享到:
相关推荐
在Java Web项目中,SSH框架的整合能够帮助我们更好地实现MVC(Model-View-Controller)设计模式,提高开发效率。 Struts2是基于MVC模式的Web应用框架,它主要负责处理HTTP请求,并将这些请求映射到相应的Action类上...
在学习SSH框架时,你需要掌握以下知识点: 1. **MVC模式**:理解MVC的基本原理,以及在Web应用中的作用。 2. **Struts2框架**:学习Action、Interceptor、Result和配置文件的使用,以及如何整合其他库。 3. **...
10. **异常处理**:在SSH框架中,需要合理设计和使用异常处理机制,确保系统在遇到错误时能够给出合适的反馈。 以上就是基于SSH框架的系统设计中涉及的主要技术点,这些知识对于理解和开发企业级Java Web应用至关...
在IT领域,尤其是Java开发中,使用SSH框架(Struts + Spring + Hibernate)进行项目开发时,开发者常常会遇到一些常见的问题。这些问题如果处理不当,可能会严重影响项目的进度和系统的稳定性。下面,我们将针对给定...
5. 如何在SSH框架下实现CRUD操作,以及异常处理和事务管理。 通过这个项目,你可以深入理解SSH框架的整合与应用,提升Java Web开发技能。同时,也要注意实际项目中可能会遇到的问题,如性能优化、安全防护等,这些...
SSH框架虽然强大,但也需要注意其复杂性,尤其是整合过程中可能遇到的配置问题。随着Java社区的发展,Spring Boot等更现代的框架逐渐取代SSH,但SSH仍然是理解和学习企业级Java开发的重要途径。
在具体实现过程中,你可能还会遇到一些问题,比如类加载冲突、配置文件的顺序、Action与Service的依赖注入等。解决这些问题通常需要仔细检查各个框架的配置,理解它们的工作原理,以及如何正确地配置和调用。 总的...
在SSH框架中,Hibernate负责数据库操作,通过实体类和映射文件将数据库表映射为Java对象。实例中可能包含实体类、Hibernate配置文件(hibernate.cfg.xml)、持久化映射文件(.hbm.xml)以及DAO层的实现,展示了如何...
整合SSH框架的过程中可能会遇到各种问题,如配置错误、依赖冲突等,需要仔细排查并解决。同时,理解这三个框架各自的功能和原理,对于更好地利用SSH框架进行开发至关重要。学习SSH框架不仅可以提高开发效率,还能为...
而SSH框架的扩展与集成,是针对SSH框架在实际应用中遇到的问题和局限性,通过引入和集成J2EE中其他成熟的技术框架,进行功能增强和系统优化的过程。 J2EE(Java Platform, Enterprise Edition)是一套用于开发企业...
SSH框架是Java企业级开发中常用的一个框架组合,包括了Struts2、Spring和Hibernate三个开源框架。...学习SSH框架不仅可以帮助我们理解这些框架背后的设计理念和架构思想,还能通过实践去解决实际开发中遇到的问题。
SSH框架,全称为Struts2、Spring和Hibernate的组合,是...在学习过程中,遇到问题时,可以参考官方文档、在线教程或者社区问答来解决。随着经验的积累,你将能够熟练地运用SSH框架,创建出高效、稳定的Web应用程序。
在使用这个精简版的SSH框架时,开发者需要确保所有必要的功能都已包含,并且在遇到新的功能需求时,能够快速定位并添加相应的jar包。 为了确保项目稳定运行,精简jar包时需要注意版本兼容性问题,避免因版本不匹配...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个入门实例将引导新手逐步理解并掌握...因此,无论是在心理上还是技术上,这个入门实例都是新手学习SSH框架的理想起点。
它可能涵盖了每个项目的设计思路、主要功能模块的实现细节、遇到的问题及解决方案,以及对SSH框架使用的心得体会。这些笔记将帮助你从理论到实践,更好地吸收和运用所学知识。 通过深入研究这些源码和笔记,你不仅...
通过深入研究这些资料,你可以掌握SSH2框架的基本用法,了解如何在实际项目中整合这三个框架,以及如何解决开发过程中遇到的问题。这将有助于提升你的Java Web开发技能,使你能够更好地应对复杂的企业级项目需求。...
在SSH框架的实践中,我们通常会遇到的问题有:配置错误、依赖冲突、事务管理等问题,解决这些问题需要对SSH的原理有深入了解。通过PPT的学习,可以逐步掌握SSH框架的搭建和使用,从而提升JavaWeb开发的能力。
在SSH框架中,Spring主要负责管理对象(如DAO、Service)的生命周期,以及实现业务逻辑。你可以看到Spring的配置文件(applicationContext.xml),其中定义了bean的实例化、属性注入以及服务之间的依赖关系。 3. **...
本文总结了SSH框架常见的错误和解决方法,以便开发者快速解决问题,提高开发效率。 一、Struts配置文件错误 在Struts框架中,struts-config.xml文件是核心配置文件,一旦配置错误,将导致应用程序无法正常运行。...
在Maven环境中搭建SSH框架,你需要先配置项目的pom.xml文件,引入所需的依赖。对于Struts2,Spring和Hibernate,你需要指定它们的版本号。例如: ```xml <groupId>org.apache.struts <artifactId>struts2-core...