Struts1+Hibernate+Spring整合实例(一)

2024-02-08 07:58

本文主要是介绍Struts1+Hibernate+Spring整合实例(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      SSH博文写的也差不多了,这篇主要是通过做一个完整简单的小例子,来整合下前面学到的东西,顺便把后面写的两篇MavenAnt也加入进来,如果SSHMavenAnt这些东西不懂,可先看其他文章。项目用Maven来管理jar,我后面会把pom.xml贴出来,供大家参考,Maven之外的有:

Ant1.8.4

Xdoclet1.2.3;(个人喜欢1.0版本)

JDK1.6

Tomcat6

数据库:MySQL

首先新建一个web Projecttgb_ssh),右击项目选中Configure—Convert to Maven ProjectFinish!下面是pom.xml配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>tgb_ssh</groupId><artifactId>tgb_ssh</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><build><sourceDirectory>src</sourceDirectory><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>2.3</version><configuration><warSourceDirectory>WebContent</warSourceDirectory><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build><dependencies><dependency><groupId>org.hibernate</groupId><artifactId>hibernate</artifactId><version>3.2.7.ga</version></dependency><dependency><groupId>xdoclet</groupId><artifactId>xdoclet</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.0.0.RELEASE</version></dependency>        	<dependency><groupId>struts</groupId><artifactId>struts</artifactId><version>1.2.9</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>3.0.0.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.7.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.0.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-struts</artifactId><version>3.0.0.RELEASE</version></dependency></dependencies><repositories><repository><id>java</id><name>java official repository</name><url>http://download.java.net/maven/2/</url></repository></repositories>
</project>

下面是我整个项目包结构的一张截图,后面提及的类及配置文件请对号入座:


自底而上,先创建数据库:test_ssh,在domain包下创建一个实体类User.java

package com.tgb.domain;/*** 用户实体类* @author yuanfubiao*@hibernate.class table="t_user"**/
public class User {private int id;private String username;private String password;/*** @hibernate.id generator-class="native"*/	public int getId() {return id;}public void setId(int id) {this.id = id;}/*** @hibernate.property*/	public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}/*** @hibernate.property*/	public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}	
}

然后创建build.xml,配置好后就可以生成Hibernate的配置文件和映射文件了,build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="SSH构建脚本" default="生成Hibernate配置文件" basedir="."><property name="src.dir" value="${basedir}/src"/><property name="build.dir" value="${basedir}/bin"/><property name="webapp.dir" value="${basedir}/WebContent"/><property name="xdoclet.home" value="D:/Application/xdoclet-1.2.3"/><!-- 定义构建路径 --><path id="xdoclet.task.classpath"><fileset dir="${xdoclet.home}/lib"><include name="**/*.jar"/></fileset></path><taskdef name="hibernatedoclet"classname="xdoclet.modules.hibernate.HibernateDocletTask"classpathref="xdoclet.task.classpath"/>		<target name="生成Hibernate配置文件"><hibernatedoclet destdir="src"><fileset dir="${src.dir}/com/tgb/domain"><include name="**/*.java"/></fileset><hibernatecfgdestinationFile="hibernate.cfg.xml"dialect="org.hibernate.dialect.MySQLDialect"driver="com.mysql.jdbc.Driver"username="root"password="1"jdbcurl="jdbc:mysql://127.0.0.1/test_ssh"showsql="true"version="3.0"  hbm2ddl="update" xmlencoding="utf-8"/></hibernatedoclet></target><target name="生成hibernate映射文件"><hibernatedoclet destdir="src"><fileset dir="${src.dir}"><include name="com/tgb/domain/*.java"/></fileset><hibernate version="3.0"/></hibernatedoclet></target>
</project>

上面利用Ant+Xdoclet生成方式不多做介绍,可参看我后面的博客,生成的映射文件和配置文件如下:

hibernate.cfg.xml

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated file - Do not edit! --><hibernate-configuration><!-- a SessionFactory instance listed as /jndi/name --><session-factory><!-- properties --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><property name="use_outer_join">false</property><property name="connection.username">root</property><property name="connection.password">1</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://127.0.0.1/test_ssh</property><property name="hbm2ddl.auto">update</property><!-- mapping files --><mapping resource="com/tgb/domain/User.hbm.xml"/></session-factory></hibernate-configuration>

User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping
><classname="com.tgb.domain.User"table="t_user"><idname="id"column="id"type="int"><generator class="native"></generator></id><propertyname="username"type="java.lang.String"update="true"insert="true"column="username"/><propertyname="password"type="java.lang.String"update="true"insert="true"column="password"/></class></hibernate-mapping>

完成domain层之后,在dao包下分别创建一个接口UserDao.java和实现类UserDaoImpl.java,如下:

UserDao.java

package com.tgb.dao;
import com.tgb.domain.User;public interface UserDao {public void addUser(User user);public User findUserByName(String userName);
}

UserDaoImpl.java

package com.tgb.dao;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.tgb.domain.User;public class UserDaoImpl extends HibernateDaoSupport implements UserDao{@Overridepublic void addUser(User user) {getHibernateTemplate().save(user);}@Overridepublic User findUserByName(String userName) {return (User)getHibernateTemplate().load(User.class, userName);}}


接下来创建manager包下的接口UserManager.java和实现类UserManagerImpl.java,如下:

UserManager.java

package com.tgb.manager;import com.tgb.domain.User;public interface UserManager {public void addUser(User user);public User findUserByName(String userName);
}

UserManagerImpl.java

package com.tgb.manager;import com.tgb.dao.UserDao;
import com.tgb.domain.User;public class UserManagerImpl implements UserManager {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic void addUser(User user) {userDao.addUser(user);}@Overridepublic User findUserByName(String userName) {return userDao.findUserByName(userName);}}

Web包下分别创建UserActionUserActionForm两个类,如下:

UserActionForm.java

package com.tgb.web;import org.apache.struts.action.ActionForm;public class UserActionForm extends ActionForm {private String userName;private String password;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

UserAction.java

package com.tgb.web;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.tgb.domain.User;
import com.tgb.manager.UserManager;public class UserAction extends Action {private UserManager userManager;public void setUserManager(UserManager userManager) {this.userManager = userManager;}@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {UserActionForm uaf = (UserActionForm)form;User user = new User();user.setUsername(uaf.getUserName());user.setPassword(uaf.getPassword());userManager.addUser(user);return mapping.findForward("success");}}


Java类到此为止,这篇有点多,下篇文章继续。

 

这篇关于Struts1+Hibernate+Spring整合实例(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/690395

相关文章

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直