`
resembling
  • 浏览: 32760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

我这里所用的是struts-2.0.11.2,hibernate3.3.1,spring2.5.5不包版本之间可能有些包不同。

step1:首先新建一个web project项目,项目名为ssh2。

step2:首先把ssh2整合的环境搭建好再来写代码。

把所需要的JAR包复制到WebRoot/WEB-INF/lib目录下

struts2所需要的包:

struts2-core-2.0.11.jar

xwork-2.0.4.jar

ognl-2.6.11.jar

freemarker-2.3.8.jar

commons-logging-1.0.4.jar

struts2-spring-plugin-2.0.11.2.jar(这个是struts2和spring整合的包)

hibernate3.3所需要的包:

hibernate3.jar(这个是hibernate的核心包)

以及hibernate3/lib目录下所有的包复制进来,lib目录下有三个目录required,optional,bytecode其中required是hibernate必须的包,防为防止漏包,我们把另二个目录下的所有包也复制进来

Spring2.5所需要的包:

spring-framework-2.5.5\dist目录下的spring.jar这个是spring的核心包

spring-framework-2.5.5\lib\aspectj\aspectjrt.jar

spring-framework-2.5.5\lib\aspectj\aspectjweaver.jar

spring-framework-2.5.5\lib\c3p0\c3p0-0.9.1.2.jar

spring-framework-2.5.5\lib\log4j\log4j-1.2.15.jar

spring-framework-2.5.5\lib\jakarta-commons\commons-dbcp.jar

spring-framework-2.5.5\lib\jakarta-commons\commons-pool.jar

spring-framework-2.5.5\lib\jakarta-commons\commons-collections.jar

spring-framework-2.5.5\lib\jakarta-commons\commons-logging.jar

spring-framework-2.5.5\lib\jakarta-commons\commons-collections.jar

 最后别忘了把mysql的数据库驱动包引进来,这里用的是MYSQL数据库

不知道写的时候有没有写漏,可能有一些包有重复,造成有冲突,解决方法,可以先把tomcat停止,然后在进到webapps/工程所有目录下的WEB-INF/lib下查看所有引入进来的JAR包,看到有复制的就删掉,只留下最新的。
step3:最后配置好的web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee "
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd ">
  <!-- 配置Spring -->
  <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
    classpath:application-*.xml
   </param-value>
  </context-param>
  <!-- 配置Struts2 -->
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
  <!-- 配置Spring的监听 -->
  <listener>
   <listener-class>
    org.springframework.web.context.ContextLoaderListener
   </listener-class>
  </listener>
  <!-- 配置Spring的过滤器,解决乱码问题 -->
  <filter>
   <filter-name>encoding</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>encoding</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>reg.jsp</welcome-file>
  </welcome-file-list>
</web-app>

src下struts.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="default" extends="struts-default">
  <action name="reg" class="reg">
   <result name="success">/regSuc.jsp</result>
   <result name="error">/regFail.jsp</result>
  </action>
 </package>
</struts>
在src下把hibernate相应的配置文件复制进来,hibernate.cfg.xml最终代码如下:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

 <session-factory>
  <property name="hbm2ddl.auto">update</property>
  <property name="show_sql">true</property>
  <mapping resource="vo/User.hbm.xml" />
 </session-factory>
</hibernate-configuration>

把hibernate缓存的配置也复制进来ehcache.xml代码如下:

<ehcache>
    <diskStore path="java.io.tmpdir"/>
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />
    <cache name="sampleCache1"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="true"
        />
    <cache name="sampleCache2"
        maxElementsInMemory="1000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false"
        /> -->

</ehcache>
把hibernate下的日志文件配置复制过来log4j.properties:

# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${petstore.root}/WEB-INF/petstore.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message

把spring的配置文件复制过来applicationContext.xml

这里我们把他改名为:applicaton-beans.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 "
 xmlns:aop="http://www.springframework.org/schema/aop "
 xmlns:tx="http://www.springframework.org/schema/tx "
 xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">
 <bean name="userDaoImpl" class="dao.impl.UserDaoImpl"
  scope="prototype">
  <property name="sessionFactory" ref="sf"></property>
 </bean>
 <bean name="reg" class="action.UserAction" scope="prototype">
  <property name="userDaoImpl" ref="userDaoImpl"></property>
 </bean>
</beans>
再建立一个事务控制的application-transaction.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 "
 xmlns:aop="http://www.springframework.org/schema/aop "
 xmlns:tx="http://www.springframework.org/schema/tx "
 xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">

 <bean id="propertyConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:jdbc.properties</value>
   </list>
  </property>
 </bean>

 <!-- 配置数据源 -->
 <bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
 </bean>

 <!-- 配置SessionFactory -->
 <bean id="sf"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation"
   value="classpath:hibernate.cfg.xml" />
 </bean>

 <aop:config>
  <aop:advisor pointcut="execution(* *..PetStoreFacade.*(..))"
   advice-ref="txAdvice" />
 </aop:config>
 <tx:advice id="txAdvice" transaction-manager="txManager">
  <tx:attributes>
   <tx:method name="insert*" />
   <tx:method name="update*" />
   <tx:method name="delete*" />
   <tx:method name="modify*" />
   <tx:method name="*" read-only="true" />
  </tx:attributes>
 </tx:advice>
 <bean id="txManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
  </bean>
</beans>

到此,所有的配置都整合好了,下面开始写代码

step4:建立相应的jsp页面

注册页面reg.jsp代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>SSH2用户注册</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    <h2>用户注册</h2>
    <form action="reg.action " method="post">
     用户名:<input type="text" name="user.username " /><br />
     密&nbsp;&nbsp;码:<input type="password" name="user.password "><br />
     <input type="submit" value="注册" /><input type="reset" value="重置" />
    </form>
  </body>
</html>
注册成功显示页面regSuc.jsp代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>注册成功</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    恭喜你注册成功了 <br>
  </body>
</html>
注册失败regFail.jsp代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>注册失败</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
   对不起注册失败 <br>
  </body>
</html>

在src下新建一个vo包,在vo包下新建一个User类,User.java代码如下:

package vo;

public class User {
 private int id;
 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;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 
}
在vo包下新建hibernate的映射文件User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd ">
<hibernate-mapping package="vo">
 <class name="User" table="t_user">
  <id name="id">
   <generator class="native"></generator>
  </id>
  <property name="username" column="username" not-null="true"/>
  <property name="password" column="password" not-null="true"/>
 </class>
</hibernate-mapping>


step5:编写struts2的action类,UserAction.java代码如下:

package action;

import vo.User;
import com.opensymphony.xwork2.ActionSupport;

import dao.UserDao;

public class UserAction extends ActionSupport {

 
 private static final long serialVersionUID = -8534550171421612227L;
 private User user;
 private UserDao userDaoImpl;
 public User getUser() {
  return user;
 }
 public void setUser(User user) {
  this.user = user;
 }
 public static long getSerialVersionUID() {
  return serialVersionUID;
 }
 @Override
 public String execute() throws Exception {
  boolean flag = false;
  flag = userDaoImpl.insertUser(user);
  if(flag){
   return SUCCESS;
  }else{
   return ERROR;
  }
 }
 public UserDao getUserDaoImpl() {
  return userDaoImpl;
 }
 public void setUserDaoImpl(UserDao userDaoImpl) {
  this.userDaoImpl = userDaoImpl;
 }
}
在src下新建一个dao包,在dao下新建一个UserDao.java

package dao;

import vo.User;

public interface UserDao {
 public boolean insertUser(User user);
}
在src/dao下新建一个impl包在下面新建一个UserDao的实现类UserDaoImpl.java

package dao.impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import vo.User;
import dao.UserDao;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

 public boolean insertUser(User user) {
  boolean b = false;
  this.getHibernateTemplate().save(user);
  b = true;
  return b;
 }
}

现在全部代码也写好了,下面看一下整个工程的目录结构:

 SSH2整合成功 - xiehx163 - xiehx163的博客

 所有JAR包如下图所示:

SSH2整合成功 - xiehx163 - xiehx163的博客

下面我们部署好测试一下,测试前得先把数据库建好,数据库名字和jdbc.properties里的jdbc.url里的数据库名字一样jdbc.url=jdbc:mysql://localhost:3306/ssh2,所以这里我们新建一个ssh2的数据库,

启动服务器进行测试:

http://localhost:8088/ssh2/

SSH2整合成功 - xiehx163 - xiehx163的博客

SSH2整合成功 - xiehx163 - xiehx163的博客

 

第一次SSH2整合 - xiehx163 - xiehx163的博客

我们进入到MYSQL,里面也有我们插入的数据。

到此全部整合成功了

分享到:
评论

相关推荐

    ssh2整合步骤

    SSH2整合指的是在Java开发中将Spring、Struts2和Hibernate三个开源框架集成在一起,以构建高效、灵活的企业级Web应用程序。在这个过程中,Spring提供依赖注入和事务管理,Struts2负责视图和控制层,而Hibernate则...

    SSH2整合框架

    SSH2整合框架是Java开发中常用的一种高效、稳定且可扩展的Web应用程序开发架构,它由Struts2、Spring和Hibernate三个开源框架组合而成。这三个框架各司其职,共同构建了一个强大的MVC(Model-View-Controller)设计...

    SSH2整合全注解实例

    SSH2整合全注解实例是基于Struts2、Spring和Hibernate这三个开源框架的集成应用,它们共同构建了一个强大的Web应用程序开发平台。SSH2是Java Web开发中的经典组合,提供了模型-视图-控制器(MVC)的设计模式,使得...

    ssh2整合最新版

    SSH2整合指的是Spring、Struts2和Hibernate这三个开源框架的集成,这在Java Web开发中是一种常见的技术栈。本文将详细介绍SSH2整合的最新版本,包括Spring 3.2、Hibernate 4.2和Struts2.3.4的特性以及它们如何协同...

    ssh2整合源码

    SSH2整合源码详解 SSH2是Spring、Struts2和Hibernate3三个开源框架的集成,通常用于构建大型的企业级Web应用。这三个框架各司其职,Spring负责管理应用程序的bean,提供AOP(面向切面编程)和IoC(控制反转);...

    ssh2整合好的架子

    SSH2整合指的是在Java开发中,使用Spring、Struts2和Hibernate这三大开源框架进行集成,构建一个完整的Web应用程序。这个“ssh2整合好的架子”应该是提供了一个预先配置好的项目结构,开发者可以直接在这个基础上...

    SSH2整合 需要的jar包

    SSH2整合是Java开发中常见的一个技术框架,它是由Struts2、Spring和Hibernate三个开源框架组成的集成解决方案。这三个框架分别负责MVC模式中的表现层、业务层和数据持久层,通过合理的组合,可以构建出高效、灵活的...

    ssh2整合实现CRUD

    SSH2整合实现CRUD是指在Java Web开发中,将Struts2、Spring和Hibernate这三个开源框架集成起来,用于实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)等基本数据操作。SSH2是Struts2、Spring和...

    SSH2 整合jar包

    在Java开发中,SSH2整合通常指的是使用JSch库来实现SSH2的功能,例如远程文件操作、SFTP(Secure File Transfer Protocol)传输、端口转发等。JSch是一个纯Java实现的SSH2库,它允许Java应用程序与支持SSH2的服务器...

    SSH2整合demo

    SSH2整合指的是在Java开发中将Struts2、Spring和Hibernate三个开源框架集成在一起,用于构建高效、可扩展的企业级Web应用。这个"SSH2整合demo"是一个针对初学者的示例项目,可以帮助他们理解如何将这三个框架无缝...

    SSH2整合jfreechart

    SSH2整合jfreechart是Java开发中的一个常见实践,它涉及到三个主要的开源框架:Struts2、Spring2.5和Hibernate3.2,以及一个用于数据可视化的库——JFreeChart。这些技术的整合旨在提供一个高效、灵活且可扩展的企业...

    ssh1 ssh2 整合登录代码及说明

    在提供的压缩包中,`ssh1与ssh2整合说明.doc`很可能是关于整合步骤和配置细节的文档,而`ssh`和`ssh1`可能是项目的源代码或者示例工程,包含了具体实现的细节。 学习和理解SSH1和SSH2的整合,不仅可以提升对MVC框架...

    ssh2整合代码

    在IT行业中,SSH2整合通常指的是将Spring、Struts2和Hibernate这三大开源框架集成到一个项目中,以构建高效、稳定且安全的企业级Web应用。这个过程涉及到多个层次的技术融合,包括前端展示、业务逻辑处理和数据访问...

    javaSSH2整合

    Java SSH2 整合主要指的是在Java应用中集成Secure Shell (SSH) v2协议,用于实现远程系统管理、文件传输等功能。SSH2提供了一种安全的网络通信方式,通过加密技术确保数据传输的安全性。在Java中,通常使用JSch库来...

    SSH2整合说明文档

    SSH2整合指的是将Struts2、Spring和Hibernate这三个开源框架集成在一起,以便构建高效、松耦合的企业级Java Web应用程序。SSH2整合是Java开发中常见的技术栈,它提供了MVC(模型-视图-控制器)架构、依赖注入以及...

    ssh2整合框架

    SSH2整合框架指的是在Java开发中,将Spring、Struts2和Hibernate这三大开源框架进行集成,以构建高效、稳定的企业级应用系统。这个框架组合提供了模型-视图-控制器(MVC)的设计模式,数据库操作,以及业务逻辑管理...

    SSH2整合開發

    **SSH2整合开发详解** SSH(Secure SHell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他网络服务。SSH2是SSH协议的第二个主要版本,提供了更强大的加密和认证机制,以及对多种操作系统的广泛...

Global site tag (gtag.js) - Google Analytics