Struts整合spring方法(二)

来源:互联网 发布:免费医药进销存软件 编辑:程序博客网 时间:2024/06/05 10:39
   用Spring的DelegatingRequestProcessor类来代替struts中的RequestProcessor类,从而把struts中的action与Spring分离。并把struts的动作置于Spring框架的控制下。
1。新建一个登陆页面:loginDelegatingRequestProcessor.jsp
<%@pagecontentType="text/html;charset=GBK"isELIgnored="false"%>
<html>
<head><title>实现用户登录的Struts实例</title></head>
<body>
   <fontsize=’22’>${msg}<br></font>
   <formname="form1"action="/myLogin2/loginDelegatingRequestProcessor.do"method="post">
       用户名:<inputtype="text"name="username"value="${user.username}"/><br>
      密码:<inputtype="password"name="password"value="${user.password}"/><br>
       <inputtype="submit"name=”method”value="提交"/>
   </form>
</body>
</html>
2。创建一个存储登陆用户信息的类:User.java该类继承于ActionForm,代码如下:
package com.zhaosoft.bean;
 
import org.apache.struts.action.ActionForm;
 
publicclass Userextends ActionForm {
 
   private Stringusername=null;
   private Stringpassword=null;
   public String getUsername() {
      returnusername;
    }
   publicvoid setUsername(String username) {
      this.username = username;
    }
   public String getPassword() {
      returnpassword;
    }
   publicvoid setPassword(String password) {
      this.password = password;
    }
   
   
}
3 Com.zhaosoft.action中新建一个LoginDelegationRequestProcessor.java,该类继承于strutsAction,代码示例如下:
package com.zhaosoft.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
import com.zhaosoft.bean.User;
import com.zhaosoft.domain.Login;
 
public class LoginDelegationRequestProcessor extends Action {
 
       private Login login;
 
       public Login getLogin() {
              return login;
       }
 
       public void setLogin(Login login) {
              this.login = login;
       }
 
       public ActionForward execute(ActionMapping mapping, ActionForm form,
                     HttpServletRequest request, HttpServletResponse response)
                     throws Exception {
              String forwardJsp = "login";
              getLogin().login((User) form);
              request.setAttribute("msg", login.getMsg());
              request.setAttribute("user", (User) form);
 
              return mapping.findForward("login");
       }
 
}
4。 新建包:com.zhaosoft.domaincom.zhaosoft.domain.impl在包com.zhaosoft.domain中新建一个接口:Login.java用来定义登陆的逻辑处理,示例代码如下:
package com.zhaosoft.domain;
 
import com.zhaosoft.bean.User;
 
publicinterface Login {
publicabstractvoid login(User user);
publicabstract String getMsg();
}
5 在包com.zhaosoft.domain.impl中建立LoginImpl.java用来实现登陆的逻辑处理
package com.zhaosoft.domain.impl;
 
import com.zhaosoft.bean.User;
import com.zhaosoft.domain.Login;
 
publicclass LoginImplimplements Login {
 
   private Stringmsg;
   public String getMsg() {
      returnthis.msg;
    }
 
   publicvoid login(User user) {
       String username = user.getUsername();
       String password = user.getPassword();
      if (username ==null && password ==null) {
          msg ="请输入用户名和密码";
       }elseif ("".equals(username) || "".equals(password)) {
          msg ="请输入用户名和密码";
       }elseif ("zhaosoft".equals(username) && "zhaosoft".equals(password)) {
          msg ="登陆成功";
       }elseif (!"zhaosoft".equals(username)) {
          msg ="用户名填写错误";
       }
    }
 
}
6.修改struts的配置文件struts-config.xml,注册ContextLoaderPlugIn插件,实例代码如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstruts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
   <!--定义formbean-->
   <form-beans>
      <form-beanname="user"type="com.zhaosoft.bean.User"></form-bean>
   </form-beans>
   <action-mappings>
      <actionpath="/loginDelegatingRequestProcessor"
          type="com.zhaosoft.action.LoginDelegationRequestProcessor"
          name="user">
          <forwardname="login"
             path="/jsp/loginDelegatingRequestProcessor.jsp">
          </forward>
      </action>
      <actionpath="/loginDelegatingRequestProcessorTemp"
          type="org.apache.struts.actions.ForwardAction"
          parameter="/jsp/loginDelegatingRequestProcessor.jsp">
      </action>
   </action-mappings>
   <controller
      processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
   </controller>
   <plug-in
      className="org.springframework.web.struts.ContextLoaderPlugIn">
      <set-propertyproperty="contextConfigLocation"
          value="/WEB-INF/spring-config.xml"/>
   </plug-in>
</struts-config>
7. 编写Spring的配置文件spring-config.xml。放在WEB-INF目录中,代码如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEbeans PUBLIC"-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
   <beanid="login"class="com.zhaosoft.domain.impl.LoginImpl">
   </bean>
   <beanname="/loginDelegatingRequestProcessor"class="com.zhaosoft.action.LoginDelegationRequestProcessor">
   <propertyname="login">
   <refbean="login"/>
   </property>
   </bean>
</beans>