您好,欢迎光临有路网!
Web框架技术(Struts2+Hibernate5+Spring5)教程(第2版)
QQ咨询:
有路璐璐:

Web框架技术(Struts2+Hibernate5+Spring5)教程(第2版)

  • 作者:张志锋、马军霞 等
  • 出版社:清华大学出版社
  • ISBN:9787302524298
  • 出版日期:2019年04月01日
  • 页数:0
  • 定价:¥89.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    本书旨在培养学生的Java Web框架技术实践创新和工程能力,为广大读者提供一本Java Web框架知识综合学习和积累项目开发经验的书。 全书理论联系实践,引进以项目为驱动的教学模式,详细系统地讲解Struts2、Hibernate5和Spring5框架技术,将项目开发贯穿整个知识体系。全书共分11章,内容包括Struts2框架技术入门、Struts2核心组件详解、Struts2的**组件、基于Struts2的个人信息管理系统项目实训、Hibernate5框架技术入门、Hibernate5核心组件详解、Hibernate5的**组件、基于Struts2 Hibernate5的教务管理系统项目实训、Spring5框架技术入门、Spring5的AOP框架、基于Struts2 Hibernate5 Spring5的校园论坛BBS项目实训。通过30多个小项目和3个大项目的开发实践,使读者能够掌握基本理论知识,并锻炼读者的综合应用能力。 本书可作为普通高等院校的Java Web框架技术教材,也可作为Java工程师培训教材或作为Java工程师的参考书。
    文章节选
    第5章Hibernate5框架技术入门
    在Java Web项目开发中,有许多功能模块需要连接数据库系统,实现对数据库表的操作。在Java程序设计和JSP程序设计技术中,使用JDBC技术连接数据库。为了实现与数据库的**操作,提高Java Web的项目性能,可以使用Hibernate5框架技术。本章主要介绍Hibernate5的基本内容。
    本章主要内容如下所示。
    (1) Hibernate5的发展与特点。
    (2) Hibernate5的下载与配置。
    (3) Hibernate5的工作原理。
    (4) Hibernate5的核心组件。
    (5) 基于Struts2 Hibernate5的登录和注册系统。
    5.1Hibernate5��基础知识
    Hibernate是封装了JDBC的一种开放源代码的对象关系映射(ObjectRelation Mapping,ORM)框架,使程序员可以使用面向对象的思想来操作数据库。Hibernate是一种对象关系映射的解决方案,即将Java对象与对象之间的关系映射到数据库表与表之间的关系。
    5.1.1Hibernate5的发展与特点
    目前,Hibernate是Java工程师招聘中要求**的一门技能,也是Java Web三大经典框架之一。Christian Bauer是Hibernate之父,现是Redhat公司负责开发和维护Hibernate的项目经理。
    2001年,Hibernate1发布,即Hibernate的**个版本;2003年,Hibernate2发布,并在当年获得Jolt 2003大奖(Jolt大奖素有“软件业界的奥斯卡”的美誉,共设通用类图书、技术类图书、语言和开发环境、框架库和组件、***网站等十余个分类大奖),2003年,Hibernate被JBoss公司收购,成为该公司的子项目之一;2005年,JBoss发布Hibernate3;2006年,JBoss公司被Redhat公司收购; 2012年11月发布Hibernate 4.1.8,2015年3月发布Hibernate 5.0。
    Hibernate是封装了JDBC与ORM技术的数据持久性解决方案。在Java世界中,Hibernate是众多ORM软件中获得关注*多、使用*广泛的框架。它成功地实现了透明持久化,以面向对象的HQL语句封装SQL语句,为开发人员提供了一个简单灵活且面向对象的数据访问接口。Hibernate是一个开源软件,开发人员可以很方便地获得软件源代码。当遇到问题时,程序员可以深入到源代码中查看究竟,甚至修改Hibernate内部错误并将修改方案提供给JBoss组织,从而帮助Hibernate框架技术改进。
    Hibernate自发布以来受到业界的欢迎,目前许多Java程序员学习和使用它来开发商业应用软件。另外,网络上有大量介绍和讨论Hibernate应用的文章,JBoss网站也提供了一个完善的社区,所以一旦在使用中遇到问题,***可以轻松地在网络上搜索到相应的解决方法,这又进一步吸引了更多的程序员来学习Hibernate,吸引更多的公司采用Hibernate开发软件。
    Hibernate为使用者考虑得十分周全,对于一个普通的程序员来说,只需学习不到10个类的用法就可以开发基于Hibernate框架的应用系统,实际使用起来十分方便。
    Hibernate提供了透明持久化功能,支持第三方框架,即能与其他框架进行整合,如Struts、Spring等,不但提供面向对象的HQL,而且支持传统的SQL语句。
    在基于MVC设计模式的Java Web应用中,Hibernate可以作为应用的数据访问层或持久层。它具有以下特点。
    (1) Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java工程师可以随心所欲地使用面向对象编程思维来操作数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet、JSP的Java Web应用中使用,*具革命意义的是,Hibernate可以在Java EE框架中取代CMP,完成数据持久化的重任。
    (2) Hibernate的目标是成为Java中处理数据持久性问题的一种完整解决方案。它协调应用程序与关系数据库的交互,把***解放出来专注于项目的业务逻辑问题。
    (3) Hibernate是一种非强迫性的解决方案。***在写业务逻辑和持久化类时,不会被要求遵循许多Hibernate特定的规则和设计模式。这样,Hibernate就可以与大多数新的和现有的应用程序进行集成,而不需要对应用程序的其余部分做破坏性的改动。
    5.1.2Hibernate5软件包的下载和配置
    本书的实例和项目使用的是Hibernate 5.2.12版本,2017年10月发布,如需使用Hibernate其他版本进行Web项目开发,可以在其官方网站下载。
    1. 软件包下载
    由于Hibernate先被JBoss公司收购,后来JBoss被Redhat公司收购,所以Hibernate5可以在以下3个网站下载: www.redhat.com、www.jboss.org和www.hibernate.org。根据需要在上述3个网站下载自己要使用的Hibernate版本。官方页面之一如图51所示。
    单击图51所示页面中的Hibernate ORM,出现图52。
    单击图52所示页面中的选择点5.2后,出现如图53所示的版本选择页面,在该页面的下方选择5.2.12.Final区域中的Download进行下载。
    单击图53所示页面中Download后,出现如图54所示的下载页面,选择下载路径后进行下载。
    2. Hibernate5软件包中主要文件
    解压缩hibernaterelease5.2.12.Final.zip文件后得到一个名为hibernaterelease5.2.12.Final的文件夹,该文件夹结构如图55所示。图51Hibernate官方页面
    图52选择下载页面
    图53版本选择页面图54选择下载文件下载
    图55Hibernate5文件夹结构
    (1) documentation文件夹: 该文件夹中存放了Hibernate5的相关文档,包括Hibernate5的参考文档和API文档等。
    (2) lib文件夹: 该文件夹存放Hibernate5框架的核心类库以及Hibernate5的第三方类库。该文件夹下的required子目录存放运行Hibernate5项目时必需的核心类库。
    (3) project文件夹: 该文件夹存放Hibernate5项目的源代码。
    3. Hibernate5的配置
    Hibernate5的lib文件夹有6个子目录,需要在项目的类库中添加required和jpametamodelgenerate子目录下面的所有JAR文件,其他目录中的JAR文件可根据项目的实际需求添加。例如,使用连接池需要添加lib\\optional\\c3p0下面的JAR文件和使用缓存功能需要使用lib\\optional\\chcache下面的JAR文件。
    由于NetBeans 8.2和MyEclipse 2017中都集成了Hibernate,所以可以使用工具中自带的Hibernate。集成的Hibernate版本一般不是Hibernate的*新版本。由于Hibernate各版本之间存在一些细节差异,有可能在配置文件和映射文件中存在差异导致项目无法运行。使用本书进行项目开发时建议使用Hibernate 5.2.12。在NetBeans 8.2、MyEclipse 2017和Eclipse中配置Hibernate与第1章中介绍的配置Struts 2.5.10的方法相似,这里不再介绍。
    5.1.3Hibernate5的工作原理
    Hibernate5的工作原理如图56所示。
    图56Hibernate5的工作原理
    Hibernate5的工作过程如下。
    首先,Configuration读取Hibernate5的配置文件hibernate.cfg.xml和映射文件.hbm.xml中的信息,即加载配置文件和映射文件,并通过Hibernate5配置文件生成一个多线程的SessionFactory对象;然后,多线程SessionFactory对象生成一个线程Session对象;Session对象生成Query对象或者Transaction对象;可通过Session对象的get()、load()、save()、update()、delete()和saveOrUpdate()等方法对PO进行加载、保存、更新、删除等;也可利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些数据到数据库中。
    5.2Hibernate5的核心组件
    在基于Hibernate5框架的项目开发时,非常关键的一点就是使用Hibernate5的核心类和接口,即核心组件。Hibernate5的核心组件位于业务层和持久化层之间。Hibernate5除核心组件外还包括Hibernate5配置文件(hibernate.cfg.xml或hibernate.properties)、映射文件(xxx.hbm.xml)和持久化类(Persistent Objects,PO)。
    1. Configuration
    Configuration负责配置并启动Hibernate5,创建SessionFactory对象。在Hibernate5的启动过程中,Configuration类的实例首先定位映射文件位置、读取配置,然后创建SessionFactory对象。
    2. SessionFactory
    SessionFactroy负责初始化Hibernate5。它充当数据存储源的代理,并负责创建Session对象,这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就可以了,当需要多次操作数据库时,可以为每个数据库指定一个SessionFactory线程对象。SessionFactroy是产生Session实例的工厂。
    3. Session
    Session负责执行持久化对象的操作,它用get()、load()、save()、update()和delete()等方法来对PO进行加载、保存、更新及删除等操作。但需要注意的是Session对象是非线程**的。同时,Hibernate5的Session不同于JSP应用中的HttpSession。这里使用的Session术语,其实指的是Hibernate5中的Session。
    4. Transaction
    Transaction负责事务相关的操作,用来管理Hibernate5事务,它的主要方法有commit()和rollback(),可以使用Session的beginTransaction()方法生成。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
    5. Query
    Query负责执行各种数据库查询。它可以使用HQL语言对PO进行查询操作。Query对象可以使用Session的createQuery()方法生成。
    6. Hibernate5的配置文件
    Hibernate5的配置文件主要用来配置数据库连接参数,例如,数据库的驱动程序、URL、用户名和密码、数据库方言等。它有两种格式: hibernate.cfg.xml和hibernate.properties。两者的配置内容基本相同,但前者比后者使用方便一些,如hibernate.cfg.xml 可以在其<mapping>子元素中定义用到的xxx.hbm.xml 映射文件列表,而使用hibernate.properties时则需要在程序中以编码方式指明映射文件。一般情况下,hibernate.cfg.xml是Hibernate5的默认配置文件。
    7. 映射文件
    映射文件(xxx.hbm.xml)用来把PO与数据库中的表、PO之间的关系与表之间的关系以及PO的属性与表字段一一映射起来,它是Hibernate5的核心文件。
    8. 持久化对象
    持久化对象(Persistent Object,PO)可以是普通的JavaBean,**特殊的是它们与Session相关联。PO在Hibernate5中存在三种状态: 临时状态(Transient)、持久化状态(Persistent)和脱管状态(Detached)。当一个JavaBean对象在内存中孤立存在不与数据库中的数据有任何关联关系时,那么这个JavaBean对象就称为临时对象(Transient Object);当它与一个Session相关联时,就变成持久化对象;在这个Session被关闭的同时,这个对象也会脱离持久化状态,变成脱管对象(Detached Object),这时可以被应用程序的任何层自由使用,例如,可用作与表示层(V)打交道的数据传输对象。
    5.3基于Struts2和Hibernate5的登录和注册系统
    下面使用Struts 2.5.10和Hibernate 5.2.12开发一个实现登录和注册功能的项目,该项目的文件结构如图57所示。将项目中使用到的Struts 2.5.10、Hibernate 5.2.12以及MySQL 5.5驱动的JAR文件添加到项目ch05的“库”中,如图58所示。
    图57项目的文件结构
    图58项目所需的JAR文件



    1. 项目介绍
    本项目实现用户登录和用户注册功能。有一个登录页面(login.jsp),代码如例51所示,登录页面对应的业务控制器为LoginAction,该Action中覆盖了validate()方法,使用手工验证对登录页面进行验证,该业务控制器类代码如例54所示,如果输入的用户名和密码都正确,进入登录成功页面(success.jsp),代码如例52所示;如果用户没有注册需先注册,注册页面(register.jsp)代码如例53所示,该注册页面对应的业务控制器为RegisterAction,代码如例55所示,注册成功后返回登录页面。还需要配置web.xml,代码如例13所示;在struts.xml中配置Action,代码如例56所示。
    该项目使用MySQL数据库。数据库名为test,有一张名为info的表,表的字段名称、类型以及长度如图59所示。
    图59数据库info表的结构
    在基于Struts2 Hibernate5的项目开发中,连接数据库时需要Hibernate5的配置文件hibernate.cfg.xml或者hibernate.properties,本项目使用的是hibernate.cfg.xml,代码如例57所示,配置文件主要用于加载数据库的驱动以及与数据库建立连接等,该配置文件一般与struts.xml文件放在同一位置,参考图58。该配置文件在项目运行时需要加载,本项目编写一个加载该配置文件的类HibernateSessionFactory,该类封装了配置文件的加载方法,即加载配置文件的JavaBean,代码如例58所示。
    另外,在使用Hibernate5时,项目所用数据库中的每一张表都对应一个持久化对象PO。通过PO把页面中的数据保存起来并把数据存到数据库中。为了简化开发,本项目的登录页面和注册页面都使用同一张表,登录页面和注册页面中的数据都保存在UserInfoPO中,代码如例59所示。每个PO一般都会对应一个映射文件UserInfoPO.hbm.xml,代码如例510所示,映射文件配置PO与数据库中表之间的映射关系;映射文件一般都放在和其对应的PO所在包中。为了封装登录和注册功能对数据的操作,即登录和注册页面要实现的业务逻辑,本项目编写一个名为LoginRegisterInfo的JavaBean,该类提供了登录和注册业务处理,可以实现登录和注册的持久化业务操作,代码如例511所示。
    以上文件所在的路径可参考项目文件结构图57。
    2. 在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter
    参考1.3.1节中的例13。
    3. 编写视图组件(JSP页面)
    登录页面(login.jsp)运行效果如图510所示,代码如例51所示。
    图510登录页面
    【例51】登录页面(login.jsp)。<%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@taglibprefix="s" uri="/struts-tags" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title><s:text name="基于SH的应用"></s:text></title>
    </head>
    <body bgcolor="#CCCCFF">
    <s:form action="login" method="post">
    <br><br><br><br><br><br>
    <table border="1" align="center" bgcolor="#AABBCCDD">
    <tr>
    <td>
    <s:textfield name="userName" label="用户名字"
    size="16"/>
    </td>
    </tr>
    <tr>
    <td>
    <s:password name="password" label="用户密码"
    size="16"/>
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <s:submit value="登录"/>
    </td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <s:a href="http://localhost:8084/ch05/register.jsp">注册
    </s:a>
    </td>
    </tr>
    </table>
    </s:form>
    </body>
    </html>登录成功页面(success.jsp),代码如例52所示。
    【例52】登录成功页面(success.jsp)。<%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@taglibprefix="s" uri="/struts-tags" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title><s:text name="基于SH的应用"></s:text></title>
    </head>
    <body bgcolor="#CCCCFF">
    <hr>
    <table border="0" align="center" bgcolor="#AABBCCDD">
    <tr>
    <td>
    欢迎${userName},登录成功!
    </td>
    </tr>
    </table>
    <hr>
    </body>
    </html>注册页面(register.jsp)如图511所示,代码如例53所示。
    图511注册页面
    【例53】注册页面(register.jsp)。<%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@taglibprefix="s" uri="/struts-tags" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title><s:text name="基于SH的应用"></s:text></title>
    </head>
    <body bgcolor="#CCCCFF">
    <s:form action="register" method="post">
    <br><br><br><br><br><br>
    目录
    目录 第1章Struts2框架技术入门1 1.1Struts2的基础知识1 1.1.1Struts2的由来与发展1 1.1.2Struts2软件包的下载和配置2 1.1.3MVC设计模式15 1.1.4Struts2的工作原理16 1.2Struts2的核心组件17 1.2.1Struts2的控制器组件17 1.2.2Struts2的模型组件18 1.2.3Struts2的视图组件20 1.3基于Struts2的登录系统21 1.3.1使用NetBeans8开发项目21 1.3.2使用MyEclipse 2017开发项目26 1.3.3使用Eclipse开发项目33 1.4本章小结34 1.5习题34 1.5.1选择题34 1.5.2填空题35 1.5.3简答题35 1.5.4实训题35第2章Struts2核心组件详解36 2.1Struts2的配置文件struts.xml36 2.1.1struts.xml配置文件的结构36 2.1.2Bean配置37 2.1.3常量配置38 2.1.4包含配置39 2.1.5包配置40 2.1.6命名空间配置41 2.1.7Action配置42 2.1.8结果配置43 2.1.9拦截器配置43 2.2Struts2的核心控制器StrutsPrepareAndExecuteFilter43 2.3Struts2的业务控制器Action44 2.3.1Action接口和ActionSupport类44 2.3.2Action实现类48 2.3.3Action访问ActionContext49 2.3.4Action直接访问Servlet54 2.3.**ction中的动态方法调用57 2.4Struts2的OGNL表达式62 2.4.1Struts2的OGNL表达式62 2.4.2Struts2的OGNL集合66 2.5Struts2的标签库67 2.5.1Struts2的标签库概述67 2.5.2Struts2的表单标签67 2.5.3Struts2的非表单标签75 2.5.4Struts2的数据标签78 2.5.5Struts2的控制标签85 2.6本章小结94 2.7习题94 2.7.1选择题94 2.7.2填空题95 2.7.3简答题95 2.7.4实训题95第3章Struts2的**组件96 3.1Struts2的国际化96 3.1.1Struts2实现国际化的流程96 3.1.2Struts2国际化应用实例99 3.2Struts2的拦截器104 3.2.1Struts2拦截器的基础知识104 3.2.2Struts2拦截器实现类105 3.2.3Struts2拦截器应用实例106 3.3Struts2的输入校验110 3.3.1Struts2输入验证的基础知识110 3.3.2Struts2的手工验证117 3.3.3Struts2内置校验器的使用121 3.3.4Struts2内置校验器应用实例127 3.4Struts2的文件上传和下载134 3.4.1文件上传134 3.4.2文件下载140 3.5本章小结144 3.6习题145 3.6.1选择题145 3.6.2填空题145 3.6.3简答题145 3.6.4实训题146第4章基于Struts2的个人信息管理系统项目实训147 4.1项目需求说明147 4.2项目系统分析147 4.3项目的数据库设计148 4.4项目实现150 4.4.1项目文件结构150 4.4.2用户登录和注册功能的实现151 4.4.3系统主页面功能的实现184 4.4.4个人信息管理功能的实现188 4.4.5通讯录管理功能的实现202 4.4.6日程安排管理功能的实现218 4.4.7个人文件管理功能的实现236 4.5本章小结249 4.6习题249 实训题249第5章Hibernate5框架技术入门250 5.1Hibernate5的基础知识250 5.1.1Hibernate5的发展与特点250 5.1.2Hibernate5软件包的下载和配置251 5.1.3Hibernate5的工作原理254 5.2Hibernate5的核心组件254 5.3基于Struts2和Hibernate5的登录和注册系统255 5.4本章小结270 5.5习题270 5.5.1选择题270 5.5.2填空题270 5.5.3简答题270 5.5.4实训题271第6章Hibernate5核心组件详解272 6.1Hibernate5的配置文件272 6.1.1hibernate.cfg.xml272 6.1.2hibernate.properties275 6.2Hibernate5的持久化对象278 6.2.1Hibernate5的持久化对象基础知识278 6.2.2Hibernate5的持久化对象状态279 6.3Hibernate5的映射文件281 6.4Hibernate5的Configuration类284 6.5Hibernate5的SessionFactory接口284 6.6Hibernate5的Session接口285 6.6.1Session接口的基础知识285 6.6.2通过方法获取持久化对象286 6.6.3操作持久化对象的常用方法287 6.7Hibernate5的Transaction接口290 6.8Hibernate5的Query接口291 6.8.1Query接口的基本知识291 6.8.2Query接口的常用方法292 6.9基于Struts2 Hibernate5的学生信息管理系统294 6.9.1项目介绍、主页面以及查看学生信息功能的实现295 6.9.2添加学生信息功能的实现304 6.9.3修改学生信息功能的实现308 6.9.4删除学生信息功能的实现316 6.10本章小结318 6.11习题319 6.11.1选择题319 6.11.2填空题319 6.11.3简答题319 6.11.4实训题320第7章Hibernate5的**组件321 7.1利用关联关系操纵对象321 7.1.1一对一关联关系321 7.1.2一对一关联关系的应用实例324 7.1.3一对多关联关系336 7.1.4一对多关联关系的应用实例338 7.1.5多对多关联关系345 7.1.6多对多关联关系的应用实例346 7.2Hibernate5数据查询355 7.2.1Hibernate Query Language 355 7.2.2Criteria Query方式358 7.2.3Native SQL查询358 7.3Hibernate5的事务管理358 7.3.1事务的特性358 7.3.2事务隔离359 7.3.3在Hibernate5配置文件中设置隔离级别360 7.3.4在Hibernate5中使用JDBC事务360 7.3.5在Hibernate5中使用JTA事务361 7.4Hibernate5的Cache管理361 7.4.1一级Cache362 7.4.2二级Cache362 7.5本章小结363 7.6习题363 7.6.1选择题363 7.6.2填空题364 7.6.3简答题364 7.6.4实训题364第8章基于Struts2 Hibernate5的教务管理系统项目实训365 8.1项目需求说明365 8.2项目系统分析365 8.3项目的数据库设计367 8.4项目实现369 8.4.1项目文件结构369 8.4.2用户登录功能的实现370 8.4.3学生管理功能的实现396 8.4.4管理员管理功能的实现409 8.4.5教师管理功能的实现415 8.5本章小结415 8.6习题416 实训题416第9章Spring5框架技术入门417 9.1Spring5的基础知识417 9.1.1Spring5的由来与发展417 9.1.2Spring5的下载与配置418 9.1.3Spring5框架的体系结构421 9.2Spring5 IoC的原理和主要组件423 9.2.1IoC的基础知识以及原理423 9.2.2IoC的主要组件429 9.2.3IoC的应用实例432 9.2.4注入的两种方式440 9.3基于Struts2 Hibernate5 Spring5的登录系统443 9.3.1项目介绍443 9.3.2在web.xml中配置Struts2和Spring5445 9.3.3编写视图组件446 9.3.4Action和JavaBean446 9.3.5Struts2、Spring5和Hibernate的配置文件450 9.3.6Struts2、Spring5和Hibernate整合中常见问题452 9.3.7项目部署和运行452 9.4本章小结453 9.5习题454 9.5.1选择题454 9.5.2填空题454 9.5.3简答题454 9.5.4实训题454第10章Spring5的AOP框架455 10.1AOP框架基础知识455 10.1.1AOP框架简介455 10.1.2Spring5的AOP框架主要术语457 10.2代理458 10.2.1静态代理458 10.2.2动态代理461 10.3创建通知463 10.3.1前置通知及应用实例463 10.3.2后置通知及应用实例466 10.3.3环绕通知及应用实例468 10.3.4异常通知及应用实例470 10.3.5引入通知473 10.4定义切入点473 10.4.1静态切入点和动态切入点473 10.4.2切入点的应用实例474 10.5创建引入478 10.6本章小结479 10.7习题479 10.7.1选择题479 10.7.2填空题479 10.7.3简答题479 10.7.4实训题480第11章基于Struts2 Hibernate5 Spring5的校园论坛BBS项目实训481 11.1项目需求分析481 11.2项目分析与设计482 11.3项目的数据库设计483 11.4项目实现485 11.4.1项目的文件结构和主页面485 11.4.2BBS登录功能的实现527 11.4.3BBS板块管理功能的实现536 11.4.4BBS帖子管理功能的实现544 11.4.5个人信息管理功能的实现574 11.5本章小结584 11.6习题584 实训题584参考文献585

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外