webwork2+spring+hibernate终于成功配置出来啦,兴奋一下!
总结一下:
1. web.xml中<servlet>标签要位于<listener>标签之后,否则会报错
2. 关于<listener>的配置如下(关于webwork与spring融合)
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.atlassian.xwork.ext.ResolverSetupServletContextListener</listener-class>
</listener>
org.springframework.web.context.ContextLoaderListener是spring必需的
com.atlassian.xwork.ext.ResolverSetupServletContextListener是外部解析器所需要的,作用是通过ServletContext来取出spring的ApplicationContext,作为WebWork与spring的“桥梁”。
然后,在xwork.xml中的<package>标签中加externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver",这个的作用是从applicationContext.xml(是spring的配置文件)中解析外部引用的bean,同时添加一个拦截器com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor
具体代码中如下:
<interceptors>
<interceptor name="reference-resolver" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor" />
<interceptor-stack name="modelParamsStack">
<interceptor-ref name="params" />
<interceptor-ref name="model-driven" />
<interceptor-ref name="reference-resolver" />
</interceptor-stack>
</interceptors>
最后,在需要使用spring bean的action中添加bean的外部应用功能,具体代码如下:
<action name="login" class="action.LoginAction">
<external-ref name="userDAO">userDAOProxy</external-ref> //此处,<external-ref>标签内容在同一行,否则出错
<result name="success" type="dispatcher">
<param name="location">/main.jsp</param>
</result>
<result name="loginfail" type="dispatcher">
<param name="location">/error.jsp</param>
</result>
<interceptor-ref name="modelParamsStack" />
</action>
3. applicationContext.xml的配置(spring与hibernate融合)
此出注意jar问题
4. hibernate数据库映射
user是SQL Server2000的关键字,不能作为表名,这可是惨痛的教训阿!
还有表一定要设计好主键