SSH(Struts1.3+Spring2.0+Hibernate3.1)架构简要配置文档
目录
1. 运行环境 2
2. 配置过程 2
2.1 新建工程 2
2.2 添加Struts框架支持 3
(1) 添加Struts包及设置路径 3
(2) 创建ActionForm类和对应的JSP文件 4
(3) 创建Action类 5
(4) 创建index.jsp 6
(5) 创建Forword类 6
(6) 修改LoginAction.java文件 7
(7) 修改login.jsp文件 7
(8) 测试 7
2.3 Spring框架支持 8
(1) 添加Spring框架支持 8
(2) 配置Struts-config.xml文件 10
(3) 修改Spring的配置文件applicationContext.xml 10
(4) 测试 10
2.4 Hibernate框架支持 11
1) 创建SQL Server数据库和表 11
2) 配置数据源(DB Driver) 11
3) 添加Hibernate框架支持 12
4) 创建对象关系映射(ORM)的相关文件 15
3.准备整合测试 18
3.1 修改LoginAction.java文件 18
3.2 修改Spring的配置文件applicationContext.xml 18
3.3 测试 19
4. 关于整合的一些问题 19
SSH(Struts1.3+Spring2.0+Hibernate3.1)架构简要配置文档
1. 运行环境
配置工具:MyEclipse 6.0.1 GA、SQL Server2000
配置环境:Tomcat 5.5及其以上版本、SQL Server2000
2. 配置过程
新建工程
(1) 打开MyEclipse6.0.1,依次点击“File - New - Project”,在弹出的对话框中选择“Web Project”。点击“Next”。
(2) 在弹出的“New Web Project”对话框中,“Project Name”填写项目名称,这里假设为“beiyan”,其他选项默认即可。接着在“J2EE Specification Level”选择J2EE的版本,这里选择Java EE 5.0。点击“Finish”,完成项目创建。
添加Struts框架支持
(1) 添加Struts包及设置路径
选中“beiyan”项目,在菜单栏依次点击“MyEclipse – Project Capabilities – Add Struts Capabilities”,或者在刚刚创建的项目名称上依次单击“右键 – MyEclipse – Add Struts Capabilities”,弹出“Add Struts Capabilities”对话框,添加Struts的框架支持。这里修改两项内容:一个是Struts的版本,在“Struts specification”栏选择“Strusts 1.3”;在“Base package for new classes”栏,修改包名为“com.beiyan.struts”,其他项选择默认即可。点击“Finish”完成。
(2) 创建ActionForm类和对应的JSP文件
点击beiyan项目,依次打开目录,找到Strusts-config.xml文件,并打开。切换到Design模式,在空白处依次单击“右键 – New – Form”,弹出创建ActionForm类的“New Form”对话框,这里我们假设创建一个登录Login的FormBean,在“Use Case”处填写“Login”, “superclass”选择“org.apache.struts.action.ActionForm”。其他选择默认。
接下来在Form Properties选项卡下添加两个字段:username和password。
添加完成之后,点击JSP选项卡,选中“Create JSP form?”,在“New JSP Path”中输入登录login.jsp的路径,这里取项目根目录:“/login.jsp”。点击“Finish”,完成LoginForm的创建。
(3) 创建Action类
回到Struts-config.xml配置文件Design模式,点击“右键 - New - Action”,弹出New Action对话框,创建LoginAction 。Use case处填写一个用例名称:Login,然后在Optional Details选项卡选择Form项,单击Name的“Browse”查找选择与之对应的ActionForm:LoginForm,然后再点击Input Source的“Browse”查找与之对应的输入页面:login.jsp,其他项默认不变,完成后单击“Finish”,创建LoginAction。
(4) 创建index.jsp
如果没有,创建 index.jsp 文件,并添加一个指向 login.jsp 的链接:
Login。
(5) 创建Forword类
回到Struts-config.xml配置文件Design模式,点击“右键 - New – Forword”,弹出New Forword对话框,创建indexForword 。在Name项输入该Forward的名字:indexForward,在Path项点击“Browse”选择该forward对应的jsp文件:index.jsp,其他项保持默认不变,单击“Finish”完成。
(6) 修改LoginAction.java文件
修改LoginAction类的execute方法,如下蓝色部分代码所示:
public ActionForward execute(ActionMapping mapping,
ActionForm form,HttpServletRequest request,
HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String username=loginForm.getUsername();
String password=loginForm.getPassword();
if(username.equals("test")&&password.equals("test")){
return mapping.findForward("indexForward");
}
return mapping.getInputForward();
}
(7) 修改login.jsp文件
将login.jsp文件中的
修改为:
(8) 测试
安装完成Tomcat5.5.25,并在MyEclipse中配置好,然后点击菜单栏“Run – Run ”在弹出的对话框中选择“MyEclipse Server Application”运行方式,点击“OK”,在弹出的Server Selection对话框中选择已配置完成的Tomcat5.x,单击“OK”启动服务器。
在Web Browser地址栏打开项目,点击index.jsp页面“Login”链接,跳转至login.jsp。在login.jsp页面输入“test/test”,应会登录成功,跳转至index.jsp页面;输入“test/123”,应保持在login.jsp页面。若测试成功,则Struts运行正常。
Spring框架支持
(1) 添加Spring框架支持
选中“beiyan”项目,在菜单栏依次点击“MyEclipse – Project Capabilities – Add Spring Capabilities…”,或者在刚刚创建的项目名称上依次单击“右键 – MyEclipse – Add Spring Capabilities…”,弹出“Add Spring Capabilities”对话框,添加Spring的框架支持。
“Spring Version”选择:Sring 2
“Select the libraries to add to the buildpath”-“show”选择:MyEclipse Libraries;
库文件选择以下5个:Spring 2.0 AOP Libraries;
Spring 2.0 Core Libraries;
Spring 2.0 Persistence Core Libraries;
Spring 2.0 Persistence JDBC Libraries;
Spring 2.0 Web Libraries;
“Jar Library Installation”选择:Copy checked Library contents to project folder…
“Library Folder”选择“/WebRoot/WEB-INF/lib”,方便以后部署项目。其他选择默认即可。
完成后单击“Next”进入下一步设置。在弹出的对话框中设置Spring的配置文件,这里选择New(新建),“Folder”选择“WebRoot/WEB-INF”目录(以便和Struts配置文件一起管理)。文件名称为默认的“applicationContext.xml”。点击“Finish”完成。
(2) 配置Struts-config.xml文件
打开Struts-config.xml文件,切换到“Source”模式,在 标签后面添加 Spring 插件:
value="/WEB-INF/applicationContext.xml" />
修改LoginAction的配置,如下蓝色部分所示:
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" />
这里将使用 spring 的代理器 DelegatingActionProxy 来对 Action 进行控制。
(3) 修改Spring的配置文件applicationContext.xml
打开Spring的配置文件applicationContext.xml,修改如下蓝色部分所示:
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">
class="com.beiyan.struts.action.LoginAction">
蓝色字体部分是关于接受和处理 Action 控制权的配置内容,“com. beiyan.struts.action.LoginAction” 即为原 struts 里的配置。
(4) 测试
同上一次测试。测试成功证明 Spring 运行正常。
Hibernate框架支持
1) 创建SQL Server数据库和表
打开SQL Server企业管理器,创建一个名为“beiyannews”的数据库。然后创建一张用户表,创建表的SQL语句如下所示:
CREATE TABLE user_table (
ID int NOT NULL identity,
USERNAME varchar(45) NOT NULL default '',
PASSWORD varchar(45) NOT NULL default '',
PRIMARY KEY (ID)
)
再添加一条记录:
INSERT INTO user_table (USERNAME,PASSWORD) VALUES ('test','test')
2) 配置数据源(DB Driver)
在MyEclipse菜单栏依次点击“Window – Perspective – MyEclipse Database Explorer”,打开MyEclipse数据库资源管理器,在DB Browser空白处右键单击“New”,弹出DataBase Driver对话框,这里我们使用SQL Server的jtds1.2驱动。依次做以下设置:
Driver template:选择“Microsoft SQL Server(jTDS Driver)”;
Driver name: 填写你要创建的数据库驱动的名字,这里假定为“SQLServer”。
Connection URL:创建连接的URL,修改为(假设数据库在本机上运行):
jdbc:jtds:sqlserver://127.0.0.1:1433/beiyannews或者
jdbc:jtds:sqlserver://localhost:1433/beiyannews
User name:数据库的用户名,这里为“sa”
Password: 数据库的访问密码,这里为空。
Driver JARs – Add JARs:查找并选定所需要的数据库驱动文件:jtds-1.2.jar。
Driver classname:选择“net.sourceforge.jtds.jdbc.Driver”。
然后点击“Test Driver”测试数据库驱动能否正常连接。最后选择Save password保存密码。
点击“Finish”完成数据库驱动的创建。
在DB Browser中就可以看到刚刚创建的数据库驱动SQLServer了,右键单击SQLServer – Open Connection…打开数据库连接,这时就可以查看到当前连接到的数据库的详细信息了。
3)添加Hibernate框架支持
点击MyEclipse右上角的 返回到 ,选中“beiyan”项目,在菜单栏依次点击“MyEclipse – Project Capabilities – Add Hibernate Capabilities”,或者在刚刚创建的项目名称上依次单击“右键 – MyEclipse – Add Hibernate Capabilities”,弹出“Add Hibernate Capabilities”对话框,添加Hibernate的框架支持。这里我们使用Hibernate3.1的版本,库文件仅选择 Hibernate 3.1 Core Libraries。按下图所示完成设置并点击“Next”进入下一步设置:
在这一步选择是使用Hibernate自身的配置文件还是Spring提供的配置文件来进行Hibernate的配置。这里我们选择Hibernate自身的配置文件,如下图所示,完成之后单击“Next”:
接下来创建Hibernate的配置文件hibernate.cfg.xml,我们采用默认设置,将其置于src目录下,在“SessionFactory id”项输入“sessionFactory”,为其指定一个session工厂类。
设置完成后单击“Next”,进入Hibernate数据库连接的配置。具体如下所述:
DataSource:选择Use JDBC Driver;DB Driver: 选择刚刚配置好的驱动SQLServer,并勾选“Copy DB Driver jar(s) to project…”,将数据库驱动文件复制到项目库文件中。其他选择默认即可。 Dialect:数据库方言选择“Microsoft SQL Server”。
设置完成之后点击“Next”进入Hibernate包设置,点击“Java package”的“Browse”或者“New”选定一个存放Hibernate文件的包,这里我们点击“New”新建一个“com.beiyan.model”包,其他项默认不变,点击“Finish”完成Hibernate的配置。
4) 创建对象关系映射(ORM)的相关文件
选定“beiyan”项目,在菜单栏依次点击“Window – Perspective – MyEclipse Database Explorer”,进入DB Browser窗口。打开SQLServer数据库驱动,找到需要添加映射的数据库(beiyannews),选定user_table表,然后在表上右键单击“Hibernate Reverse Engineering…”
在弹出的对话框进行如下设置:
Java src folder:点击“Browse”选择“/beiyan/src”
Java package :点击“Browse”选择“com.beiyan.model”
其他设置如下图所示:
单击“Next”,跳至 设置页面,这一步不做修改,继续点击“Next”跳至下一页面,单击 ,下面对该页面的一些属性进行说明:
Class name:该数据表对应的javaBean的名字,这里我们将user_table表对应的的JavaBean命名为User,在此输入com.beiyan.model.User;若不填写则默认为数据表名的第一个字母大写,若遇到下划线,省略下划线,下划线后的第一个字母大些,即默认的javaBean名称为UserTable。
ID Generator:表的主键是否采用自增长类型,若是,则根据数据库的类型选择自增长的标识符。SQL Server对应的自增长类型标识符为:identity
Include referenced tables(A->B)复选框:是否添加A->B表的外键约束关联
Include referenced tables(A->B)复选框:是否添加B->A表的外键约束关联
配置完成之后点击“Finish”完成。
完成之后回到MyEclipse Java Enterprise,在本项目下的src/com.beiyan.model包下可以看到以下创建的POJO类(User.java)及其对应的User.hbm.xml配置文件。
3.准备整合测试
3.1 修改LoginAction.java文件
在LoginAction中加入下列代码(如蓝色部分所示)
private UserDAO userDao; //初始化一个数据库访问对象
//userDao的set/get方法
public UserDAO getUserDao() {
return userDao;
}
public void setUserDao(UserDAO userDao) {
this.userDao = userDao;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String username=loginForm.getUsername();
String password=loginForm.getPassword();
//调用userDao的findAll方法从数据库检索记录,检索的结果返回给一个List,判
//断当前的List大小,若不为0,跳至index页面,并打印login.jsp的输入
if(userDao.findAll().size()!=0){
System.out.println("您输入的用户名是:"+username);
System.out.println("您输入的密码是:"+password);
return mapping.findForward("indexForward");
}
//否则,保持在输入页面
return mapping.getInputForward();
3.2 修改Spring的配置文件applicationContext.xml
修改在2.3节配置的applicationContext.xml中配置的Bean如下(蓝色部分所示):
class="com.beiyan.struts.action.LoginAction">
与DAO文件的关联-->
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
value="classpath:hibernate.cfg.xml">
3.3 测试
重新启动服务,方法同前一次测试,随意输入之后在后台会打印出如下信息:
4. 关于整合的一些问题
(1)本人用struts1.3 + spring2.0 + hibernate3.1 + myecplise6.0开发, 三个框架的配置文件经仔细检查后确定没有错误, struts+spring单独测试好使,spring+hibernate单独测试也好使,但三个合到一起 struts就出现了问题:action servlet is not availble。 据说框架的包之间有冲突。请问该如何解决?
解决方法:这是因为在整合时包发生了冲突。删除lib里的asm2.2.*.jar文件。OK
(2)调试出现如下错误:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;) at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
解决方法:Spring 和 Hibernate 共用的一些 jar 文件发生了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启 Tomcat.
asm-2.2.3.jar,asm.jar, asm-attrs.jar,asm-commons-2.2.3.jar,asm-util-2.2.3.jar
(3)SSH整合开发有哪些优缺点?
SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层)
Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
Hibernate: Hibernate是一个持久层框架,它只负责与关系数据库的操作。
Spring: Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。
① Web分层架构中业务层为什么都选择Spring?
Service层需要处理业务逻辑和交叉业务逻辑,处理事务,日志,安全等,而这些与Spring的IoC,AOP等不谋而合。
② Web分层架构中,对于各层技术的采用应该遵循一个怎样的标准?
1、选择发展成熟的技术: A、经过了项目实践证实可行性良好 B、文档完善 C、技术一直处于可持续发展更新 。
2、Web应用中对于技术的选择有赖于开发人员的技术掌握情况。