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">