文档章节

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

secondriver
 secondriver
发布于 2015/09/17 09:23
字数 716
阅读 6
收藏 0

   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
粉丝 10
博文 229
码字总数 233821
作品 0
广州
程序员
私信 提问
简短的简历,找靠谱的公司收养

06年进入开发行业:使用简单的jsp和粗糙的ssh框架开发网站功能,可自行建立不是很完美的Oracle结构。 08年成为项目组长:通过笨鸟先飞的思路,加强自身能力的同时逐渐在新项目中应用新框架和...

sameroad
2012/05/30
2.2K
18
分析总结Spring管理Hibernate中Dao层访问数据库常用方式(附SSH的jar包)

上篇博客中已经讲解Spring配置数据源的常用的几种方式。接下来本篇博客继续讲解。配置完数据源,那Dao层是如何访问数据库呢? 基于最近的项目使用SSH2框架完成,分析总结Spring与Hibernate集...

晨曦之光
2012/08/22
588
0
基于maven的ssh框架一步一步搭建(一)

一、新建maven项目,配置ssh框架pom的最低支持 1、新建一个maven项目 2、添加一个web.xml <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......

漂泊者及其影子
2014/07/16
0
3
Spring 事务管理高级应用难点剖析: 第 2 部分

Spring 抽象的 DAO 体系兼容多种数据访问技术,它们各有特色,各有千秋。像 Hibernate 是非常优秀的 ORM 实现方案,但对底层 SQL 的控制不太方便;而 iBatis 则通过模板化技术让您方便地控制...

红薯
2010/03/28
768
1
Spring 源码解读 推荐流程

Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.javaeye.com/topic/86594 Spring源代码解析(三):Sprin...

2k10
2015/04/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis缓存穿透、缓存雪崩和缓存击穿

Redis缓存穿透、缓存雪崩 缓存雪崩,是指在某一个时间段,缓存集中过期失效。 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中...

architect刘源源
13分钟前
1
1
ArrayList源码分析

一、核心变量 // 序列化ID private static final long serialVersionUID = 8683452581122892189L; // 默认初始化容量 private static final int DEFAULT_CAPACITY = 10; ......

星爵22
22分钟前
1
0
++a a++的再次理解

public class Test { //// public static void main(String[] args) throws InterruptedException { // TODO Auto-generated method stub int a=1; int b=2; int c; int d; c=......

南桥北木
22分钟前
0
0
整合Spring和SpringMVC

1.Spring容器和SpringMVC容器的关系 Spring容器是一个父容器,SpringMVC容器是一个子容器,它继承自Spring容器。因此,在SpringMVC容器中,可以访问到Spring容器中定义的Bean,而在Spring容器...

薛小二
23分钟前
0
0
递归实现后序遍历二叉树

问题描述 从键盘接受输入先序序列,以二叉链表作为存储结构,建立二叉树(以先序来建立)并对其进行后序遍历,然后将遍历结果打印输出。要求采用递归方法实现。 解题思路 递归实现 程序实现 ...

niithub
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部