Struts2+spring2+hibernate3实例源码-java源码
### Struts2 + Spring2 + Hibernate3 整合实例源码分析 #### 一、概述 随着企业级应用的发展,为了提高开发效率和系统维护性,越来越多的项目开始采用MVC设计模式。其中,Struts2作为MVC框架中的佼佼者,在前端表现层起到了重要作用;Spring框架因其强大的依赖注入和面向切面编程能力而在整个系统架构中扮演核心角色;而Hibernate作为对象关系映射(ORM)工具,能够极大简化数据库操作。本文档将详细讲述如何将这三个流行的框架整合在一起,并通过一个简单的注册登录示例来展示其实现过程。 #### 二、技术栈介绍 - **Struts2**:一个开源的MVC框架,用于构建表现层。它支持多种插件,包括验证、转换、国际化等,使开发者能够快速构建复杂的应用程序。 - **Spring2**:一个轻量级的控制反转(IoC)和面向切面(AOP)容器,可以管理整个应用程序的生命周期,实现业务逻辑与底层服务的解耦。 - **Hibernate3**:一个全功能的对象关系映射框架,能够将Java对象映射到数据库表,并且提供丰富的查询API,大大简化了数据访问层的开发工作。 - **JDK6.0**:提供了运行Java程序的基本环境。 - **MyEclipse6.0**:集成开发环境,用于编写Java代码。 - **Tomcat5.5**:一个免费的Servlet和JSP容器,用于部署Web应用程序。 - **MySQL5.0**:一种关系型数据库管理系统,用于存储数据。 #### 三、准备工作 在整合之前,我们需要准备以下环境和技术栈: 1. **安装配置**:确保安装了JDK6.0、MyEclipse6.0、Tomcat5.5以及MySQL5.0,并且配置好环境变量和连接配置文件。 2. **搭建开发环境**:创建新的Web项目,并添加Struts2、Spring2和Hibernate3的相关库文件。 #### 四、数据库设计 为了演示整合流程,我们设计了一个简单的用户表`user`,包含字段`userid`、`username`、`password`和`email`。具体SQL脚本如下: ```sql CREATE TABLE `user` ( `userid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(16) NOT NULL, `email` varchar(30) NOT NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` #### 五、项目结构 项目结构如下所示: - com.firstssh - dao - UserDAO.java - model - User.java - service - UserService.java - web - LoginAction.java - RegistAction.java - src/main/webapp - WEB-INF - classes - jdbc.properties - hibernate.cfg.xml - struts.xml - struts.properties - web.xml - index.jsp - login.jsp - regist.jsp - success.jsp - error.jsp - lib - struts2.jar - spring-core-2.5.jar - hibernate-core-3.2.jar - mysql-connector-java-5.0.jar - ... #### 六、配置文件 1. **Struts 配置** - **struts.xml**:配置了两个Action,分别是登录和注册。 ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="user_curd" extends="struts-default"> <global-results> <result name="exception">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="exception"/> </global-exception-mappings> <action name="Login" class="LoginAction"> <result name="success">/success.jsp</result> <result name="input">/login.jsp</result> </action> <action name="Regist" class="RegistAction"> <result name="success">/success.jsp</result> <result name="input">/regist.jsp</result> </action> </package> </struts> ``` - **struts.properties**:配置了Struts2的运行参数。 ```properties struts.devMode=false struts.enable.DynamicMethodInvocation=true struts.i18n.reload=true struts.ui.theme=simple struts.locale=zh_CN struts.i18n.encoding=UTF-8 struts.objectFactory=spring struts.objectFactory.spring.autoWire=name struts.serve.static.browserCache=false struts.url.includeParams=none ``` 2. **Hibernate 配置** - **User.java**:实体类定义。 ```java package com.firstssh.model; public class User { // 属性定义 private int userid; private String username; private String password; private String email; // Getter和Setter方法 // ... } ``` - **User.hbm.xml**:Hibernate映射文件,用于定义对象和表之间的映射关系。 ```xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.firstssh.model.User" table="user"> <id name="userid" column="userid"> <generator class="native"/> </id> <property name="username" column="username"/> <property name="password" column="password"/> <property name="email" column="email"/> </class> </hibernate-mapping> ``` - **hibernate.cfg.xml**:Hibernate的核心配置文件,配置了数据库连接信息和映射文件路径。 ```xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库连接信息 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- 显示SQL语句 --> <property name="show_sql">true</property> <!-- 事务管理 --> <property name="current_session_context_class">thread</property> <!-- 二级缓存配置 --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- 映射文件位置 --> <mapping resource="com/firstssh/model/User.hbm.xml"/> </session-factory> </hibernate-configuration> ``` 3. **Spring 配置** - **applicationContext.xml**:Spring的核心配置文件,配置了Bean的声明周期管理和依赖注入。 ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 用户服务层 --> <bean id="userService" class="com.firstssh.service.UserService"> <property name="userDAO" ref="userDAO"/> </bean> <!-- 用户DAO层 --> <bean id="userDAO" class="com.firstssh.dao.UserDAO"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> </bean> <!-- Struts2 和 Spring 的集成 --> <bean id="struts2Config" class="org.springframework.web.struts.DelegatingRequestProcessor"> <property name="actionMapping" ref="struts2ActionMapping"/> </bean> <bean id="struts2ActionMapping" class="org.springframework.web.struts.DelegatingActionMapping"> <property name="configLocations"> <list> <value>classpath:struts.xml</value> </list> </property> </bean> </beans> ``` 4. **Web 配置** - **web.xml**:Web容器的配置文件,配置了Servlet和过滤器。 ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <!-- Struts2 过滤器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 默认首页 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> ``` #### 七、总结 通过上述步骤,我们成功地将Struts2、Spring2和Hibernate3三个框架整合到了一起,并实现了基本的注册登录功能。在这个过程中,我们不仅学习了各个框架的基本用法,还了解了它们之间的协作机制。Struts2负责处理用户请求和页面跳转,Spring作为核心容器负责Bean的管理和依赖注入,而Hibernate则负责数据持久化操作。这种架构方式不仅提高了代码的可读性和可维护性,也为日后的扩展留下了很大的空间。
剩余26页未读,继续阅读
- 马征不胖2012-07-23是doc的文档 ,看着费劲
- MarsVolcano2012-09-08纯文档的 如果有源码就更好了 哈哈哈哈
- 粉丝: 0
- 资源: 17
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip