最详细的ssh框架整合讲解.docx

上传人:b****5 文档编号:5378745 上传时间:2022-12-15 格式:DOCX 页数:34 大小:1.20MB
下载 相关 举报
最详细的ssh框架整合讲解.docx_第1页
第1页 / 共34页
最详细的ssh框架整合讲解.docx_第2页
第2页 / 共34页
最详细的ssh框架整合讲解.docx_第3页
第3页 / 共34页
最详细的ssh框架整合讲解.docx_第4页
第4页 / 共34页
最详细的ssh框架整合讲解.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

最详细的ssh框架整合讲解.docx

《最详细的ssh框架整合讲解.docx》由会员分享,可在线阅读,更多相关《最详细的ssh框架整合讲解.docx(34页珍藏版)》请在冰豆网上搜索。

最详细的ssh框架整合讲解.docx

最详细的ssh框架整合讲解

基于Myeclipse6.5的SSH框架整合

Mx25184

2012-08-14

1、文章目的

最近整合SSH框架,期间遇到很多问题,中途几次熬夜查找,精神几度崩溃,心想如此好的框架为啥搭建整合的时候确实如此费劲,在网上找了很多解决方案,均不能解决问题。

为了以后让想学SSH的人少走点弯路,故此次将整个完整搭建步骤写出来,供大家分享,希望对大家有所帮助。

2、运行环境

1、jdk-6u1-windows-i586-p

2、MyEclipse_6.5.0GA_E3.3.2_Installer_A

3、apache-tomcat-6.0.13.exe

4、mysql-essential-5.1.53-win32

5、数据库脚本程序

createdatabaseSSH;

createtableuser(

idint(11)notnullauto_increment,

usernamevarchar(50)defaultnull,

passwordvarchar(50)defaultnull,

primarykey(id)

);

insertintouservalues('1','admin','admin');

具体环境搭建根本上就是下载安装,继续流程就不在详细说明了,一般网上都可以查到。

3、创建项目工程

再打开的Myeclipse中,新建Webproject,项目名字我们起名Myssh,J2EESqecificationLevel选择JavaEE5.0,然后点击Finish即可。

4、添加Struts1.2框架支持

接下来我们将添加Struts框架支持,在项目Myssh上面右键,选择Myeclipse>>AddStrutsCapabilities…

在弹出的AddStrutsCapabilities对话框中修改Basepackagefornewclasses中的路径为com.Myss.struts,其他不变,点击finish即可

完成添加后的项目路径结构为:

5、添加spring2.5框架支持

和添加struts框架一样,在项目Myssh上面右键,选择Myeclipse>>AddSpringCapabilities…

在弹出的AddSpringCapabilities对话框中选择Springversion:

Spring2.5

由于Spring采用的最小化发布方式,使得Spring的库文件是别离的,所以我们要选择自己需要添加的库:

选择好点击next,然后修改folder路径为:

WebRoot/WEB-INF点击finish即可

此时项目结构为:

6、配置数据源

在Myeclipse右上角打开MyeclipseDatabaseExplorer数据库管理视图。

在左侧的DBBrowser中右击New打开新建对话框

在DatabaseDriver中,配置容如下:

选择DriverTemplate为MySQL,然后根据事情情况写URL,这里我们是本机操作,所以写为localhost下的ssh,Username和password根据数据库实际填写。

然后添加数据库驱动程序AddJARs,为了方便我这里选择了保存密码Savepassword。

然后点击finish即可。

7、Spring和hibernate的整合

配置完数据源就可以添加hibernate支持了,切换视图到Myeclipsejavaenterprise下,在Myssh工程上右击,选择Myeclipse>>AddHibernateCapabilities..

 

这一步我们选择默认即可点击Next

对话框中选择Springconfigurationfile,表示我们希望将Hibernate托管给Spring进展管理,然后点击Next;

在出现的对话框中询问我们是否新建一个Spring配置文件,我们选择:

ExistingSpringconfigurationfile。

因为我们已经添加了Spring的配置文件了,所以我们选择已存在的配置文件即可,Myeclipse自动回查找,然后输入MysessionFactory,点击Next

在对话框中输入Beanid数据源在Spring中的BeanID的名字:

datasource。

然后选择DBDriver里面我们之前配置的Myssh后,Myeclipse会自动完成其他的填写。

点击Next

在对话框中取消创新新的hibernatesessionfactory,点击Finish即可。

Myeclipse自动默认打开Spring配置文件:

applicationContext.xml

此时项目结构:

切换到MyeclipseDatabaseExplorer视图,双击打开数据库连接,找到表user,然后右击表格,选择HibernateReversEngineering..

在对话框中修改Javasrcfolder路径为我们建立的/Myssh/src,然后填写javapackage名称:

.Myssh.user

选择CreatePOJO,选择javaDataObject,选择JavaDataAccessObject点击Next

在出现的对话框中选择IdGenerator为native,然后点击Finish

此时项目结构为下列图所示,其中User.java是myeclipse生成的使用面向对象的java语言对数据库表格进展的抽象,User.hbm.xml是将数据库表格中的字段和POJO类的属性进展映射的定义,UserDAO.java封装了一些Myeclipse自动生成的对数据库的操作。

这是我们修改一下文件目录,新建一个dao包,将DAO类与POJO类分开,然后我们在Struts包下面建立action和form包。

为了将实现与接口进展解耦,我们在dao包下面添加接口,然后创建dao.impl包,将实际的DAO类放在这里,DAO类是直接与数据库打交道的类。

为了对业务逻辑进展封装,我们将业务逻辑全部写在Service类里面,和dao一样,我们建立service包,里面添加业务接口,具体实现放在service.impl里面。

将UserDAO.java移动到dao的Impl包下面,并在dao包下面建立接口IUserDAO:

package.Myssh.dao;

importjava.util.List;

importjavax.xml.registry.infomodel.User;

publicinterfaceIUserDAO{

publicUserfindById(Integerid);

publicListfindByUsername(Objectusername);

publicvoidsave(Useruser);

}

 

UserDAO是自动生成的,我们可以简单的修改一下。

让UserDAO实现接口IuserDAO,不然在启动Spring的时候会报错。

publicclassUserDAOextendsHibernateDaoSupportimplementsIUserDAO{

privatestaticfinalLoglog=LogFactory.getLog(UserDAO.class);

//propertyconstants

publicstaticfinalStringUSERNAME="username";

publicstaticfinalStringPASSWORD="password";

protectedvoidinitDao(){

//donothing

}

publicvoidsave(Useruser){

log.debug("savingUserinstance");

try{

getHibernateTemplate().save(user);

log.debug("savesuccessful");

}catch(RuntimeExceptionre){

log.error("savefailed",re);

throwre;

}

}

publicvoiddelete(UserpersistentInstance){

log.debug("deletingUserinstance");

try{

getHibernateTemplate().delete(persistentInstance);

log.debug("deletesuccessful");

}catch(RuntimeExceptionre){

log.error("deletefailed",re);

throwre;

}

}

publicUserfindById(java.lang.Integerid){

log.debug("gettingUserinstancewithid:

"+id);

try{

Userinstance=(User)getHibernateTemplate().get(

".Myssh.user.User",id);

returninstance;

}catch(RuntimeExceptionre){

log.error("getfailed",re);

throwre;

}

}

publicListfindByExample(Userinstance){

log.debug("findingUserinstancebyexample");

try{

Listresults=getHibernateTemplate().findByExample(instance);

log.debug("findbyexamplesuccessful,resultsize:

"

+results.size());

returnresults;

}catch(RuntimeExceptionre){

log.error("findbyexamplefailed",re);

throwre;

}

}

publicListfindByProperty(StringpropertyName,Objectvalue){

log.debug("findingUserinstancewithproperty:

"+propertyName

+",value:

"+value);

try{

StringqueryString="fromUserasmodelwheremodel."

+propertyName+"=?

";

returngetHibernateTemplate().find(queryString,value);

}catch(RuntimeExceptionre){

log.error("findbypropertynamefailed",re);

throwre;

}

}

publicListfindByUsername(Objectusername){

returnfindByProperty(USERNAME,username);

}

publicListfindByPassword(Objectpassword){

returnfindByProperty(PASSWORD,password);

}

publicListfindAll(){

log.debug("findingallUserinstances");

try{

StringqueryString="fromUser";

returngetHibernateTemplate().find(queryString);

}catch(RuntimeExceptionre){

log.error("findallfailed",re);

throwre;

}

}

publicUsermerge(UserdetachedInstance){

log.debug("mergingUserinstance");

try{

Userresult=(User)getHibernateTemplate().merge(detachedInstance);

log.debug("mergesuccessful");

returnresult;

}catch(RuntimeExceptionre){

log.error("mergefailed",re);

throwre;

}

}

publicvoidattachDirty(Userinstance){

log.debug("attachingdirtyUserinstance");

try{

getHibernateTemplate().saveOrUpdate(instance);

log.debug("attachsuccessful");

}catch(RuntimeExceptionre){

log.error("attachfailed",re);

throwre;

}

}

publicvoidattachClean(Userinstance){

log.debug("attachingcleanUserinstance");

try{

getHibernateTemplate().lock(instance,LockMode.NONE);

log.debug("attachsuccessful");

}catch(RuntimeExceptionre){

log.error("attachfailed",re);

throwre;

}

}

publicstaticUserDAOgetFromApplicationContext(ApplicationContextctx){

return(UserDAO)ctx.getBean("UserDAO");

}

 

}

在service中建立接口IuserService.java,在service的Impl中建立UserService.java

package.Myssh.service;

importjavax.xml.registry.infomodel.User;

publicinterfaceIUserService{

publicUsergetuserById(Integerid);

publicUsergetUserByUsername(Stringusername);

publicvoidaddUser(Useruser);

}

UserService.java

package.Myssh.service.impl;

 

importjava.util.List;

import.Myssh.dao.IUserDAO;

import.Myssh.dao.impl.UserDAO;

import.Myssh.service.IUserService;

import.Myssh.user.User;

publicclassUserServiceimplementsIUserService{

privateIUserDAOuserDAO;

publicvoidaddUser(Useruser){

//TODOAuto-generatedmethodstub

userDAO.save(user);

}

publicUsergetUserByUsername(Stringusername){

//TODOAuto-generatedmethodstub

Listlist=userDAO.findByUsername(username);

if(list.size()==0){

returnnull;

}else{

return(User)list.get(0);

}

}

publicUsergetuserById(Integerid){

//TODOAuto-generatedmethodstub

returnuserDAO.findById(id);

}

publicIUserDAOgetUserDAO(){

returnuserDAO;

}

publicvoidsetUserDAO(IUserDAOuserDAO){

this.userDAO=userDAO;

}

 

}

此时的工程目录结构为:

这时,Spring配置文件applicationContext.xml容会自动添加如下信息:

然后参加bean的初始化配置。

8、整合Spring和Struts

为了能够让Spring托管Struts的类,在网上找了一个方式,只需让Struts从Spring获得需要的类就可以了,为了达到这个目标,我们创建一个类BaseAction

package.Myssh.struts.action;

importorg.springframework.web.context.WebApplicationContext;

importorg.springframework.web.context.support.WebApplicationContextUtils;

importorg.springframework.web.struts.ActionSupport;

publicclassBesaActionextendsActionSupport{

protectedObjectgetBean(Stringid){

WebApplicationContextctxApplicationContext=WebApplicationContextUtils

.getWebApplicationContext(this.servlet.getServletContext());

returnctxApplicationContext.getBean(id);

}

}

然后让容器初始化Spring,我们修改WEB.xml文件。

添加如下代码:

9、实例测试

至此配置已经差不多了,我们可以测试一下效果。

首先创建一个基于Struts的jsp页面,打开WEB-INF下面的struts-config.xml,单击右键,选择New>>Form,Actionandjsp.

在弹出的对话框中添加Usercase,然后点击Add生成Properties代码。

这会由Myeclipse自动生成相应的Form代码,输入完成后选择JSP选项卡,选上CreateJSPform,修改路径点击Next。

然后我们点击Struts-config.xml左下角的Source进入XML编辑页面,添加转发选项。

然后我们去index.jsp一个目录下新建两个jsp页面,一个是succ.jsp,一个是fail.jsp。

他们的容分别是简单的一句话登录成功和登录失败。

到这里我们就去修改LoginAction类容如下:

Login.jsp容如下:

Succ.jsp这个添加登录失败汉字是需要修改字符集:

GB2312

剩下的那个succ.jsp界面我就不截图了,和上面这个一样。

只是容为:

登录成功

到此为止,我们的配置极其逻辑代码都已经写完了,项目文件结构如下列图:

启动tomcat查看。

10、考前须知

1、由于Myeclipse中的Spring和hibernate框架带有的jar可能重复引用,所以理论上我们建立SSH框架是就应该删除重复jar包,我直接的从Myeclipse下面:

D:

\Users\administrator\AppData\Roaming\MyEclipse6.5\myeclipse\eclipse\plugins\.genuitec.eclipse.springframework_6.5.0.zmyeclipse650200806\data\2.0\lib\asm\下面的asm-2.2.3.jar删除了。

相应的文件删除根据自己安装目录的路径为主。

2、别忘记UserDAO去实现IUserDAO接口。

否那么一经启动不起来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1