SSH配置详细步骤及异常处理
该文章详细介绍了SSH的配置步骤与工程代码。
配置步骤见:http://blog.youkuaiyun.com/sipsir/archive/2009/10/23/4721526.aspx
代码下载:http://sipsir.download.youkuaiyun.com/
本文word格式:http://download.youkuaiyun.com/source/1764763
1 环境介绍
Jdk:1.5s
服务器:tomcat5.5
开发工具:myeclipse 6.5 ga
数据库工具:oracle 10g(确定有class12.jar或带有oracle驱动的jar包)
开发技术:Spring2.0,struts1.3,hibernate3.1,jsp
好了,进行SSH的开发。
2 新建web project
新建web项目(使用j2ee 5.0),项目名称为guestbook2,如图:
(图一)
第二步:为项目创建一个文件夹lib(用来将来存放相应的jar包,在添加相应的SSH支持后,要把lib里面的jar通过configure build-path—add jar的方式将其加入),
--可以采用系统默认的lib库位置,目录为WebRoot/WEB-INF/lib(Add by Michael)
如图:
(图二)
3 配置MyEclipse数据库(Add by Michael)
打开Hibernate视图
new一个
配置数据库,其中要手动指定Class12.jar的目录,如下图
4 添加hibernate支持
第1步:为项目添加hibernate 支持,如图:
(图三)
如下图,我们添加hibernate3.1的核心库而且采用:copy checked library jars to project folder and add to build-path 的方式把包添加至我们刚刚新建的lib文件夹处。完成后,点击”next”.
hibe
接着,他会询问是否创建hibernate的配置文件:hibernate.cfg.xml,我们不需要发动,直接点”next”。
我们需要配置项目中要应用的数据库的配置信息:
在上图中,我使用了名为DB Driver 为Linkoracle10g的连接方式(可使用myeclipse的myeclipse database explorer方式来创建与oracle10g的连接),相应地,myeclipse会使项目具有与oracle数据库连接的能力了。
接着点”next”,会看见如下图:
默认是挑选了“create SessionFactory class”的,在这里,它想为我们创建一个sessionfactory的类,但我们不创建sessionfactory,因为我将来使用spring来完成这步操作,使用spring ,可以帮助我们可以生成一个能获得hibernate session对象的一个类。
点击”finish”完成的hibernate的支持。
5 添加Spring支持
第1步:为项目添加Spring 支持,如图:
在这里,我使用spring2.0的支持,把相应的四个选项选中:
第四个为:
--选择了spring2.0,如何选择sping2.5的jar?实际情况是我没有选择spring2.5也能完成这个测试(Add by Michael)
而且,我们采用:copy checked library jars to project folder and add to build-path 的方式把包添加至我们刚刚新建的lib文件夹处。完成后,如图:
完成后,点击”next”.会看到如下图:(Myeclipse会为我们创建spring的配置文件,我们确定创建)
点击”next”.进入下一步。这时会看到,如图:
在上图中,他会创建一个能获得hibernate session 对象的一个sessionFactory 类型的对象,他被设置在了applicationContext.xml文件中。
点击“finish”,完成Spring 的支持了。
备注:打开applicationContext.xml文件,源码如下: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"> </property> </bean> </beans> |
在这里,我们发现设置了一个id为sessionFactory类型的一个对象,他的类型是 org.springframework.orm.hibernate3.LocalSessionFactoryBean,当中还有属性configLocation,value="classpath:hibernate.cfg.xml,这些配置信息呢。实际上可以这样理解:
设定了一个id为sessionFactory 类型的对象,它的类型是:org.springframework.orm.hibernate3.LocalSessionFactoryBean的,通过这个对象就能获取hibernate 的session 对象,进行完成对数据的添加、删除、修改的操作。也就是说这个对象是spring 帮我们提供的一个支持.
6 开发持久层的这些类和接口
6.1 oracle表SQL
增加了hibernate ,spring的支持后,我们就可以开发持久层的这些类和接口了。首先,我们的项目要用到了guestbook、admin两个表,所以要使用oracle来创建这两个表,表的创建的sql提供给大家,如下所示:
create table ADMIN
(
ID NUMBER not null,
USERNAME VARCHAR2(20),
PASSWORD VARCHAR2(20)
);
alter table ADMIN add constraint ADMIN_PK primary key (ID);
create table GUESTBOOK
(
ID NUMBER not null,
NAME VARCHAR2(40),
EMAIL VARCHAR2(60),
URL VARCHAR2(60),
TITLE VARCHAR2(200),
CONTENT VARCHAR2(2000),
TIME VARCHAR2(40)
);
alter table GUESTBOOK add constraint GBOOK_PK primary key (ID);
insert into ADMIN (ID, USERNAME, PASSWORD)
values (1, 'liuwei', '123456');
commit;
insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)
values (100026, '刘伟', 'liuwei8809@163.com', 'http://www.v512.com', '欢迎大家观看我的视频', '感谢大家对我们的支持,请持续关注我们的网站。更多内容,更多视频,尽在www.v512.com。', '2007-16-14 02:12:51');
insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)
values (1000072, '开发工具与软件', null, 'http://news.sina.com.cn', '我们爱大家', '开发工具与软件开发工具与软件开发工具与软件开发工具与软件,我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家。', '2007-42-20 01:12:17');
insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)
values (1000074, '开发工具与软件', 'liuwei@v512.com', 'http://news.sina.com.cn', '我们爱大家', '开发工具与软件开发工具与软件开发工具与软件开发工具与软件,我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家。', '2007-50-20 02:12:52');
commit;
而且还应该在oracle10g中创建名为gb_seq的序列,sql语句为:(有问题,在哪里创建sequence的?)
我只用了一个创建sequence的SQL,如下:
create sequence GB_SEQ
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;
以下是原作者关于sequence的sql,我都没有使用因为不知道在哪里create。
-- Alter sequence
alter sequence gb_seq
nominvalue
nomaxvalue
nocache;
-- Modify the last number
alter sequence gb_seq increment by -20 nocache;
select gb_seq.nextval from dual;
alter sequence gb_seq increment by 1 nocache;
declare
LastValue integer;
begin
loop
select gb_seq.currval into LastValue from dual;
exit when LastValue >= 100000 - 1;
select gb_seq.nextval into LastValue from dual;
end loop;
end;
/
alter sequence gb_seq increment by 1 nocache;
(备注:在创建数据库的表时,我是使用了PLSQLDeveloper工具来创建的,这样更方便快捷些,要使用这个工具,请自行下载。)
好了,接着做下去。
6.2 生成Admin,guestbook表model
首先,我们打开myeclipse database explorer 视图,在这里,我们进行逆向工程的操作,如图:
这样就打开了逆向工程的操作的界面了。
接着,我们会看到如下的操作界面,如图:
使用如上图的设置,com.v512.guestbook.model存放的是映射文件和相应的实体类(POJO),再点击”next”.
这时,会出现操作界面,如下图:
在这一步,他设置了主键的生成方式,我使用了native,其它不用改变。最后点击”finish”.
同理,添加guestbook表。(add by Michael)
再查看目录结构,会显示如下的目录结构,如图:
里面针对两个表生成了相应的.hbm.xml的映射文件和相应的两个类。查看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="connection.username">scott</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:ora10g
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">
Linkoracle10g
</property>
<property name="connection.password">tiger</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<mapping resource="com/v512/guestbook/model/Admin.hbm.xml" />
<mapping resource="com/v512/guestbook/model/Guestbook.hbm.xml" />
</session-factory>
</hibernate-configuration>
执行上面的操作后,接着往下做。呵呵。
6.3 数据库接口
6.3.1 GuestbookDao接口
我们为项目新建一个包,包名称为:com.v512.guestbook.dao,它用来存放对底层数据库进行的操作的一系列接口。接着在包中新建一个接口,名为:GuestbookDao,如图:
在接口中,我们定义了几个方法,如下:
package com.v512.guestbook.dao;
import java.util.*;
import com.v512.guestbook.model.Guestbook;
//DAO指的是能对底层数据训进行怎样的操作,通常是增删改查的操作
public interface GuestbookDao {
public void save(Guestbook g);
public void delete(Long id);
public List getGuestbooks();
public Guestbook getGuestbook(Long id);
}
6.3.2 GuestbookDao接口的实现类GuestbookDaoHibernate
紧接着我们创建一个包,包名为:com.v512.guestbook.dao.hibernate,这个包存放的是实现了上面定义的dao接口的类,而这些类当中都是通过使用Hibernate 的技术来执行相应的操作的。
在该包中,我创建了一个类,类的名称为:GuestbookDaoHibernate,它要实现上面定义的GuestbookDao接口,并且继承于HibernateDaoSupport.类的完整的源码是:
package com.v51