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,如需转载请自行联系原作者

相关文章
|
14天前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
28 0
|
23天前
|
缓存 Java Spring
Spring 框架中 Bean 的生命周期
Spring 框架中 Bean 的生命周期
32 1
|
1月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
12 0
|
1月前
|
网络安全
ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
ssh(Spring+Spring mvc+hibernate)——BaseDaoImpl.java
12 0
|
1月前
|
Shell
sh(Spring+Spring mvc+hibernate)——IEmpDao.java
sh(Spring+Spring mvc+hibernate)——IEmpDao.java
11 0
|
1月前
|
Shell
sh(Spring+Spring mvc+hibernate)——IDeptDao.java
sh(Spring+Spring mvc+hibernate)——IDeptDao.java
13 0
|
1天前
|
安全 Java 数据库连接
[AIGC] Spring框架的基本概念和优势
[AIGC] Spring框架的基本概念和优势
|
1天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
1天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
16天前
|
SQL Java 数据库连接
jpa、hibernate、spring-data-jpa、jdbcTemplate
jpa、hibernate、spring-data-jpa、jdbcTemplate