`
resembling
  • 浏览: 32128 次
  • 性别: 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,里面也有我们插入的数据。

到此全部整合成功了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics