Struts1.2 Hibernate Spring框架组合(三)-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Struts1.2 Hibernate Spring框架组合(三)

简介:

   Java Web开发中包的冲突,版本问题对于开发有着很大的影响。终于把SSH组合打架完成并且能够成功的跑起来了。

这一部分是Struts和Spring的组合。

1.先创建一个form表单

页面代码:



  1. <%@ page language="java" pageEncoding="GB2312"%> 
  2. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>  
  3. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> 
  4. <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 
  5.   
  6. <html>  
  7.     <head> 
  8.         <title>欢迎登录</title> 
  9.     </head> 
  10.     <body> 
  11.         <html:form action="/login">  
  12.             编号 : <html:text property="empId"/><html:errors property="empId"/><br/> 
  13.             姓名 : <html:text property="empName"/><html:errors property="empName"/><br/> 
  14.             年龄 : <html:text property="empAge"/><html:errors property="empAge"/><br/> 
  15.             <html:submit value="登录"/><html:cancel value="取消"/> 
  16.         </html:form> 
  17.         <logic:present name="message"> 
  18.             ${message } 
  19.             <br> 
  20.         </logic:present> 
  21.     </body> 
  22. </html> 

2.页面提交后,成功转向成功页面,失败转向登录页面

创建一个Action该Action继承一个BaseAction类,BaseAction类是对Spring注入对象的封装。

代码如下:


  1. import org.springframework.web.context.WebApplicationContext; 
  2. import org.springframework.web.context.support.WebApplicationContextUtils; 
  3. import org.springframework.web.struts.ActionSupport; 
  4. /** 
  5.  *  
  6.  *  
  7.  * Struts 与 Spring 结合的基本的Action类 
  8.  *  
  9.  *  
  10.  * Struts 将Action类交给Spring来托管 
  11.  *  
  12.  * @author aiilive 
  13.  * 
  14.  */ 
  15. public class BaseAction extends ActionSupport { 
  16.  
  17.     protected Object getBean(String id) { 
  18.         WebApplicationContext ctx = WebApplicationContextUtils 
  19.                 .getWebApplicationContext(this.servlet.getServletContext()); 
  20.         return ctx.getBean(id); 
  21.     } 
  22.  

对提交页面的处理的Action代码如下:



  1. package xiao.zhang.struts.action; 
  2.  
  3. import javax.servlet.http.HttpServletRequest; 
  4. import javax.servlet.http.HttpServletResponse; 
  5. import org.apache.struts.action.ActionForm; 
  6. import org.apache.struts.action.ActionForward; 
  7. import org.apache.struts.action.ActionMapping; 
  8.  
  9. import xiao.zhang.bean.Emps; 
  10. import xiao.zhang.service.ImpEmpsService; 
  11. import xiao.zhang.struts.form.LoginForm; 
  12.  
  13. import xiao.zhang.struts.action.BaseAction; 
  14.  
  15. /** 
  16.  * MyEclipse Struts Creation date: 07-28-2012 
  17.  *  
  18.  * XDoclet definition: 
  19.  *  
  20.  * @struts.action path="/login" name="loginForm" input="/login.jsp" 
  21.  *                scope="request" validate="true" 
  22.  */ 
  23. public class LoginAction extends BaseAction { 
  24.  
  25.     public ActionForward execute(ActionMapping mapping, ActionForm form, 
  26.             HttpServletRequest request, HttpServletResponse response) { 
  27.         LoginForm loginForm = (LoginForm) form; 
  28.         String empName = loginForm.getEmpName(); 
  29.         int empAge = loginForm.getEmpAge(); 
  30.         System.out.println("empName:"+empName+"  empAge:"+empAge+"  empId:"+loginForm.getEmpId()); 
  31.    *     ImpEmpsService empService = (ImpEmpsService) getBean("EmpsService"); 
  32.         Emps emp = empService.getEmpsById(loginForm.getEmpId()); 
  33.         if (emp.getEmpName().equals(empName) && emp.getEmpAge().equals(empAge)) { 
  34.             request.setAttribute("message", "登录成功"); 
  35.             request.setAttribute("emp", emp); 
  36.             return mapping.findForward("succeed"); 
  37.         }else{ 
  38.             request.setAttribute("message", "登录失败"); 
  39.             return mapping.findForward("error"); 
  40.         } 
  41.     } 

在struts-config.xml配置文件中的配置信息如下:



  1. <struts-config> 
  2.   <data-sources /> 
  3.   <form-beans > 
  4.     <form-bean name="loginForm" type="xiao.zhang.struts.form.LoginForm" /> 
  5.   </form-beans> 
  6.   <global-exceptions /> 
  7.   <global-forwards /> 
  8.   <action-mappings > 
  9.     <action 
  10.       attribute="loginForm" 
  11.       input="/login.jsp" 
  12.       name="loginForm" 
  13.       path="/login" 
  14.       scope="request" 
  15.       type="xiao.zhang.struts.action.LoginAction"> 
  16.       <forward name="error" path="/login.jsp" /> 
  17.       <forward name="succeed" path="/index.jsp" /> 
  18.     </action> 
  19.   </action-mappings> 
  20.   <message-resources parameter="xiao.zhang.struts.ApplicationResources" /> 
  21. </struts-config> 

3.说明

   如上面的LoginAction类中的带星号行红色代码所示,Action处理登录的业务直接功过BaseAction提供的getBean方法通过传入业务逻辑处理类,根据Spring的依赖注入原理获得处理的对象实例,从而不用将Action类配置到Spring中去。

在Spring配置将主要配置业务逻辑处理类。

4.Struts将主要用户视图层和业务逻辑层之间的数据显示和获取的控制。

Struts配置文件图:


通过Struts的配置文件图可以看到页面的请求,控制,回复的处理逻辑。

例如:页面提交查询所有信息,则Action中进行处理


  1. public class QueryAction extends BaseAction { 
  2.     public ActionForward execute(ActionMapping mapping, ActionForm form, 
  3.             HttpServletRequest request, HttpServletResponse response) { 
  4.         ImpEmpsService empService = (ImpEmpsService) getBean("EmpsService"); 
  5.         List empsList=empService.findAll(); 
  6.         request.setAttribute("empsList", empsList); 
  7.         return mapping.findForward("succeed"); 
  8.     } 

可以看出Action只做页面的流程之间的控制和业务层逻辑处理完成后的数据回复到显示层的处理工作。



本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/946334,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章