您的位置:首页 > 编程语言 > Java开发

spring+hibernate+struts 整合的三种方法,我只用第三种可以。

2009-03-04 10:56 609 查看
 

一.用spring的DelegatingRequestProcessor替换struts的RequestProcessor.

1)不要在web.xml中设置ApplicationContext的自动加载,在struts-config.xml中通plug-in设置.

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property value="/WEB-INF/applicationContext.xml,/WEB-INF/appContext.xml" property="contextConfigLocation" />
</plug-in>

2)在struts-config.xml中设置RequestProcessor的替换类.

<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>

3)不要在struts-config.xml中的<action>元素中设置action的type属性.

<action path="/login" input="/index.jsp"
    validate="true" scope="request">
    <forward name="forward" path="/success.jsp"></forward>
</action>

4)在applicationContext.xml或其他spring bean配置文件中设置由DelegatingRequestProcessor转发的bean,这个bean就是Action类.

<bean name="/login" class="mypack.LoginAction" singleton="false">
    <property name="property1" ref="otherbean"/>
 </bean>

 

 二.使用DelegatingActionProxy,此种方法是在action中再把请求转发给定义在applicationContext.xml中的Action.

1)同第一种方法的1).

2)如果试了第一种方法,去掉struts-config.xml中的

<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>

元素.

3)需要在struts-config.xml中定义action的type="org.springframework.web.struts.DelegatingActionProxy".即第一种方法的3)中加入type属性.

<action path="/login" input="/index.jsp" validate="true"
    scope="request" type="org.springframework.web.struts.DelegatingActionProxy">
    <forward name="forward" path="/success.jsp"></forward>
   </action>

4)同第一种方法的4).

 

三.使用Spring的ActionSupport .

Spring 的ActionSupport 继承至org.apache.struts.action.Action

ActionSupport的子类可以或得 WebApplicationContext类型的全局变量。通过getWebApplicationContext()可以获得这个变量。

这是一个 servlet 的代码:

 

public class LoginAction extends org.springframework.web.struts.ActionSupport {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
//获得  WebApplicationContext  对象
WebApplicationContext ctx = this.getWebApplicationContext();
LoginDao dao = (LoginDao) ctx.getBean("loginDao");
User u = new User();
u.setName(loginForm.getName());
u.setPwd(loginForm.getPwd());
if(dao.checkLogin(u)){
return mapping.findForward("success");
}else{
return  mapping.findForward("error");
}
}
}

applicationContext.xml 中的配置
<beans>
<bean id="loginDao" class="com.cao.dao.LoginDao"/>
</beans>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息