花了两三个下午的时间,终于把原先的新闻系统给改成用三大框架来实现了。。看看现在的代码,真是很简单。汗,有时候在想这个蛮杯具的,人家都帮我们写好了,那我们还要写什么啊,直接拿来用就是了。
下面谈谈自己碰到的问题:
第一个是在applicationContext.xml里面,没有在<bean id="xxxDao" class="xx" >里面填充<sessionFactory>这个属性值。确实在那个类里面也看不到sessionFactory那个类,但是dao继承了HibernateDaoSupport,继承的那个类里面有sessionFactory的属性。
第二个是User是否注入的问题,可以注入,也可以不注入,但是如果选择注入的话,scope一定要="prototype",因为User是全局变量,如果是单例的话,很容易出错,prototype的好处就是进来一次就new一次,这样避免了线程不安全。(当然,User只是一个比方,也可以是其他的东西)。
第三个是一个错误:
java.lang.SecurityException: No class by name: XinWenDao
也许你在页面上操作都没问题,但是下面就报这个错,是因为你不小心在jsp上写了这个。。一般如果复制工程的话,很容易会引起这个问题。
再接下来是项目的总结了:
一、dwr如何整到三大框架里面。
首先dwr是通过js和dao层交互,当然中间经过了servlet层,我们假设现在还是用dao来调用方法,那事务谁来帮我们开启、关闭,显然地是调用service,因为在service层调用了dao层的方法,而且必须和spring结合在一起,由他来帮我们注入dao。。
因此,dwr.xml的配置文件如下:
其他的与原先的dwr用法没啥区别,该怎样就怎样吧。。
二、applicationContext.xml的结构是怎样的。。
好像有这样一种规律吧。。
最上面是<sessionFactory>,因为下面dao层要引用。。
往下一层是dao层
再往下一层是serivce层
再往下是action的请求,原先action跳到actionservlet,现在spring来接替他的位子,帮他new出action,并注入serice
最后一层就是事务,即代理,开启事务、关闭事务,代码都差不多。
事务的代码如下:
以上是我的一些总结,与大家共勉之!