浏览 4062 次
|
锁定老贴子 主题:推荐一种新方法WebWork+Spring
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2006-04-04
昨天看了scud的帖子以后,试验了很多次,都没有成功,可能是我的文件有问题,反正错误不断,而且经常不同,后来我看了webwork子带的一个例子(都是大家提醒我去看例子),名字叫start,应该是最简单的例子了,方法如下:
1. web.xml文件,很平常的配置没有什么特别的: [code:1]<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Acme Corp</display-name> <!-- START SNIPPET: example --> <filter> <filter-name>webwork</filter-name> <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>webwork</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- END SNIPPET: example --> <!-- START SNIPPET: compatibility <servlet> <servlet-name>JspSupportServlet</servlet-name> <servlet-class>com.opensymphony.webwork.views.JspSupportServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>action</servlet-name> <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> END SNIPPET: compatibility --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>default.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> <!-- START SNIPPET: taglib --> <!-- This typically isn't required, as the taglib is included in webwork.jar. If you really need a taglib configuration within web.xml, copy webwork/src/java/META-INF/taglib.tld to the WEB-INF directory as webwork.tld. --> <taglib> <taglib-uri>webwork</taglib-uri> <taglib-location>/WEB-INF/lib/webwork-2.2.2.jar</taglib-location> </taglib> <!-- END SNIPPET: taglib --> </web-app>[/code:1] 2. xwork.xml文件,也没什么特别的 [code:1]<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"> <xwork> <include file="webwork-default.xml"/> <package name="default" extends="webwork-default"> <action name="hello" class="com.ww.test.HelloAction"> <result name="success">/WEB-INF/pages/hello.jsp</result> </action> </package> </xwork>[/code:1] 关键就是applicationContext.xml [code:1]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="autodetect"> <bean id="helloBean" class="com.ww.test.HelloBean" singleton="true" /> <!-- add your spring beans here --> </beans>[/code:1] 他的属性里面有了default-autowire="autodetect",这个很重要,所有的配置文件都在这了,java文件就不贴了,就是显示一个hellworld的功能,这样,他就会去找spring的bean,少了很多繁琐的配置细节,也不用那个external 不过要说明的一点就是,如果和数据库连接的时候,最好分成2个xml文件,其中一个不要设置autodetect,主要完成普通的数据库连接操作,hibernate的事务管理,还有就是DAO也要在这个文件实现,然后,在建立一个xml,随便起个名字,比如叫beans.xml,这个里面就可以放置Service和其他一些你要用的bean,然后设置撑autodetect,这样就不会出现错误了给出我的配置文件供大家参考,我当初就是苦于没有样例,希望给大家一些帮助吧 [/code] 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2006-04-04
applicationContext.xml
[code:1]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>/WEB-INF/data.properties</value> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>${datasource.driverClassName}</value> </property> <property name="url"> <value>${datasource.url}</value> </property> <property name="username"> <value>${datasource.username}</value> </property> <property name="password"> <value>${datasource.password}</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource" /> </property> <property name="mappingResources"> <list> <value>com/user/bean/Userstdinfo.hbm.xml</value> <value>com/user/bean/Usermoreinfo.hbm.xml</value> <value>com/user/bean/Userrealinfo.hbm.xml</value> <value>com/user/bean/Role.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop> <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop> <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop> </props> </property> <property name="eventListeners"> <map> <entry key="merge"> <bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener" /> </entry> </map> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager"/> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean id="userStdInfoDAO" class="com.user.dao.hibernate.UserStdInfoHibernateDAO"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="userMoreInfoDAO" class="com.user.dao.hibernate.UserMoreInfoHibernateDAO"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="userRealInfoDAO" class="com.user.dao.hibernate.UserRealInfoHibernateDAO"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> </beans>[/code:1] beans.xml: [code:1]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="autodetect"> <bean id="userStdInfoService" parent="txProxyTemplate"> <property name="target"> <bean class="com.user.business.service.UserStdInfoServiceImpl"> <property name="userStdInfoDAO" ref="userStdInfoDAO" /> </bean> </property> </bean> <bean id="userMoreInfoService" parent="txProxyTemplate"> <property name="target"> <bean class="com.user.business.service.UserMoreInfoServiceImpl"> <property name="userMoreInfoDAO" ref="userMoreInfoDAO" /> </bean> </property> </bean> <bean id="userRealInfoService" parent="txProxyTemplate"> <property name="target"> <bean class="com.user.business.service.UserRealInfoServiceImpl"> <property name="userRealInfoDAO" ref="userRealInfoDAO" /> </bean> </property> </bean> <!-- ======================= Util Fountion from here ================================= --> <bean id="userLogin" class="com.user.func.imp.UserLoginImpl" > <property name="userStdInfoService"> <ref bean="userStdInfoService"/> </property> </bean> <bean id="onlineTimeCompute" class="com.user.func.imp.OnlineTimeComptueImpl" init-method="init" > <property name="userStdInfoService"> <ref bean="userStdInfoService"/> </property> </bean> <!-- ======================= Action begin from here ================================= --> <bean name="doRegister" class="com.user.web.action.common.DoRegisterAction" singleton="false"> <property name="userStdInfoService"> <ref bean="userStdInfoService"/> </property> <property name="userMoreInfoService"> <ref bean="userMoreInfoService"/> </property> <property name="userRealInfoService"> <ref bean="userRealInfoService"/> </property> </bean> </beans>[/code:1] 希望对大家有帮助 |
|
| 返回顶楼 | |
|
时间:2006-04-04
对了,忘了说,用的spring1。2。6和webwork2。2。2
|
|
| 返回顶楼 | |
|
时间:2006-04-05
谢谢,不过我一定要说:
default-autowire="autodetect"是spring自己的属性查找策略,跟webwork没有什么直接关系的。其实你要是不想external ,主要的配置是在webwork配置文件中的 [code:1] ### if specified, the default object factory can be overridden here ### Note: short-hand notation is supported in some cases, such as "spring" ### Alternatively, you can provide a com.opensymphony.xwork.ObjectFactory subclass name here # webwork.objectFactory = spring ### specifies the autoWiring logic when using the SpringObjectFactory. ### valid values are: name, type, auto, and constructor (name is the default) webwork.objectFactory.spring.autoWire = name [/code:1] 这个两个选项 |
|
| 返回顶楼 | |
|
时间:2006-04-05
堵了我几天的webwork⒉⒉1+spring1.2.6的结合终于搞定了,对xxboy表示衷心的感谢, 是啊,现在的人大部分都搞比较高端的东西了,这些基础都没什么人重视了。其实java这东西难就难在配置。 东西一配置好,上手就很容易了。。。再次表示感谢。
|
|
| 返回顶楼 | |
|
时间:2006-04-05
其实这个问题也郁闷了我好几天,原来用2.1.7做的程序,升级到2.2.2全部不能用了,当时在网上的好多方法都试过 ,可是就是没有成功(在2.1.7上可以用external),所以,拿出来给大家看,我当时就是苦于没有例子,又没去看自带的例子,也希望大家都看看原始文件带的例子程序
|
|
| 返回顶楼 | |
|
时间:2006-04-05
嗯,webwork的文档没有例子做得好。
写文档不容易啊。 |
|
| 返回顶楼 | |
|
时间:2006-04-07
引用 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 老是报这个listener error,不知道你的webwork.property是怎么配置的? |
|
| 返回顶楼 | |
|
时间:2006-04-07
估计是spring没有配好,你看看日志,应该有详细的说明才对。
|
|
| 返回顶楼 | |
|
时间:2006-04-10
listener errors是由于容器不能初始化applicationContext.xml等配置文件。
在web.xml中加入 引用 <context-param>
,并将那些xml文件放到/WEB-INF下就可以了。
<param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value> </context-param> 但是现在虽然解决了这个错误, 一运行action的时候老是报,不能找到**/action 也就是说,当你的jsp文件在哪个文件夹中它就 包” 不能actionmapping **中的action,或者该action不存在“, 我也用在xwork中配置了对应的namespaces=**,但是不管怎样,都不起作用。。。。。 |
|
| 返回顶楼 | |





