SSH2整合

来源:百度文库 编辑:神马文学网 时间:2024/04/20 05:51:38

今天花了将近一天时间,看张冰老师的SSH2整合视频和自己手动整合SSH2,终于在晚上吃饭前整合成功了。下面把自己第一次整合SSH2的过程记录下(以简单的用户注册为示例):

我这里所用的是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如下:


 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">
 
 
   contextConfigLocation
   
    classpath:application-*.xml
   

 

 
 
  struts2
  
   org.apache.struts2.dispatcher.FilterDispatcher
  

 

 
  struts2
  /*
 

 
 
   
    org.springframework.web.context.ContextLoaderListener
   

 

 
 
   encoding
   org.springframework.web.filter.CharacterEncodingFilter
   
    encoding
    UTF-8
   

 

 
   encoding
   /*
 

 
    reg.jsp
 

src下struts.xml的最终代码如下:


    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
   
   

 
  ion name="reg" class="reg">
   /regSuc.jsp
   /regFail.jsp
  
ion>
 


在src下把hibernate相应的配置文件复制进来,hibernate.cfg.xml最终代码如下:


          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


 
  update
  true
  
 

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


   
            maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />
            maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="true"
        />
            maxElementsInMemory="1000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false"
        /> -->


把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最后代码为:

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">
   scope="prototype">
  
 

 
  
 


再建立一个事务控制的application-transaction.xml代码最终如下:

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">

   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  
   
    classpath:jdbc.properties
   

  

 

 
   class="org.apache.commons.dbcp.BasicDataSource">
     value="${jdbc.driverClassName}" />
  
  
  
 

 
   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  
     value="classpath:hibernate.cfg.xml" />
 

 
     advice-ref="txAdvice" />
 

 
  
   
   
   
   
   ly="true" />
  

 

   class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  
  


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

step4:建立相应的jsp页面

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

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



 
   
   
    SSH2用户注册
   
 
 
    
 
 
 

 
 
 
   

用户注册


   
ion="reg.action" method="post">
     用户名:user.username" />

     密  码:user.password">

     
   

 

注册成功显示页面regSuc.jsp代码如下:

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



 
   
   
    注册成功
   
 
 
    
 
 
 

 
 
 
    恭喜你注册成功了

 

注册失败regFail.jsp代码如下:

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



 
   
   
    注册失败
   
 
 
    
 
 
 

 
 
 
   对不起注册失败

 

在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


 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 
  
   
  

  
  
 


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;
 }
}

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

 

 所有JAR包如下图所示:

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

启动服务器进行测试:

http://localhost:8088/ssh2/

 

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

到此全部整合成功了