您的位置:首页 > 编程语言 > Java开发

SSH项目整合简介

2014-01-21 11:08 513 查看
我这里所用的是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 />

     密  码:<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;

 }

}

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

  

 所有JAR包如下图所示:

 

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

启动服务器进行测试:

http://localhost:8088/ssh2/

 

 

 

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

到此全部整合成功了

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息