本文适合部署SSH项目失败的,主要解决部署时的异常!
我为什么要写这篇文章?
学了一个周的Spring了,部署个SSH项目都到处报错,为一个sessionFactoty can't be build异常困扰了一个周,根本冷静不下来,难道跟 Spring 这么无缘?NO NO NO,不完全是这样的!
最近冷静下来,重新部署了一次项目,成功了!下面与同样被sessionFactory 或者说applicationContext.xml 报出的异常困扰的朋友们分享一下“成功” 的经验!
整合SSH总体的步骤:
加入架包-->编写web.xml配置文件-->编写hibernate.cfg.xml-->编写applicationContext.xml
-->编写struts.xml-->完善代码
下载地址:SSH整合所需架包 / SSH整合所需架包(二) 总大小:14MB
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="3.0" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 7 <!--告诉默认读取哪个配置--> 8 <context-param> 9 <param-name>contextConfigLocation</param-name> 10 <param-value>classpath:applicationContext.xml</param-value> 11 </context-param> 12 <!--开启监听:不开启将无法读取context-paramm--> 13 <listener> 14 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 15 16 </listener> 17 <!--开启事务过滤器--> 18 <filter> 19 <filter-name>OpenSessionInViewFilter</filter-name> 20 <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 21 </filter> 22 <filter-mapping> 23 <filter-name>OpenSessionInViewFilter</filter-name> 24 <url-pattern>*.action</url-pattern> 25 </filter-mapping> 26 <!--struts2配置--> 27 <filter> 28 <filter-name>struts2</filter-name> 29 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 30 </filter> 31 32 <filter-mapping> 33 <filter-name>struts2</filter-name> 34 <url-pattern>/*</url-pattern> 35 </filter-mapping> 36 </web-app>
1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 4 5 <hibernate-configuration > 6 <session-factory > 7 8 <!-- hibernate.dialect(方言)使用的是哪一种数据库 9 org.hibernate.dialect.MySQLDialect 10 org.hibernate.dialect.SQLServerDialect 11 --> 12 <property name="hibernate.dialect"> 13 org.hibernate.dialect.MySQLDialect 14 </property> 15 16 <!-- 数据库驱动类 17 com.mysql.jdbc.Driver 18 com.microsoft.sqlserver.jdbc.SQLServerDriver 19 --> 20 <property name="hibernate.connection.driver_class"> 21 com.mysql.jdbc.Driver 22 </property> 23 24 <!-- 用户名 --> 25 <property name="connection.username">root</property> 26 27 <!-- 用户密码 --> 28 <property name="connection.password">abc123</property> 29 30 <!-- 自动建表 --> 31 <property name="hibernate.hbm2ddl.auto">update</property> 32 33 <!-- url 34 jdbc:sqlserver://localhost:1344;DataBaseName=testDB 35 --> 36 <property name="connection.url">jdbc:mysql://localhost:3306/use4class</property> 37 38 <!-- 控制台查看sql语句 --> 39 <property name="show_sql">true</property> 40 41 <!-- 控制台查看格式化sql语句 --> 42 <property name="hibernate.format_sql">true</property> 43 44 <!-- 告诉hibernate映射文件路径 --> 45 46 47 </session-factory> 48 49 </hibernate-configuration>
我使用的mysql数据库,如果你使用别的数据库,请替换家暴、修改驱动、登录信息、数据库语言
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 4 "http://struts.apache.org/dtds/struts-2.1.dtd"> 5 6 <struts> 7 <!-- 允许使用动态方法 --> 8 <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> 9 <!-- 字符编码 --> 10 <constant name="struts.i18n.encoding" value="utf-8"></constant> 11 <!-- 主题 --> 12 <constant name="struts.ui.theme" value="simple"></constant> 13 <!-- 开发者模式 --> 14 <constant name="struts.devMode" value="true"></constant> 15 <!-- 国际化 --> 16 <constant name="struts.custom.i18n.resources" value="message"/> 17 <package name="default" namespace="/" extends="struts-default"> 18 <!-- 获取文章 --> 19 <!--<action name="*Sys" class="com.jboaoffice.action.SysAction" method="{1}"> 20 <result name="success" >/index.jsp</result> 21 <result name="input">/login.html</result> 22 <result name="suc">index.jsp</result> 23 <result name="err">login.html</result> 24 </action>--> 25 26 </package> 27 </struts>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xmlns:aop="http://www.springframework.org/schema/aop" 8 xsi:schemaLocation=" 9 http://www.springframework.org/schema/aop 10 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 11 http://www.springframework.org/schema/beans 12 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 13 http://www.springframework.org/schema/context 14 http://www.springframework.org/schema/context/spring-context-3.0.xsd 15 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> 16 17 18 19 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 20 <property name="configLocation"> 21 <value>classpath:hibernate.cfg.xml</value> 22 </property> 23 <property name="mappingDirectoryLocations"> 24 <list> 25 <value>classpath:com/jboa/entity/</value> 26 </list> 27 </property> 28 </bean> 29 30 31 <!-- 配置hibernate --> 32 <bean id="hibernateTeamp" class="org.springframework.orm.hibernate3.HibernateTemplate"> 33 <constructor-arg name="sessionFactory" ref="sessionFactory"></constructor-arg> 34 </bean> 35 36 37 <!-- Dao配置 --> 38 <bean id="empDao" class="com.jboaoffice.impl.SysEmployeeImpl"> 39 <property name="hibernateTemplate" ref="hibernateTeamp"></property> 40 </bean> 41 42 <!-- biz配置 --> 43 <bean id="empBiz" class="com.jboaoffice.biz.impl.SysEmployeeBizImpl"> 44 <property name="empdao" ref="empDao"></property> 45 </bean> 46 47 <!-- action 配置 --> 48 <bean id="empAction" class="com.jboaoffice.action.SysAction"> 49 <property name="empBiz" ref="empBiz"></property> 50 </bean> 51 52 53 <!-- 配置事务管理器 --> 54 <!-- <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 55 <property name="sessionFactory" ref="sessionFactory"></property> 56 </bean> 57 <tx:advice id="txadvice" transaction-manager="txManager"> 58 <tx:attributes> 59 <tx:method name="get*" read-only="true"/> 60 <tx:method name="find*" read-only="true"/> 61 <tx:method name="search*" read-only="true"/> 62 <tx:method name="list*" read-only="true"/> 63 <tx:method name="update*" propagation="REQUIRED"/> 64 <tx:method name="del*" propagation="REQUIRED"/> 65 <tx:method name="save*" propagation="REQUIRED"/> 66 </tx:attributes> 67 68 </tx:advice> 69 aop config 70 <aop:config> 71 <aop:pointcut expression="execution(* com.jboaoffice.bi.impl.*.*(..))" id="tx"/> 72 <aop:advisor advice-ref="txadvice" pointcut-ref="tx" /> 73 </aop:config> 74 --> 75 </beans>
请注释掉sessionFactory后面</bean>前面的代码【那是配置dao、hibernateTemplate、biz、action自动注入的】,做完这几个工作你就可以运行服务!
applicationContext里面的配置有很多种形式,先把基础的做了
1、下面你可以去完善entityBean & entityBean.hbm.xml
2、dao、 biz(service)、action 代码 并且去配置struts
3、请取消注释sessionFactory后面</bean>前面的代码
再运行应该不会报框架的问题了!
根据以往在web中使用框架的经验:
1、架包正确(缺架包一般都会报出 classnotfound 的异常,后面就是一长串命名空间 :很好找)
2、配置正确 (spring 框架我遇到最多的是sessionFactory can't be build )
3、配置中提到的 java bean 存在 (java bean 不存在 提示很明显的 直接把你配置里面的bean id 打印出来,对症下药方可解决)
即可正常启动服务!
我经常犯得错误:
1、【配置】少配置内容、命名错误、bean 关系不完整
2、【Java代码】反向工程建映射文件【Spring可能会不买账】,我的是出问题了,报sessionFactory can't be build 的异常
sessionFactory can't be build :
这是个困扰我很久的异常,这个异常详细内容有这么一段话
google 过后得到的答案是使用了低版本hibernate 、高版本的springFramework ,
我崩溃了,于是我就重新建项目,按照这个流程,成功了。上面那个问题我会再检查,看到的朋友,如果你遇到过并且解决了,请告诉我;或者你知道这是什么原因,告诉我,告诉大家!
☞出自新手之笔,如有错误,请提出,大家一起纠正☜