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: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">
classpath:application-*.xml
org.apache.struts2.dispatcher.FilterDispatcher
org.springframework.web.context.ContextLoaderListener
src下struts.xml的最终代码如下:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
在src下把hibernate相应的配置文件复制进来,hibernate.cfg.xml最终代码如下:
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
把hibernate缓存的配置也复制进来ehcache.xml代码如下:
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
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最后代码为:
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">
再建立一个事务控制的application-transaction.xml代码最终如下:
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">
到此,所有的配置都整合好了,下面开始写代码
step4:建立相应的jsp页面
注册页面reg.jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
用户注册
注册成功显示页面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的act
package act
imp
imp
imp
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;
imp
public interface UserDao {
public boolean insertUser(User user);
}
在src/dao下新建一个impl包在下面新建一个UserDao的实现类UserDaoImpl.java
package dao.impl;
imp
imp
imp
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,里面也有我们插入的数据。
到此全部整合成功了