Struts2+Spring+Hibernate整合环境搭建 myeclipse 8.6
(MyEclipse8.6版)实验步骤
准备数据库和DBdriver(同前面的实验)1)在SQLServer200x中创建数据库test和表users。CREATEDATABASEtest;USEtest;GOCREATETABLE[dbo].[users]([id][int]IDENTITY(1,1)primary
key,[username][varchar](20)NOTNULL,[password][varchar](20)NULL)go2)在MyEclipseDatabaseExplorerPerspective窗口下创建一个新的连接驱动(Createanewconnectiondriver)DN。图0项目工程结构总览图1一.创建工程,增加Struts2、Spring2.x和Hibernate3.2功能1.新建web工程SSHD
2.填加Struts功能(直接选struts2.1)
图1
这里要注意:在选URLPattern时要选择第三个,不要选“*.action”。
2图2
图3
3.填加Spring功能(勾选2个库Spring3.0CoreLibraries和Spring3.0WebLibraryis),注意选择将检测到的库内容拷贝到项目文件夹。
3图4填加Spring功能示意图
选择新建Springbeanconfigurationfile,文件名为applicationContext.xml4.添加Hibernate功能
(1)默选的两个包+SpringJDBC(其他会自动勾选)
图5
4图6
(2)选择Hibernate工具使用的配置文件类型为springconfiguration。
图7选择Hibernate工具使用的配置文件
(2)SpringDataConnectiondetail中的BeanId为dataSource。
5(3)在创建Hibernate会话工厂时,选择不要创建sessionFactory类。
图8不要创建会话工厂
二.创建ORM、交互值对象、DAO1.在com.domain中存放Hibernate产生的映射文件和持久类。
6图9
图10
7图11
2.在com.bean包中,编写值对象的类User.java
packagecom.bean;publicclassUser{privateStringname;privateStringpassword;publicUser(){}publicUser(Stringname,Stringpassword){this.name=name;this.password=password;}publicStringgetName(){}returnname;publicvoidsetName(Stringname){}this.name=name;publicStringgetPassword(){}returnpassword;publicvoidsetPassword(Stringpassword){this.password=password;8}}3.在com.dao包中,创建DAO接口,如图12.
图12UserDAOpackagecom.dao;importimportjava.util.List;com.domain.Users;public/**interfaceUserDAO{**根据id查找用户Users*/@paramid需要查找的用户id/**get(Integerid);**增加用户void*/@paramuser需要增加的用户save(Usersuser);/****修改用户*/@paramuser需要修改的用户voidupdate(Usersuser);/****删除用户void*/@paramid需要删除的用户iddelete(Integerid);/****删除用户void*/@paramuser需要删除的用户delete(Usersuser);/***查询全部用户9List 图13userDAO实现类自动产生的代码如下://因为它实现UserDAOpackagecom.dao.impl;importjava.util.List;importcom.dao.UserDAO;importcom.domain.Users;publicclassUserDAOImplimplementsUserDAO{publicvoiddelete(Integerid){//TODOAuto-generatedmethodstub}publicvoiddelete(Usersuser){//TODOAuto-generatedmethodstub}publicList 图14ActionManager实现接口13packagecom.service.impl;importcom.dao.UserDAO;importcom.domain.Users;importcom.service.ActionManager;publicclassActionManagerImplimplementsActionManager{privateUserDAOuserDAO;publicvoidsetUserDAO(UserDAOuserDAO){}this.userDAO=userDAO;publicIntegervalidLogin(Stringusername,Stringpassword){try{password);Usersuser=userDAO.findUserByNameAndPass(username,if(user!=null){}returnuser.getId();}{}catch(Exceptione)System.out.println(e.getMessage());}}returnnull;四.控制层设计与实现1.Action的创建(1)在com.action包中创建Action。如图15.图15登录Action//LoginAction源码如下:packagecom.action;14importcom.service.ActionManager;importcom.opensymphony.xwork2.ActionSupport;publicclassLoginActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;protectedActionManagermgr;privateStringusername;privateStringpassword;publicStringexecute()throwsException{if(username.equals(\"\")||username==null){}return\"input\";IntegeruserId=mgr.validLogin(username,password);if(userId!=null){}else{returnSUCCESS;}}addActionError(\"用户名/密码不匹配\");return\"input\";publicStringgetPassword(){}returnpassword;publicStringgetUsername(){}returnusername;publicvoidsetPassword(Stringpassword){}this.password=password;publicvoidsetUsername(Stringusername){}this.username=username;15publicvoidsetMgr(ActionManagermgr){}this.mgr=mgr;publicActionManagergetMgr(){returnmgr;}}2.Struts2控制文件和属性文件的配置(1)action的配置系统生成的Struts.xml模板为://struts.xml
欢迎,
登录成功!!!
25图19***启动程序时提示的工作路径请记好
在这个路径下搜索名字为antlr-2.7.2.jar的文件,因与antlr-2.7.6.jar重复,故冲突,请把版本低的antlr-2.7.2.jar删除,
图20重启tomcat,再重新调试。
图2126可能的问题及解决方案
1.如果出现原文件中的字符与设定的字符集不匹配(在保存时弹出如下问题窗口),图22修改默认的字符集。有多条进入修改对话框的入口,效果最好的是:(1)从“Windows->Preference”进入如下页:图23选择ContentType页,修改“JavaClassFile”的encoding为UTF-8。2.如果8080端口已经被其它应用占用,改用其它端口,如8090,修改方式如下:windows->preferences27图243.在myeclipse8.6中,因为Struts自带的antlr-2.7.2.jar,比Hibernate3.3自带的antlr-2.7.6.jar的版本要低,故要删除前一个低版本。否则执行hibernate的HQL查询时报错:
java.lang.NoSuchMethodError:antlr.collections.AST.getLine()I需要删除struts1.3和2.1中的antlr-2.7.2.jar。
由于myeclipse添加struts功能时,包不是放在工程lib下的,而是myeclipse自带的,所以删除比较麻烦。可以这样删除:
(1)在
X:\\MyEclipse8.6\\MyEclipse-8.6\\configuration\\org.eclipse.osgi\\bundles下搜索antlr-2.7.2.jar,找出的都删除,(有些是1.3的,有些是2.1的);
(2)然后在X:\\MyEclipse8.6\\Common\\plugins下搜索*struts*.jar,会找
出三个:
图25
选中一个文件,打开方式选择压缩包,
com.genuitec.eclipse.cross.easystruts.eclipse_8.6.0.me201007231647.jar,在lib下和data\\1.3下删除antlr-2.7.2.jar(这是删除1.3里面的),再打开com.genuitec.eclipse.struts2_8.6.0.me201007292038.jar删除data\\2.1\\core中的antlr-2.7.2.jar(这个是2.1里面的)。
好了,这样就从struts1.3和2.1中移除了antlr-2.7.2.ja,因为这两个jar
28是common目录下的,所以删除了后,再运行myeclipse后,myeclipse就不能再从这两个包中找antlr-2.7.2.jar并加载了。
29
因篇幅问题不能全部显示,请点此查看更多更全内容