您的位置:首页 > 其它

关于SSH整合时遇到的一些问题

2016-01-05 18:19 274 查看
小弟最近自学关于SSH版的WEB项目,这几天整合SSH时也报了很多错误。所以特此写下一些遇到的错误以供大家和自己以后借鉴

1.报获取bean空指针 那么很可能你web.xml没有初始化spring.连初始化都没有,那么肯定是空指针。

2.报所在类找不着时,而你确实导进去了,看你是否是先导入WEB-INF目录下的LIB文件夹下。

3.报JSP页面错误时,很可能是版本不支持。在指令改为<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>即可。

4报session not bound thread ....transaction....那么可能是你没有开启事务。

解决方案1.要么你在你的service里面直接opensession或者在配置文件里面添加配置(具体可以去BAIDU一下,好像就添加1,2个配置)。

                2.你直接引用spring提供的事务管理器,自动帮你开关事务比较方便。applicaticonContext.xml或者beans.xml具体配置如下(我用的就是这个)

<!-- 1*设置事务管理器 -->****************************************************************************************************

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<!-- 2*启用事务注解 -->*******************************************************************************************************

<tx:annotation-driven transaction-manager="txManager"/>

<!-- 3*允许事务注解在文件中使用 -->*****************************************************************************************

<context:annotation-config/>(没有这句也是万万不行的)。

<!-- 4*在你的service要通过去获取session来过去数据时必须指定使用事务器(也是不能少,你指定了事务器,但你必须指定在哪里使用)-->*****************************************************************************************

示例代码如下:

@Transactional

public class  test{

private SessionFactory sessionFactory;

..........................

public List countyList (){

        return sessionFactory.openSession().createQuery("from Country").list();

        

    }

}

5.另外一个特别容易出现的错误报空指针就是没有初始化spring容器。道理和1有点相似,因为你根本还没有把spring整进项目里面去。

在web.xml的配置如下

<context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>classpath:applicationContext.xml</param-value>

  </context-param>

  <listener>

  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

6.下面就是一些细节问题。在用myclipse引进hebernate时有一个target runtime 最好是选 myeclipse tomcat x.0(根据你自己电脑软件版本),这个是指定你常用的服务器;

7.在测试类中获取spring实例时代码:WebApplicationContext wlx=WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());(这个一般用于web项目)

8.本人用的是sqlserver数据库,其在配置数据源和sessionfactory时的相关重要配置如下,为什么我会发这个配置,因为以前我用的驱动包会有BUG,使hibernate并不能去操作数据库,网上查了一下是说微软的包有BUG,所以也是在网上搜了很久才把这个问题解决,并且在网上也下了另外一个驱动包jtds-1.31.jar,另外还有2个是msbase.jar和msutil.jar 假如你项目中已经有一个mssqlserver.jar,并且因为这个问题报错连不上数据库请在引入jtds-1.31.jar时删除后者,不然会引起冲突。只要前面3个包即可。

jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver

jdbc.url=jdbc:jtds:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=???

9最后在说一下引SHH的先后顺序,不知道是不是正规的,但我一般是先手动引spring然后hibernate最后才是struts.

小弟第一次发帖,无论是格式和内容都很杂乱,想到什么就写什么,还请大家多多包涵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssh