MyEclipse6Java开发中文教程 第十一章开发 Spring+ Struts+ Hibernate 应用 第十一章开发 Spring+ Struts+ Hibernate应用. 111创建数据库 112快速开发 Struts应用 11.3添加 Hibernate功能 114添加Spng功能…… 12 115spng整合 Hibernate 116开发业务层代码 117 Spring整合 Struts 11.71给 Action类加入 message属性 1172在Suts配置文件中加入 Spring配置信息 1173在 Spring配置文件中加入Acon的bean定义 11.74测试,Asm出错和og4 j- properties文件 11.7.5 Spring整合Ss的其它方式 66g 11.8完成整合:修改Acon代码注入业务层 119测试运行 1110原理探索:模拟 Action代理类实现 Spring+ Struts 1111开发增删改查的综合用户管理例子 11.11.1创建新项目 11112用 Struts设计器制作前台业务流程 11.113设计业务层功能 11.114开发业务层和DAO层代码 11115开发前台页面流程 11116整合 Spring, Struts和 Hibernate 111布,运行,测试…… 11.118思考与练习 1112 collections. SequencedHashMap异常的解决方案 113小结 本章内容将会给大家介绍目前比较流行的开源软件架构:SSH,也就是 Spring+ Struts 1x+ Hibernate,或者常说的 Spring整合 Struts1.X, Hibernate开发。本章将会介绍在上 章的 Spring整合 Hibernate基础上阐述如何将 Spring和 Struts相整合(这是本章的重点内 容),来开发一个简单的用户登录功能(也就是将第九章开发 Struts1x应用所开发的用户 登录应用改用 Spring整合 Hibernate的方式来完成)。为了方便读者,我们先用最简单的方 式进行整合,然后再会讨论不同的 Spring+ Struts整合策略来作为扩展部分,让读者能有所 对比。最后我们会实现一个增删查改的用户管理应用。 我们先来探讨一个问题,为什么要用 Spring来整合 Struts呢?难道在Suts里面直接 新建一个 ApplicationContext然后通过 getBean0获取对应的DAO层不就也算完成整合了 刘长炯著
MyEclipse 6 Java 开发中文教程 1 刘长炯著 第十一章 开发 Spring+Struts+Hibernate 应用 第十一章 开发Spring+Struts+Hibernate应用..................................................................... 1 11.1 创建数据库 ........................................................................................................ 3 11.2 快速开发 Struts 应用 ........................................................................................ 3 11.3 添加 Hibernate 功能....................................................................................... 10 11.4 添加 Spring 功能 ............................................................................................ 12 11.5 Spring 整合 Hibernate..................................................................................... 12 11.6 开发业务层代码 ............................................................................................... 21 11.7 Spring 整合 Struts ........................................................................................... 23 11.7.1 给Action类加入message属性 ................................................................ 23 11.7.2 在 Struts 配置文件中加入Spring配置信息 ............................................ 24 11.7.3 在Spring配置文件中加入Action的bean定义........................................... 26 11.7.4 测试,Asm出错和log4j.properties 文件 ................................................ 26 11.7.5 Spring整合Struts的其它方式................................................................... 29 11.8 完成整合:修改Action代码注入业务层 ............................................................ 32 11.9 测试运行.......................................................................................................... 35 11.10 原理探索:模拟 Action 代理类实现 Spring + Struts..................................... 35 11.11 开发增删改查的综合用户管理例子................................................................. 38 11.11.1 创建新项目........................................................................................... 38 11.11.2 用Struts设计器制作前台业务流程 ........................................................ 38 11.11.3 设计业务层功能 ................................................................................... 43 11.11.4 开发业务层和DAO层代码..................................................................... 45 11.11.5 开发前台页面流程................................................................................ 53 11.11.6 整合Spring,Struts和Hibernate ........................................................... 68 11.11.7 发布,运行,测试................................................................................ 73 11.11.8 思考与练习........................................................................................... 74 11.12 collections.SequencedHashMap 异常的解决方案 ......................................... 74 11.13 小结 ............................................................................................................... 75 本章内容将会给大家介绍目前比较流行的开源软件架构:SSH,也就是Spring + Struts 1.x + Hibernate,或者常说的Spring 整合Struts1.x,Hibernate开发。本章将会介绍在上一 章的Spring整合Hibernate基础上阐述如何将Spring和Struts相整合(这是本章的重点内 容),来开发一个简单的用户登录功能(也就是将 第九章 开发Struts 1.x应用所开发的用户 登录应用改用Spring整合Hibernate的方式来完成)。为了方便读者,我们先采用最简单的方 式进行整合,然后再会讨论不同的Spring + Struts整合策略来作为扩展部分,让读者能有所 对比。最后我们会实现一个增删查改的用户管理应用。 我们先来探讨一个问题,为什么要用 Spring 来整合 Struts 呢?难道在 Struts 里面直接 新建一个ApplicationContext然后通过getBean()获取对应的DAO层不就也算完成整合了
MyEclipse6Java开发中文教程 嘛?没错,这样也算整合,但是显然这样一来,所有的 Struts类的代码都得改写,而且还有 个很大的缺陷:我们知道Web应用的访问是十分频繁的,例如有的站点一天要支持几百 万的访问量,每次都来创建一个新的 Spring容器类是十分消耗资源的,所以这种做法是比 较容易想到但是却不实用的。而我们的目的是尽量不改或者少改 Struts里面的代码来完成整 合功能,实际情况是让 Spring来创建 Action类,然后注入需要的DAO层等等的对象,也 就是说要把 Struts的 Action类变成 Spring配置文件中的一个普通Java类定义,可以用 property等标签来设置对应的属性。换句话说,就是要把 Action代码中的直接调用 Spring 类的代码 l/ StrutsXXXAction java public Action Forward execute(ActionMapping mapping, Action Form form, Http servletrEquest request Http servletResponse response)( ∥手工创建 Spring容器类 ApplicationContext ctx= new ClassPathXmlApplicationContext(applicationContext. xml") StudentDAo dao=( StudentDAO)ctx getBean( StudentDAO") dao. xxx0,/调用DAO 变成注入方式 private student DAo dao StudentDAo getstudentDAo () t return dao public void setstudentDAo (StudentDAo dao)( this dao =.dao; public ActionForward execute(ActionMapping mapping, ActionForm form, Httpservletrequest request HttpservletresponsE response //直接使用被 Spring注入的DAo的实例 dao.xxx();//调用DAO,或者用代码 getstudentDAO().xxx() 外加一个 Spring中的Bean定义: property 2 刘长炯著
MyEclipse 6 Java 开发中文教程 2 刘长炯著 嘛?没错,这样也算整合,但是显然这样一来,所有的 Struts 类的代码都得改写,而且还有 一个很大的缺陷:我们知道 Web 应用的访问是十分频繁的,例如有的站点一天要支持几百 万的访问量,每次都来创建一个新的 Spring 容器类是十分消耗资源的,所以这种做法是比 较容易想到但是却不实用的。而我们的目的是尽量不改或者少改 Struts 里面的代码来完成整 合功能,实际情况是让 Spring 来创建 Action 类,然后注入需要的 DAO 层等等的对象,也 就是说要把 Struts 的 Action 类变成 Spring 配置文件中的一个普通 Java 类定义,可以用 property 等标签来设置对应的属性。换句话说,就是要把 Action 代码中的直接调用 Spring 类的代码: // StrutsXXXAction.java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // 手工创建 Spring 容器类 ... ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); StudentDAO dao = (StudentDAO)ctx.getBean("StudentDAO"); dao.xxx();// 调用 DAO ... } 变成注入方式: private StudentDAO dao; public StudentDAO getStudentDAO() { return dao; } public void setStudentDAO (StudentDAO dao) { this.dao = dao; } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { //直接使用被 Spring 注入的 DAO 的实例 dao.xxx();// 调用 DAO,或者用代码 getStudentDAO().xxx(); ... } 外加一个 Spring 中的 Bean 定义:
MyEclipse6Java开发中文教程 注意bean的name属性,只有这个属性才能加入带特殊字符的路径名,而对应的属性 studentDAo则通过配置文件来注入上一章已经定义好的 Hibernate DAO类就可以了,而 这个DAO因为是Spng所定义的,所以可以和上一章的内容一样进行 Spring整合 Hibernate的自动事务代理功能开发,而bean的 class则指向写好的 Struts Action类。这 样,就可以解决上文所提到的性能问题 这就是整合的真正目的所在,稍后我们会讨论详细的过程 111创建数据库 我们的项目所用的表结构和以前的没有任何区别。这里我们使用 My SQL数据库来完成 练习。 建表的SQL如下所示: CREATE TABLE Student id int NoT nULl auto increment username varchar(200)NOT NULL, password varchar(20) NOT NULL, age int, PRIMARY KEY(id) )ENGINE=Myl SAM DEFAULT CHARSET=GBK 详细内容请参考52创建数据库表格一节的内容。 12快速开发 Struts应用形 第一阶段我们就是创建一个极其简单的登录功能的程序,前台采用 Struts,后台采用 Spring+ Hibernate完成。关于本节的详细操作说明可以参考第九章开发Stts1X应用。 这个应用的流程图(用 MyEclipse绘制,文件名是模型umr)如下所示: 首爽 显小欢遍信县 退由系统 暴小登录爽面 userLo gin js 登录成功爽面 判断登录 后台可以调用业务层来检查登录 UserLo gin Action. jav 图111登录应用的页面流程 首先我们新建一个Web项目ssh1,也就是 Spring+ Struts+ Hibernate第一个项目的意 思。选择菜单File>New> Web Project,可以启动创建Web项目的向导对话框,在对话 框的 Project Name中输入ssh1然后选中J2 EE Specification Level下面的 Java ee50 单选钮,最后点击 Finish按钮就可以建好这个Web项目了。 刘长炯著
MyEclipse 6 Java 开发中文教程 3 刘长炯著 注意 bean 的 name 属性,只有这个属性才能加入带特殊字符的路径名,而对应的属性 studentDAO 则通过配置文件来注入上一章已经定义好的 Hibernate DAO 类就可以了,而 这个 DAO 因为是 Spring 所定义的,所以可以和上一章的内容一样进行 Spring 整合 Hibernate 的自动事务代理功能开发,而 bean 的 class 则指向写好的 Struts Action 类。这 样,就可以解决上文所提到的性能问题。 这就是整合的真正目的所在,稍后我们会讨论详细的过程。 11.1 创建数据库 我们的项目所用的表结构和以前的没有任何区别。这里我们使用 MySQL 数据库来完成 练习。 建表的 SQL 如下所示: CREATE TABLE Student ( id int NOT NULL auto_increment, username varchar(200) NOT NULL, password varchar(20) NOT NULL, age int, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=GBK 。详细内容请参考 5.2 创建数据库表格一节的内容。 11.2 快速开发 Struts 应用 第一阶段我们就是创建一个极其简单的登录功能的程序,前台采用Struts,后台采用 Spring+Hibernate完成。关于本节的详细操作说明可以参考 第九章 开发Struts 1.x应用。 这个应用的流程图(用MyEclipse绘制,文件名是模型.umr)如下所示: 图 11.1 登录应用的页面流程 首先我们新建一个 Web 项目 ssh1,也就是 Spring+Struts+Hibernate 第一个项目的意 思。选择菜单 File > New > Web Project,可以启动创建 Web 项目的向导对话框,在对话 框的 Project Name 中输入 ssh1,然后选中 J2EE Specification Level 下面的 Java EE 5.0 单选钮,最后点击 Finish 按钮就可以建好这个 Web 项目了
MyEclipse6Java开发中文教程 Web项目创建完毕后,我们需要给它添加 Struts功能。这个操作可以通过在 Package Explorer视图的项目根节点上右键点击,选择上下文菜单中的 MyEclipse> Add struts Capabilities;或者选择菜单 My Eclipse> Project Capabilities> Add struts Capabilities,接着就启动了添加 Struts功能的向导。保持所有选项为默认值,选中 Struts specification右侧的Sus12这个单选钮,然后点击 Finish按钮关闭向导来完成添加 Struts开发功能的过程。这个过程结束之后, Struts的类库以及相应的配置文件将会出现在 项目的目录结构中 选择菜单File>New>JSP( Advanced Template)来创建 userLogin Succes」jsp页 面,详细操作请参考942创建登录成功页面,最后调整此页码的代码为如下所示: s page language="java"pageEncoding="GBK"9 登录结果页面 你好,你已经登录成功! 返回首页 这个代码和以前的不同点就是加入了一个返回首页的链接,这也是一个小小的原则:开发的 页码应该有入口,有出口,尽量不要让用户还得点后退才能返回刚开始的页面。 现在双击 WebRoot/wEB-INF/struts-config xml就可以打开 Struts配置文件编辑器,在 设计器网格面板上点击右键,选择菜单New>Fom, Action and jsP,启动创建 Action Form以及Acon和JSP的向导,请参考943使用新建Fom, Action和JSP的向导创 建关键组件一节的内容完成练习。完成后得到如下的几个文件:登录表单页面 WebRoot/userLogin jsp(表示层) page guan avapageEncoding="GBK> 8t16x1=htp:/trut. apache.0x/a9+hm1”prex=”htm1”8> jsP for UserLoginForm form <script type="text/javascri /验证输入不为空的脚本代码 function check Form(form)( if(form userName. valt a1ert("用户名不能为空!") form userName. focus ()i 刘长炯著
MyEclipse 6 Java 开发中文教程 4 刘长炯著 Web 项目创建完毕后,我们需要给它添加 Struts 功能。这个操作可以通过在 Package Explorer 视图的项目根节点上右键点击,选择上下文菜单中的 MyEclipse > Add Struts Capabilities ;或者选择菜单 MyEclipse > Project Capabilities > Add Struts Capabilities,接着就启动了添加 Struts 功能的向导。保持所有选项为默认值,选中 Struts specification 右侧的 Struts 1.2 这个单选钮,然后点击 Finish 按钮关闭向导来完成添加 Struts 开发功能的过程。这个过程结束之后,Struts 的类库以及相应的配置文件将会出现在 项目的目录结构中。 选择菜单 File > New > JSP(Advanced Template)来创建userLoginSuccess.jsp 页 面,详细操作请参考 9.4.2 创建登录成功页面,最后调整此页码的代码为如下所示: 登录结果页面 你好 ,你已经登录成功! 返回首页 这个代码和以前的不同点就是加入了一个返回首页的链接,这也是一个小小的原则:开发的 页码应该有入口,有出口,尽量不要让用户还得点后退才能返回刚开始的页面。 现在双击WebRoot/WEB-INF/struts-config.xml就可以打开Struts配置文件编辑器,在 设计器网格面板上点击右键,选择菜单New > Form, Action and JSP,启动创建 ActionForm以及Action和JSP的向导,请参考 9.4.3 使用新建Form,Action和JSP的向导创 建关键组件 一节的内容完成练习。完成后得到如下的几个文件:登录表单页面 WebRoot/userLogin.jsp(表示层): JSP for UserLoginForm form // 验证输入不为空的脚本代码 function checkForm(form) { if(form.userName.value == "") { alert("用户名不能为空!"); form.userName.focus();
MyEclipse6Java开发中文教程 if(form password value a1ext("密码不能为空!") form password. focus ()i return false; 用户名: a: 大家可以注意到这个文件也加入了 JavaScript来防止用户输入空的表单值,也就是说 Struts 的hm:om标签定义的表单输入组件也是完全可以来用 JavaScript来做提交验证的 Struts配置文件 WebRoot/EB-NF/ struts-config xm: beans form-bean name=userloginForm type="com yourcompany. struts form. UserLoginForm"/> <global-exceptions / <global-forwards / 刘长炯著
MyEclipse 6 Java 开发中文教程 5 刘长炯著 return false; } if(form.password.value == "") { alert("密码不能为空!"); form.password.focus(); return false; } return true; } 用户名: 密码: 大家可以注意到这个文件也加入了 JavaScript 来防止用户输入空的表单值,也就是说 Struts 的 html:form 标签定义的表单输入组件也是完全可以来用 JavaScript 来做提交验证的。 Struts 配置文件 WebRoot/WEB-INF/struts-config.xml: <action
MyEclipse6Java开发中文教程 attribute= userloginForm input="/userLogin. jsp name="userLoginForm path="/userLogin scope="request type="com yourcompany. struts action. UserloginAction"> 以及加入了硬编码的登录身份验证功能(粗斜体代码,通过简单的字符串比较来判断) 的Acon类 com. yourcompany. struts. action. UserLoginAction的代码(控制器层): package com yourcompany. struts action importjavax.servlethttpHttpservletreques importjavax.servlet.http.HttpservletresponsE import org. apache struts action Action import org. apache struts action.ActionForm; import org. apache struts action. ActionForward; import org. apache struts action. ActionMappingi import com yourcompany. struts form. UserLoginForm public class UserLoginAction extends Act public ActionForward execute(ActionMapping mapping, ActionForm form, Uge attpservletrequest request Httpservletresponse response)( ginForm userLoginForm =(UserLoginForm) form;//TODO Auto-genenated method stub eif( Form. getUserName(equals(myeclipse"&& userLogin Form. getPassword0 equals("myeclipse")) ∥用户登录的一般做法是把信息放入 session(会话)中 request getSession(true). setAttribute("loginedUseruserLogin Form); return mapping. findForward("success return mapping find Forward( failed); 刘长炯著
MyEclipse 6 Java 开发中文教程 6 刘长炯著 attribute="userLoginForm" input="/userLogin.jsp" name="userLoginForm" path="/userLogin" scope="request" type="com.yourcompany.struts.action.UserLoginAction"> 以及加入了硬编码的登录身份验证功能(粗斜体代码,通过简单的字符串比较来判断) 的 Action 类 com.yourcompany.struts.action. UserLoginAction 的代码(控制器层): package com.yourcompany.struts.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.yourcompany.struts.form.UserLoginForm; public class UserLoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UserLoginForm userLoginForm = (UserLoginForm) form;// TODO Auto-generated method stub if(userLoginForm.getUserName().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse")) { // 用户登录的一般做法是把信息放入session(会话)中 request.getSession(true).setAttribute("loginedUser", userLoginForm); return mapping.findForward("success"); } return mapping.findForward("failed"); } }
MyEclipse6Java开发中文教程 注意代码中的粗斜体部分就是硬编码的登录判断和流程跳转。 对应的 FormBean类 com. yourcompany. struts. form. UserLoginForn的代码(严格来说 算是表示层的部分) package com. yourcompany. struts. form import org. apache struts action. ActionForm public class UserLoginForm extends ActionForm /* password property * private String password /* userName property * private string userName ★ Generated Methods Returns the password @return String public string getPassword( return password; Set the pa param password The password to set public, void setPassword(string password)I thispassword ★ Returns the userName return string public string getUserName() return username ★★ 刘长炯著
MyEclipse 6 Java 开发中文教程 7 刘长炯著 注意代码中的粗斜体部分就是硬编码的登录判断和流程跳转。 对应的 FormBean 类 com.yourcompany.struts.form.UserLoginForm 的代码(严格来说 算是表示层的部分): package com.yourcompany.struts.form; import org.apache.struts.action.ActionForm; public class UserLoginForm extends ActionForm { /** password property */ private String password; /** userName property */ private String userName; /* * Generated Methods */ /** * Returns the password. * @return String */ public String getPassword() { return password; } /** * Set the password. * @param password The password to set */ public void setPassword(String password) { this.password = password; } /** * Returns the userName. * @return String */ public String getUserName() { return userName; } /**
MyEclipse6Java开发中文教程 ★ Set the userName x @param userName The userName to set public void setUserName(String userName) i this. userName userName 另外,作为实际项目会遇到的问题,建议按照944调整生成的代码一节加入解决中文 字符编码的过滤器。 最后,以前我们所做的应用都是没对首页 index jsp做任何修改,而是让用户通过地址 栏来手工输入登录页面的地址,很显然这样的应用是对用户很不友好的,大家看到长串的 地址要我来记,本能的就会抵触,觉得你的东西做的不好。因此我们将在首页做登录的判断, 如果已经登录了,则显示退出系统和重新登录链接:否则,就显示登录链接。 index jsp页 面的代码如下所示: bg page pageEncoding="GBK"8> St String basePath request. getscheme()+":7/ request getServerName()+":"+request. getServerPort( tit1e>用户自服务系统 metahttp-equiv=cache-controlcontent=no-cache"> 检查 session判断是否登录 if (session. getAttribute("logineduser")!= null)[ 欢迎您,${1 ogineduser. username}。您现在可以:重新登录 或者退出系统 F else 游客,欢迎您,请登录 刘长炯著
MyEclipse 6 Java 开发中文教程 8 刘长炯著 * Set the userName. * @param userName The userName to set */ public void setUserName(String userName) { this.userName = userName; } } 另外,作为实际项目会遇到的问题,建议按照 9.4.4 调整生成的代码一节加入解决中文 字符编码的过滤器。 最后,以前我们所做的应用都是没对首页 index.jsp 做任何修改,而是让用户通过地址 栏来手工输入登录页面的地址,很显然这样的应用是对用户很不友好的,大家看到一长串的 地址要我来记,本能的就会抵触,觉得你的东西做的不好。因此我们将在首页做登录的判断, 如果已经登录了,则显示退出系统和重新登录链接;否则,就显示登录链接。index.jsp 页 面的代码如下所示: "> 用户自服务系统 欢迎您,${loginedUser.userName}。您现在可以:重新登录 或者退出系统。 游客,欢迎您,请登录。 <% }
MyEclipse6Java开发中文教程 退出系统的页面对应的功能就是使 session失效,然后重定向到首页,代码清单如下: logout. jsp e pageEncoding="GBK"8> //退出登录页面 session. invalidate ( //重定向到首页 response. sendRedirect ("index. jsp") 最后,不要忘了参考944调整生成的代码一节的内容,在 Tomcat下开发的时候加入 那个解决表单提交中文问题的过滤器。实际开发中千万不要漏了这步,否则用户输入信息 的时候用不了汉字岂不是很光火。 到此为止,这个小项目的第一阶段就算开发完毕了,下图显示了这个小项目第一阶段的 文件列表(没有包含过滤器部分的类文件) 日患 白申 m your comp any. struts. action t-n UserLoginActionjava E-IB com. your company. struts. form I userloginF E JRE System Library [M tJav⊥EE5 Libraries +a Struts 1.2 Libraries 日 Webroot ±MTA-IWF t-智EB-F j index. jsp 了 userLogin. j5p J userLoginSuccess jsp 模型.umr 图1.2登录项目的目录结构 那么在实际的开发中,到了这一阶段通常会做代码的正确性验证。怎么验证?把项目发 布,运行,并在浏览器中测试,就可以了。在 Package Explorer视图中选中项目节点ssh1 然后选择菜单Run> Run As>3 MyEclipse Server Application,之后 MyEclipse可能会显 示一个可用的服务器列表,选中其中的服务器之一例如 MyEclipse Tomca并点击OK按钮后 项目就会自动发布,对应的服务器会启动。好了,现在让我们在浏览器(可以用 MyEclipse 自带的,或者用, Firefox, Opera等都可以)键入地址htt/ localhost:8080/sh1,首 页显示会像这样: 游客,欢迎您,请登录 接着点击首页的登录链接,然后用户名和密码中都输入 myeclipse,之后点击登录按钮调用 刘长炯著
MyEclipse 6 Java 开发中文教程 9 刘长炯著 %> 退出系统的页面对应的功能就是使 session 失效,然后重定向到首页,代码清单如下: logout.jsp 最后,不要忘了参考 9.4.4 调整生成的代码一节的内容,在 Tomcat 下开发的时候加入 那个解决表单提交中文问题的过滤器。实际开发中千万不要漏了这一步,否则用户输入信息 的时候用不了汉字岂不是很光火。 到此为止,这个小项目的第一阶段就算开发完毕了,下图显示了这个小项目第一阶段的 文件列表(没有包含过滤器部分的类文件): 图 11.2 登录项目的目录结构 那么在实际的开发中,到了这一阶段通常会做代码的正确性验证。怎么验证?把项目发 布,运行,并在浏览器中测试,就可以了。在Package Explorer视图中选中项目节点 ssh1, 然后选择菜单Run > Run As > 3 MyEclipse Server Application,之后MyEclipse可能会显 示一个可用的服务器列表,选中其中的服务器之一例如MyEclipse Tomcat并点击OK按钮后, 项目就会自动发布,对应的服务器会启动。好了,现在让我们在浏览器(可以用MyEclipse 自带的,或者用IE,Firefox,Opera等都可以)键入地址 http://localhost:8080/ssh1/ ,首 页显示会像这样: 游客,欢迎您,请 登录。 接着点击首页的登录链接,然后用户名和密码中都输入 myeclipse,之后点击登录按钮调用
MyEclipse6Java开发中文教程 后台的 Struts Action类进行登录: 用户名: myeclipse 密码:****树 噔录陬消 登录成功后显示下面的页面: 你好 myeclipse,你已经登录成功! 返回首页 再点击“返回首页”这个链接,可以注意到这时候显示的首页内容有所不同 欢迎您, myeclipse。您现在可以:重新登录或者退出系统 点击退出系统就可以取消登录状态并重返首页。 好了,可以看到很成功,接下来我们会把后台的身份验证改成用 Hibernate访问数据库 来实现。 113添加 Hibernate功能 现在我们要把 Hibernate功能添加到当前项目,但是这步不会再反向工程生成DAO了, 因为我们最终的目的是使用Spng整合的 Hibernate DAO类。现在您可以参考743添加 Hibernate Capabilities到现有项目一章的内容来进行操作。使用 Hibernate可以大大加快 首先在 Package Explorer中选择 Hibernate demo项目,接下来,从 MyEclipse单 栏选择 My Eclipse> Project Capabilities Add Hibernate Capabilities∴.启动Add Hibernate Capabilities向导。然后在向导的第一页的 JAR Library Installati(JAR类 库安装)处点击选中单选钮 Copy checked Library Jars to project folder and add to build-path(选中的类库的AAR文件将会被复制到项目目录并添加到构造路径中去)然后 再在此单选钮下方的 Library Folder会自动选中 Web rootEB-NF目录,此过程如下 图所示。 JAR Library Installati O Add checked Libraries to project build-path O Copy checked Library Jars to project folder and add to buildpath Library folder: /webRoot/WEB-INF/libl Browse 图113添加 Hibernate类库时的选项 注意:如果您不选择这个选项,目前来说 MyEclipse自带的一些类库存在冲突现象, 这时候要修正这个问题将会非常困难,因为 MyEclipse自带的 Library定义是不能修改的 只能到发布后的 Tomcat的 webapps下面对应的应用的下 WEB-INF/mb来修改jar文件,而 且以后每次重新发布原有文件都被删掉重新复制,都要重新再修改一次才可以,非常不方便; 选中这个选择后,因为所有的jar文件都会出现在 Webroot EB-INFNIb,我们可以非常方 便的替换一次里面的jar文件就能解决冲突问题。 接着点击Next按钮,进入第二页,在这一页保持默认的选项来创建 Hibernate的全局 配置文件 hibemate. cfg. xm,然后再点击Next按钮进入第三页,点击 DB Driver右侧的现 有数据库连接列表,选择以前创建好的数据库连接例如mysq/5,然后再点击Next按钮进 刘长炯著
MyEclipse 6 Java 开发中文教程 10 刘长炯著 后台的 Struts Action 类进行登录: 用户名: myeclipse 密码: ********* 登录 取消 登录成功后显示下面的页面: 你好 myeclipse,你已经登录成功! 返回首页 再点击“返回首页”这个链接,可以注意到这时候显示的首页内容有所不同: 欢迎您,myeclipse。您现在可以:重新登录 或者 退出系统。 点击退出系统就可以取消登录状态并重返首页。 好了,可以看到很成功,接下来我们会把后台的身份验证改成用 Hibernate 访问数据库 来实现。 11.3 添加 Hibernate 功能 现在我们要把Hibernate功能添加到当前项目,但是这一步不会再反向工程生成DAO了, 因为我们最终的目的是使用Spring整合的Hibernate DAO 类。现在您可以参考 7.4.3 添加 Hibernate Capabilities 到现有项目一章的内容来进行操作。使用Hibernate可以大大加快 首先在 Package Explorer 中选择 HibernateDemo 项目,接下来, 从 MyEclipse 单 栏选择 MyEclipse > Project Capabilities > Add Hibernate Capabilities ... 来启动 Add Hibernate Capabilities 向导。然后在向导的第一页的 JAR Library Installation(JAR 类 库安装)处点击选中单选钮 Copy checked Library Jars to project folder and add to build-path(选中的类库的 JAR 文件将会被复制到项目目录并添加到构造路径中去)然后 再在此单选钮下方的 Library Folder 会自动选中/WebRoot/WEB-INF/lib 目录,此过程如下 图所示。 图 11.3 添加 Hibernate 类库时的选项 注意:如果您不选择这个选项,目前来说 MyEclipse 自带的一些类库存在冲突现象, 这时候要修正这个问题将会非常困难,因为 MyEclipse 自带的 Library 定义是不能修改的, 只能到发布后的 Tomcat 的 webapps 下面对应的应用的下 WEB-INF/lib 来修改 jar 文件,而 且以后每次重新发布原有文件都被删掉重新复制,都要重新再修改一次才可以,非常不方便; 选中这个选择后,因为所有的 jar 文件都会出现在/WebRoot/WEB-INF/lib,我们可以非常方 便的替换一次里面的 jar 文件就能解决冲突问题。 接着点击 Next 按钮,进入第二页,在这一页保持默认的选项来创建 Hibernate 的全局 配置文件 hibernate.cfg.xml,然后再点击 Next 按钮进入第三页,点击 DB Driver 右侧的现 有数据库连接列表,选择以前创建好的数据库连接例如 mysql5,然后再点击 Next 按钮进