手把手教你SSH框架的整合与开发.docx
- 文档编号:3470616
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:37
- 大小:1.29MB
手把手教你SSH框架的整合与开发.docx
《手把手教你SSH框架的整合与开发.docx》由会员分享,可在线阅读,更多相关《手把手教你SSH框架的整合与开发.docx(37页珍藏版)》请在冰豆网上搜索。
手把手教你SSH框架的整合与开发
手把手教你SSH框架的整合与开发
开发环境:
Struts2.1+Spring3.0+Hibernate3.3+SQLServer2005
整合步骤与原理分析:
一、新建工程:
SSHLogin
Web工程创建完毕后,从开发环境中,我们可以看到MyEclipse为我们创建了
Ø一个JSP主页面——index.jsp
Ø一个Web工程配置文件——web.xml
打开配置文件web.xml,可以发现:
它只定义了一个欢迎页——index.jsp。
二、增加Struts功能支持
如图,选中工程,右单击添加Struts功能支持。
随后,在弹出的窗体上选择struts2.1,选择Struts2核心库(注意:
Struts2SpringLibraries是整合Spring所必须的,但是,现阶段如果不使用Spring,就不要添加这个库,否则,测试可能失败)。
单击“Finish”,完成Struts功能添加。
注意:
添加Struts功能支持时,不要启动Tomcat服务器,以库免添加失败。
另外,Struts2的默认后缀名为*.action,可以根据个人爱好修改。
完成Struts2组件添加后,可以发现:
除了新增加了一个Struts2的配置文件struts.xml外,Struts2在web.xml配置文件中还添加了自己的控制器及HTTP请求的过滤器映射,内容如下:
——定义控制器名称及实现的类文件——>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
——定义过滤器映射——>
完成上述配置修改后,以后发送给该工程的HTTP请求,如果是以*.action结尾,则请求会转发给控制器StrutsPrepareAndExecuteFilter处理。
Struts2的控制器会读取配置文件struts.xml,根据这个文件的定义,选择相应的action,决定页面跳转。
打开配置文件struts.xml,可以发现:
初次添加Struts2支持后,该文件是空的,这需要我们自己添加。
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http:
//struts.apache.org/dtds/struts-2.1.dtd">
三、完成基于Struts2的编程测试
1)表示层的设计与实现
本工程表示层的页面有三个。
主页面(index.jsp)提示用户输入用户名、密码,进行登录。
登录成功,系统显示Success.jsp;登录失败,系统显示Failure.jsp。
如图,创建3个JSP页面,注意页面编码采用:
UTF-8,页面代码如下:
①index.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
用户名:
密码:
注意:
标签中的部分是我们新添加的。在MyEclipse开发环境下,点击Preview,看看页面效果,登录页面利用Html标签为我们显示了2个输入框、一个登录按钮。
②Success.jsp
登录成功!
③Failure.jsp
登录失败!
完成上述工作后,部署一下工程,启动Tomcat服务器,在浏览器中输入:
http:
//localhost:
8080/SSHLogin/
测试一个主页效果,正常情况下,会显示登录画面。
为什么会这样呢?
打开web.xml文件,可以发现:
这个配置文件定义了一个欢迎页:
因此,当我们只输入工程名,不输入JSP页面文件名的时候,Tomcat服务器会在webapps目录下寻找SSHLogin文件夹。
找到后,按照欢迎页面的配置,打开index.jsp文件,显示登录画面。
接下来,当用户输入了用户名、密码,单击“登录”按钮后,index.jsp的form表单会向浏览器发送一个如下的Http请求:
http:
//localhost:
8080/SSHLogin/login.action
你会发现,浏览器会显示404错误,这需要我们进一步编写Action类,配置Struts.xml文件。
2)编写一个Action类:
LoginAction,处理超链接请求:
login.action
如图,选择工程,创建一个java类。
类名:
LoginAction
包名:
com
基类名:
com.opensymphony.xwork2.ActionSupport
注意:
很多人喜欢取诸如com.action此类的多级包名,我试过不行,别问为什么。
这里,为了测试Struts2的基本功能,我们先把LoginAction.java的功能写的简单一些,添加如下代码:
//LoginAction.java
packagecom.action;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginActionextendsActionSupport{
publicStringexecute()throwsException{
System.out.println("点击登录执行该方法");
return"SUCCESS";
}
}
3)修改Struts的配置文件
打开struts.xml文件,添加如下配置行:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http:
//struts.apache.org/dtds/struts-2.1.dtd">
这里,包名也是我们创建Web工程时的工程名,所有的Action类都存放在这个文件夹下,部署的时候,这个工程被部署在webapps\SSHLogin目录下。
当用户输入了用户名、密码,单击“登录”按钮后,index.jsp的form表单会向浏览器发送一个如下的Http请求:
http:
//localhost:
8080/SSHLogin/login.action
由于这个请求是以.action结尾的,因此根据web.xml的配置,这个请求会转发给Struts2控制器处理。
根据文件struts.xml的配置,当用户的请求名=login时,控制器会调用com.action.LoginAction.java的execute()方法处理请求。
在LoginAction.java中,execute()方法会打印一个简单的信息,然后返回一个字符串:
SUCCESS。
这时,根据struts.xml的配置,当execute返回"SUCCESS"时,就会显示:
登录成功的页面。
因此,正常情况下,当用户点击“登录”,系统会显示登录成功。
重新部署,测试一下看看效果。
四、整合Struts2与Spring
1)如图,选择工程,右单击添加Spring支持。
2)在弹出的对话框,选择:
Spring3.0CoreLib、Spring3.0WebLib两个库文件。
点击“finish”完成Spring库的添加。
3)打开配置文件Web.xml,添加如下配置行。
--Spring配置和监听start-->
--end-->
4)修改源程序
在没有添加Spring支持前,用户如果发送
http:
//localhost:
8080/SSHLogin/login.action
根据struts.xml的配置,struts2将调用com包中的LoginAction.java处理用户的请求。
添加了Spring框架后,当用户发送请求,struts2框架仍然会调用LoginAction.java的execute()方法处理用户的请求。
不同的是,这个时候,不是struts直接调用LoginAction.java的execute()方法,而是由Spring框架以Bean的方式来提供LoginAction.java这个类。
为此,需要进行如下修改:
①打开Spring配置文件applicationContext.xml,添加如下Bean的定义。
②打开配置文件struts.xml,修改action的class属性。
注意:
这里struts.xml并没有定义当用户输入:
login.action请求时,需要调用的action类。
而是定义了一个Bean的ID(BeanID=hwpLoginAction)。
这个Bean的类实现被定义在了Spring的配置文件中。
引入Spring框架后,所有的组件都被定义为Spring框架中的一个Bean,它们在Spring容器中具有唯一的ID。
Spring框架定义了每一个Bean的ID及其实现的类(com.LoginAction)。
当然,如果这个类有属性,也可以在定义。
5)部署与测试
将这个工程部署到Tomcat服务器,启动服务器,并输入:
http:
//localhost:
8080/SSHLogin/
可能会出现404错误,进入MyEclipse,可能看到一些运行错误,例如
出现这类错误的主要原因是:
我们在前面添加Struts支持时没有添加Struts2SpringLibraries。
在Struts2SpringLibraries库中,有一个很重要的插件struts2-spring-plugin-2.1.8.1.jar,这个插件中提供了spring与struts2整合时所需要的类。
如图,选择工程,右单击选择“属性”,为工程添加新库。
选择MyeclipseLibraries,添加Struts2SpringLibraries。
重新部署、测试工程,即可成功!
!
!
五、整合Hibernate
1)在SQLServer2005中创建数据库MyTest和表test
①创建数据库:
MyTest
打开“企业管理器”或“SQLServer服务器管理器”,点击“数据库”,如图,选择“数据库”,右单击,新建数据库。
②创建数据表:
test
如图,选择MyTest数据库的表,右单击,新建数据库表:
test
test(id[主键],username,password)
在SQLServer2005下,如下图所示:
2)在MyEclipseDatabaseExplorerPerspective窗口下创建一个新的连接驱动(Createanewconnectiondriver)DN
①将sqljdbc4.jar复制到工程的WEB-INF\lib目录下。
②在MyEclipse开发环境下,选择Windows,打开DatabaseExplorer。
如图,如果开发环境中有SQLServer的JDBC驱动,可以选择该驱动,右单击,编辑。
如果没有SQLServer的JDBC驱动,则可以创建一个新的连接。
如图,连接编辑、创建完毕后,可以测试数据库连接是否正常。
本工程中,我们使用SQL2005。
3)添加Hibernate功能支持
选择工程,右单击,添加Hibernate组件。
选择所有的库文件(只有一个没选)。
将Hibernate的配置文件合并到Spring的配置文件中。
选择SQLServer的JDBC连接
选择不创建会话工厂(sessionFactory)类
4)完成相关代码的编写与添加
①逆向工程,生成数据库表的实体类及映射文件
如图,打开MyEclipseDatabaseExplorer,选择SQL2005,打开数据库连接。
选择数据库MyTest的test表,右单击,利用Hibernate逆向工程生成数据库表的实体类及映射文件。
如图,在弹出的窗体下选择源文件夹、Java包名。
创建数据库表test的映射文件(.hbm.xml)和数据库表的实体类(POJO)。
注意:
不要创建DAO类,这个类我们自己生成。
最后,输入数据库表映射的实体类的类名:
User.java,点击“finish”即可。
在MyEclipse环境下,展开工程,可以看到Hibernate为我们生成了一个数据库表的映射文件:
User.hbm.xml,一个数据库表的实体类:
User.java。
如果数据库表的实体类User.java不在我们前面指定的com.bean包内,这时,可以选择工程,创建这个包,并把User.java拖进去,如图。
②手工创建数据库访问接口DAO及接口的实现类
选择工程,右单击创建数据库访问接口UserDAO
接口名:
UserDAO
包名:
com.dao
采用类似的方法,创建接口UserDAO的实现类。
类名:
UserDAOImpl
包名:
com.dao.impl
实现的接口名:
UserDAO
③业务逻辑层的设计与实现
在com.service包中创建业务逻辑层接口及实现。
接口的创建:
接口名:
ActionManager
包名:
com.service
接口实现类的创建:
类名:
ActionManagerImpl
包名:
com.service.impl
实现的接口名:
ActionManager
参考如下代码,修改数据库接口、接口实现类,业务逻辑层接口及实现类。
//UserDAO.java
===============================================================
packagecom.dao;
importjava.util.List;
importcom.bean.User;
publicinterfaceUserDAO{
/**
*根据id查找用户
*@paramid需要查找的用户id
*/
Userget(Integerid);
/**
*增加用户
*@paramuser需要增加的用户
*/
voidsave(Useruser);
/**
*修改用户
*@paramuser需要修改的用户
*/
voidupdate(Useruser);
/**
*删除用户
*@paramid需要删除的用户id
*/
voiddelete(Integerid);
/**
*删除用户
*@paramuser需要删除的用户
*/
voiddelete(Useruser);
/**
*查询全部用户
*@return获得全部用户
*/
List
/**
*根据用户名,密码查找用户
*@paramusername查询所需的用户名
*@parampass查询所需的密码
*@return对应的用户
*/
UserfindUserByNameAndPass(Stringusername,Stringpassword);
}
//UserDAOImpl.java
===============================================================
packagecom.dao.impl;
importjava.util.List;
importcom.dao.UserDAO;
importcom.bean.User;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassUserDAOImplextendsHibernateDaoSupportimplementsUserDAO{
publicvoiddelete(Integerid){
//TODOAuto-generatedmethodstub
getHibernateTemplate().delete(getHibernateTemplate().get(User.class,id));
}
publicvoiddelete(Useruser){
//TODOAuto-generatedmethodstub
getHibernateTemplate().delete(user);
}
publicList
//TODOAuto-generatedmethodstub
returngetHibernateTemplate().find("fromtest");
}
publicUserfindUserByNameAndPass(Stringusername,Stringpassword){
//TODOAuto-generatedmethodstub
System.out.println("验证用户22222222");
//delete
(1);//从数据库的test表中,成功删除一条记录
//String[]args={username,password};
System.out.println("成功123abc");
Listul=getHibernateTemplate().find("fromcom.bean.Userauwhereau.username='"+username+"'andau.password='"+password+"'");
if(ul.size()==1)
{
System.out.prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手把手 SSH 框架 整合 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)