实验报告一、实验目的:使用JavaEE语言,由Struts2、Hibernate、Spring这三个框架组合开发实现一个学生信息管理系统。二、功能描述:该系统具有登录、学生信息查询、实现学生信息的增加、删除和修改等操作。在登录学生信息管理系统时,如果没有登录成功,就回到登录界面,登录成功后方可进行各种操作,所以需要创建三个表:XSB表、ZYB表、DLB表。三、实验步骤:1打开SQLServer,将已有的数据库XSCJ还原到SQL数据库中。2打开MyEclipse,新建一个名为xscjManage_ZYW的WebProject。将lib包复制到项目中,并且右击项目,打开【BuildPath】→【ConfigureBuildPath…】菜单项,选择【AddJars…】,选择项目中刚考进去的lib包中的jar包,点OK。3选中项目,打开菜单项中的【Windows】→【showview】→【other】→【DBBrowser】,在【MyEclipseDerby】下新建一个名为test的数据连接驱动,并将jtds的jar包添加到DriverJars中。其中Template用jtds,ConnectionURL为“jdbc:jtds:sqlserver://localhost:1433/xscj”,username以及password都为“sa”。并且打开数据库连接。4选中xscjManage_ZYW,选择菜单项中的【MyEclipse】→【ProjectCapalibities】→【AddSpringCapalibities…】,去掉MyEclipse的勾选,单击Next,去掉EnableAOPBuilder的勾选,点Finish完成Spring的添加。5继续选择菜单项中的【MyEclipse】→【ProjectCapalibities】→【AddHibernateCapalibities…】,去掉MyEclipseLibraries的勾选,单击Next,选择”Springconfigurationfile”,单击【Next】,选择”ExisitingSpringconfigurationfile”,单击【Next】,在DBDriver中选择刚才创建的数据库连接驱动test,单击【Next】,去勾选”CreateSessionFactoryclass”,单击【Finish】,完成Hibernate的添加。6打开test,打开xscj下的TABLE,右击DLB,选择【HibernateReverseEngineering…】,在文本框中的”Javasrcfolder”下点【Browse…】,选择xscjManage_ZYW下的src,新建包org.model,勾选CreatePOJO…和JavaDataObject…并去掉Createabstractclass的勾选。单击【Next】,将IdGenerator选择为identity,单击【Finish】。生成DLB表对应的POJO类及相应的映射文件。对XSB表和ZYB表进行同样的操作,只是XSB表的IdGenerator应选择为assigned。在映射文件Xsb.hbm.xml中添加代码:7实现DAO在web项目下新建包org.dao,在该包下新建接口DlDao_ZYW,创建学号和口令查找、插入用户以及判断是否存在该学生的用户的方法。新建接口XsDao_ZYW,创建插入学生、根据学号删除学生、修改学生信息、根据学号查询学生信息,分页显示学生信息,查询一共多少条学生信息的方法。新建接口ZyDao_ZYW,创建插入专业信息、根据专业ID查找专业信息、查找所有专业信息的方法。并新建包org.dao.imp,在该包下新建实现类DlDaoImp_ZYW.java、XsDaoImp_ZYW.java、ZyDaoImp_ZYW.java并使用Spring整合Hibernate后提供的HibernateDaoSupplort类,分别实现DlDao_ZYW.java、XsDao_ZYW.java和ZyDao_ZYW.java中的方法。8基于HibernateDaoSupport的DAO组件必须获得一个SessionFactory的引用,然后才可以完成持久化访问。因此把这些DAO组件交由Spring容器的Bean来管理,而且在后面的业务逻辑中也要用到这些组件,所以要在Spring配置文件中进行配置。9实现业务逻辑层业务逻辑组件是为控制器提供服务的,他依赖于DAO组件,是对DAO的封装,通过其封装让控制器无需直接访问DAO的方法,而是调用业务逻辑的方法。新建包org.service,在包下新建接口DlService_ZYW.java,创建DlDaobeanid=dlDao_ZYWclass=org.dao.imp.DlDaoImp_ZYWpropertyname=sessionFactoryrefbean=sessionFactory//property/beanbeanid=xsDao_ZYWclass=org.dao.imp.XsDaoImp_ZYWpropertyname=sessionFactoryrefbean=sessionFactory//property/beanbeanid=zyDao_ZYWclass=org.dao.imp.ZyDaoImp_ZYWpropertyname=sessionFactoryrefbean=sessionFactory//property/bean中的方法,并以同样的方法新建XsService_ZYW.java和ZyService_ZYW.java。新建包org.service.imp,在包下新建实现类DlServiceManage_ZYW.java、XsServiceManage_ZYW.java、ZyServiceManage_ZYW.java,分别实现DlService_ZYW.java、XsService_ZYW.java、ZyService_ZYW.java中的方法。把业务逻辑交由Spring容器的Bean管理,在Spring配置文件中进行配置:10实现Web层打开web.xml,在其中配置相应的过滤器和监听器。在src下新建文件命名为struts.properties,代码如下:11分页实现新建包org.tool,在该包下新建类Pager.java,实现页面分页操作。12项目主界面beanid=dlService_ZYWclass=org.service.imp.DlServiceManage_ZYWpropertyname=dlDao_ZYWrefbean=dlDao_ZYW//property/beanbeanid=xsService_ZYWclass=org.service.imp.XsServiceManage_ZYWpropertyname=xsDao_ZYWrefbean=xsDao_ZYW/ref/property/beanbeanid=zyService_ZYWclass=org.service.imp.ZyServiceManage_ZYWpropertyname=zyDao_ZYWrefbean=zyDao_ZYW//property/beancontext-paramparam-namecontextConfigLocation/param-nameparam-value/WEB-INF/classes/applicationContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listenerstruts.objectFactory=spring将所需要的图片直接复制到WebRoot目录下。在WebRoot下新建jsp页面head.jsp,实现页面如图1,left.jsp如图2,foot.jsp页面如图3,right.jsp页面以及main.jsp如图4。图1图2图3图413登录页面在left.jsp中,超链接都是转向Action的,交由Struts2框架来处理,因为Struts2可以自己配置拦截器,用来验证用户是否已经登录,如果没有登录就跳转到登陆界面。而登录成功后就会跳转到成功界面。在包org.tool下新建拦截器MyFilter.java。在Struts的核心配置文件struts.xml中对实现left.jsp中超链接跳转的Action进行配置:在WebRoot目录下新建login.jsp页面,实现登录界面。在struts.xml中进行配置:在src下新建包org.action,同时在该包下新建基于ActionSupport的类DlAction_ZYW.java。由于Action实例是由Spring完成的,所以在applicationContext.xml文actionname=addXsclass=xsActionmethod=addXsresultname=success/success.jsp/resultresultname=error/existXs.jsp/result/actionactionname=addXsViewclass=xsActionmethod=addXsViewresultname=success/addXsInfo.jsp/resultinterceptor-refname=defaultStack/interceptor-refinterceptor-refname=myFilter/interceptor-ref/action/packageinterceptorsinterceptorname=myFilterclass=org.tool.MyFilter/interceptor/interceptorsglobal-resultsresultname=loginlogin.jsp/result/global-resultsactionname=xsInfoclass=xsActionresultname=success/xsInfo.jsp/resultinterceptor-refname=defaultStack/interceptor-refinterceptor-refname=myFilter/interceptor-ref/actionactionname=login_testclass=dlActionresultname=successlogin_success.jsp/resultresultname=errorlogin.jsp/result/action件中进行相应配置:新建登录成功后的JSP页面login_success.jsp,完成登录功能的实现。具体如下图所示:图5beanid=dlActionclass=org.action.DlActionpropertyname=dlServicerefbean=dlService//property/bean图614“学生信息管理”功能实现1)显示所有学生信息在left.jsp页面中有一个【学生信息查询】的超链接,如果登录后单击它,则会分页列举所有学生信息。如图7所示图7在包org.action下新建类XsAction.java,实现添加学生信息功能时用到了专业信息的业务逻辑,在Spring配置文件中进行配置:成功后跳转到xsInfo.jsp,分页显示所有学生信息。2)显