S2SH框架基于Annotation整合开发.docx

上传人:b****5 文档编号:7039555 上传时间:2023-01-16 格式:DOCX 页数:32 大小:1.44MB
下载 相关 举报
S2SH框架基于Annotation整合开发.docx_第1页
第1页 / 共32页
S2SH框架基于Annotation整合开发.docx_第2页
第2页 / 共32页
S2SH框架基于Annotation整合开发.docx_第3页
第3页 / 共32页
S2SH框架基于Annotation整合开发.docx_第4页
第4页 / 共32页
S2SH框架基于Annotation整合开发.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

S2SH框架基于Annotation整合开发.docx

《S2SH框架基于Annotation整合开发.docx》由会员分享,可在线阅读,更多相关《S2SH框架基于Annotation整合开发.docx(32页珍藏版)》请在冰豆网上搜索。

S2SH框架基于Annotation整合开发.docx

S2SH框架基于Annotation整合开发

最新S2SH框架基于Annotation的整合开发(原作)

作者:

陈志国(冰风清源)

UUGUTEAMhttp:

//uugu.org

前言

因为自己学习的时候,资料过旧,困难重重。

所以再足以单独开发后,写出来让后来人学习能够轻松点。

S2SH(Struts2+Spring+Hibernate)框架是当今最流行的Java企业级开发框架搭配方案之一。

S2SH是SSH的升级版本,2代指的是Struts2,而SSH中用的是Struts1。

众所周知,Struts1已经在逐渐退出舞台。

而Struts2也就是Webwork的衍化版本,正在如火如荼的盛行着。

其实网上这方面资料也不算少,但是都知道现在技术发展的太快,旧的资料已经很难解决我们的当前问题,要问我写的这些有多新?

我学习S2SH框架是在2011年8月分暑假期间,这篇文章写于2011年8月15日星期一。

我所采用的是当前位置,各大官网发布的最新框架。

Struts2.2.3,Spring2.5.6和Hibernate3.6.6Final。

首先我们需要准备什么?

1.MyEclipseforSpring8.6或者更新

2.Struts2.2.3包或者更新

3.Spring2.5.6包或者更新

4.Hibernate3.6.6包或者更新

其中框架整合用到的jar文件,无论在这三个压缩包或者Google获得的jar文件列表,如图1。

图1:

S2SH框架整合所需要的jar包

前段时间的教程中提到了需要用到这两个包:

hibernate-annotations.jar和hibernate-commons-annotations.jar经过我查看测试,我发现在最新的hibernate3.6.6里面已经包含了这两个包的内容,所以不要再添加这两个包了,如果包添加过多,里面有重复的类文件,在开发的过程中会报错或者出现各种诡异的错误,所以对于jar包的整合,宁少勿多!

下面我们开始一个新项目的整合开发,打开MyEclipse,我当前刚升级到MyEclipseforSpring9.1。

1.建立Web项目,复制jar包

新建一个WebProject,这个我就不截图了。

然后将我们整合好的jar文件们复制到WebRoot下面的WEB-INF下面的lib文件夹内,如图2。

图2存放jar包

2.创建代码包

创建代码包,便于在开发过程中对每一个java文件的管理和分类。

其实分类方式根据自己的需要自己定制,但是行业中也有些约定俗成的规矩。

例如:

存放与Struts的action文件的包,命名com.chzker.action,当然com.chzker是我个人域名倒叙的写法,也是一种规矩,每个人或者企业都不相同的,自己随意就可以。

哪怕你写成org.xxx.action,com.xxx.action,com.action或者直接写action,包名并不受限制。

存放与hibernate相关的DAO文件的包名,命名com.chzker.dao。

存放与hibernate数据库实体类的包名,命名com.chzker.model。

存放与业务逻辑层的Java文件包名,命名com.chzker.service。

如图3,4所示。

图3新建包

图4建成的源码包

3.先嵌入Spring

右键选择MyEclipseAddSpringCapabilities,如图5

图5选择加入Spring

因为我们已经在第一步加入了所有的jar包,当然已经包含了Spring,所以在这一步我们什么库都不用选,只需要选择Spring2.5然后下一步。

如图6

图6不需要选择库

这一步默认,启用AOP并选择New选项即可,点击完成(Finish)。

如图7

图7完成Spring导入

然后再web.xml中注册Spring,要不然的话,前面做的都是白费,因为程序是先读取web.xml去看看有什么组件去调用,如果没有将Spring信息写入到web.xml,那服务器是不会识别Spring的。

注册如下:

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

contextConfigLocation

classpath*:

/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

org.springframework.web.util.IntrospectorCleanupListener

index.jsp

以上是注册Spring完成后的的整个web.xml内容。

4.再嵌入Hibernate

首先,创建DB连接。

选择Windows->OpenPerspective->Others…,在弹出的窗体中选择MyeclipseDatabaseExplorer,然后点击OK。

然后再DBBrowser右键选择New…然后操作如下图7:

图7添加数据库连接

点击Finish即可。

此时在DBBrowser里面就会出现名字为com.mysql.jdbc.Driver的一个数据库连接。

点击左上角Myeclipse图标,返回Myeclipse视图。

在项目文件夹上右键选择Myeclipse->AddHibernateCapabilities,如图8:

图8添加Hibernate

图9

图10

图11

图12

图13

点击Finish以后,我们实现配置的applicationContext.xml会自动被编辑,而添加上我们数据库连接新的信息。

如下所示:

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="http:

//www.springframework.org/schema/beans"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

p="http:

//www.springframework.org/schema/p"

xsi:

schemaLocation="http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-2.5.xsd">

class="mons.dbcp.BasicDataSource">

value="com.mysql.jdbc.Driver">

mysql:

//localhost/school">

org.hibernate.dialect.MySQLDialect

至此,Spring+Hibernate就已经整合完成了。

下面在进行的是Struts2的整合。

5.再整合Struts2

同添加Hibernate类似,项目右键Myeclipse->AddStrutsCapabilities添加Struts2,如图14

图14整合Struts2

在弹出窗体中,选择Struts2.1,然后点击Next。

如图15,16所示:

图15

图16点击Finish

此时无论是applicationContext.xml还是web.xml都已经自动配置完成了。

启动服务器即可顺利启动,访问http:

//localhost:

8080/S2SH/返回首页信息,即表示成功框架搭配成功。

6.正式开发(Hibernate实例应用)

1.生成Hibernate数据表对应类

首先生成数据库表的对应实例,切换到数据库视图。

双击打开连接的数据库,然后再数据库表上面右键选择HibernateReverseEngineering…如图17:

图17

下面为自动生成数据表对象的关键。

如图18

图18注意选项

图19

接着下一步默认,然后点击Finish完成。

此时会自动生成News.java和NewsDAO.java,建议将NewsDAO.java转存到dao包内,以便于分类管理。

2.建立Struts2Action类

首先建立Action基类BaseAction.java,以便于以后的action类都集成此类方便管理和其他功能的实现。

BaseAction.java:

packagecom.chzker.action;

importorg.springframework.stereotype.Controller;

importcom.opensymphony.xwork2.ActionSupport;

@Controller//Annotation标注

publicclassBaseActionextendsActionSupport{

}

IndexAction.java:

packagecom.chzker.action;

importjava.util.List;

importjavax.annotation.Resource;

importorg.springframework.context.annotation.Scope;

importorg.springframework.stereotype.Component;

importcom.chzker.service.newsManager;

@Component("index")

@Scope("prototype")

publicclassIndexActionextendsBaseAction{

privateListnews;

privatenewsManagernewsManager;

publicListgetNews(){

returnnews;

}

publicvoidsetNews(Listnews){

this.news=news;

}

publicnewsManagergetNewsManager(){

returnnewsManager;

}

@Resource

publicvoidsetNewsManager(newsManagernewsManager){

this.newsManager=newsManager;

}

publicStringexecute()throwsException{

try{

news=this.newsManager.listAllNews();

return"index";

}catch(Exceptione){

e.printStackTrace();

return"error";

}

}

}

Struts.xml配置:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http:

//struts.apache.org/dtds/struts-2.1.dtd">

error.jsp

index.jsp

/admin/index.html

3.建立Service类

正规途径来讲,我们在service类中每一个类都要有其抽象类和它的实现类,以便于以后的再次开发和维护。

在此,我们不做赘述从简单入手,直接写service实现类。

newsManager.java:

packagecom.chzker.service;

importjava.util.List;

importjavax.annotation.Resource;

importmons.logging.Log;

importmons.logging.LogFactory;

importorg.springframework.stereotype.Component;

importcom.chzker.dao.NewsDAO;

@Component("newsManager")//Annotation注释

publicclassnewsManager{

privateNewsDAOnewsDao;

privateLoglog=LogFactory.getLog(newsManager.class);

/************************GetterandSetter*****************************/

publicNewsDAOgetNewsDao(){

returnnewsDao;

}

@Resource//利用SpringIOC容器将newsDao利用Annotation注释注入给newsManager

publicvoidsetNewsDao(NewsDAOnewsDao){

this.newsDao=newsDao;

}

/*

*获取所有news

**/

publicListlistAllNews(){

try{

Listnews=newsDao.findAll();

returnnews;

}catch(Exceptione){

returnnull;

}

}

}

此时项目启动起来会出现空指针错误,原因是我们在applicationContext.xml中有以下重要的配置没有添加:

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="http:

//www.springframework.org/schema/beans"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

context="http:

//www.springframework.org/schema/context"

xmlns:

p="http:

//www.springframework.org/schema/p"

xsi:

schemaLocation="http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-2.5.xsd

http:

//www.springframework.org/schema/contexthttp:

//www.springframework.org/schema/context/spring-context-2.5.xsd">

—下面的context配置作用就是在项目启动的时候扫描你各个包中用Annotation标注的类并将其实例化,切不要忘记上面context的引入-->

annotation-config/>

--扫描用标注的包-->

component-scanbase-package="com.chzker"/>

class="mons.dbcp.BasicDataSource">

value="com.mysql.jdbc.Driver">

mysql:

//localhost/school">

class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

org.hibernate.dialect.MySQLDialect

com.chzker.model.News

index.jsp:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+path+"/";

%>

<%@tagliburi="/struts-tags"prefix="s"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

">

MyJSP'index.jsp'startingpage

--

-->

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

当前位置:首页 > 高等教育 > 院校资料

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

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