Java EE核心框架实战 第二版出版时间:2017内容简介 《Java EE核心框架实战(第2版)》的宗旨是提高读者学习Java EE的效率,增强其项目实战能力。为此,本书摒弃了软件公司中不常用或不实用的技术,而是采用近200个开发案例,为读者讲解了开发商业软件的知识,帮助读者进行“精要”式的学习,汲取Java EE的思想,正确地进行项目实战。《Java EE核心框架实战(第2版)》涵盖了MyBatis 3、Struts 2、Ajax、JSON、jQuery、Spring 4 MVC、Hibernate 5、Spring 4等主流Java EE框架的核心开发技术,介绍了MVC框架的原理实现、上传、下载、数据验证、国际化、多模块分组开发、转发/重定向、JSON的解析;将Ajax及JSON和MVC框架进行整合开发;ORM框架的CURD操作以及MyBatis和Hibernate中的映射文件使用。本书还使用大量篇幅介绍了Spring 4中的核心技术DI与AOP,以及企业中常用框架的整合开发,框架包含Struts 2、Spring 4 MVC、MyBatis 3、Hibernate 5、Spring 4整合开发等内容。《Java EE核心框架实战(第2版)》语言简洁,示例丰富,可帮助读者迅速掌握使用主流开源Java EE框架进行开发所需的各种技能。本书适合具有一定Java编程基础的读者,以及使用Java进行软件开发、测试的从业人员阅读。目录第1章 MyBatis 3操作数据库 11.1 MyBatis介绍 11.2 MyBatis基本使用 41.2.1 使用XML配置文件创建SqlSessionFactory对象 51.2.2 SqlSessionFactoryBuilder和SqlSessionFactory类信息 71.2.3 使用MyBatis Generator工具逆向操作Oracle数据库 71.2.4 使用MyBatis Generator工具逆向操作MySQL数据库 141.3 使用MyBatis实现CURD-2种数据库(Oracle-MySQL) 161.3.1 针对Oracle的CURD 171.3.2 针对MySQL的CURD 231.3.3 SQL映射文件中namespace命名空间的作用 241.4 MyBatis核心对象的生命周期与封装 261.4.1 创建GetSqlSessionFactory.java类 271.4.2 创建GetSqlSession.java类 281.4.3 创建DBOperate.java类 291.4.4 创建userinfoMapping.xml映射文件 291.4.5 创建连接数据库mybatis-config.xml配置文件 301.4.6 创建名称为test的Servlet对象 301.4.7 添加记录及异常回滚的测试 311.4.8 删除记录 331.4.9 更改记录 341.4.10 查询单条记录 351.4.11 查询多条记录 36第2章 MyBatis 3必备开发技能 372.1 使用getMapper()面向接口编程 372.1.1 接口-SQL映射的对应关系 372.1.2 创建Userinfo.java实体类 382.1.3 创建UserinfoMapper.java接口 382.1.4 创建SQL映射文件UserinfoMapper.xml 392.1.5 增加记录insert的操作代码 392.1.6 查询全部selectAll的操作代码 412.1.7 查询单条记录selectById的操作代码 412.1.8 修改记录updateById的操作代码 422.1.9 删除记录deleteById的操作代码 432.2 使用typeAliases配置别名 432.2.1 使用typeAlias单独配置别名 442.2.2 使用package批量配置别名 442.3 使用properties文件保存数据库信息 462.3.1 在mybatis-config.xml配置文件中读取properties文件中的参数 462.3.2 将数据库信息封装进properties属性文件中 472.4 与数据源DataSource有关的操作 492.4.1 配置多个environment环境 492.4.2 什么是JNDI以及如何从JNDI获得数据源DataSource 502.4.3 如何在MyBatis中使用数据源DataSource 542.4.4 在MyBatis中使用HikariCP连接池 572.5 多数据库执行不同SQL语句的支持 602.6 多种获取Mapper的方式 612.7 MyBatis3的SQL映射文件与动态SQL 622.7.1 标签 622.7.2 标签 642.7.3 使用${}拼接SQL语句 652.7.4 插入null值时的处理第1种方法jdbcType 672.7.5 插入null值时的处理第2种方法 682.7.6 标签 692.7.7 标签的使用 712.7.8 标签的使用 722.7.9 标签的使用 732.7.10 使用标签对like语句进行适配 772.8 插入超大的字符串String文本内容 812.9 对查询的数据进行分页 842.10 批处理SQL语句 86第3章 Struts 2必备开发技能 883.1 使用Struts 2进行登录功能的开发 883.1.1 为什么要使用MVC 893.1.2 准备jar文件 943.1.3 创建Web项目、添加jar文件及配置web.xml文件 963.1.4 创建控制层Controller文件-Login.java 963.1.5 创建业务逻辑层Model文件-UserinfoService.java 973.1.6 创建视图层View文件-login.jsp 983.1.7 添加核心配置文件struts.xml及解释 983.1.8 添加ok.jsp和no.jsp登录结果文件 993.1.9 运行项目 993.1.10 Struts 2的拦截器 1013.1.11 Struts 2的数据类型自动转换 1063.2 MVC框架的开发模型 1123.2.1 基础知识准备1——XML文件的CURD 1133.2.2 基础知识准备2——Java的反射 1203.2.3 实现MVC模型——自定义配置文件 1223.2.4 实现MVC模型——ActionMapping.java封装信息 1233.2.5 实现MVC模型——ResultMapping.java封装信息 1243.2.6 实现MVC模型——管理映射信息的ActionMappingManager.java对象 1243.2.7 实现MVC模型——创建反射Action的ActionManager.java对象 1263.2.8 实现MVC模型——创建核心控制器ActionServlet.java 1273.2.9 实现MVC模型——创建Action接口及控制层Controller实现类 1293.2.10 实现MVC模型——创建视图层V对应的JSP文件 1303.2.11 实现MVC模型——在web.xml中配置核心控制器 1313.2.12 实现MVC模型——运行效果 1313.3 Struts 2的刷新验证功能 1313.3.1 Action接口 1323.3.2 Validateable和ValidationAware接口 1333.3.3 TextProvider和LocaleProvider接口 1343.3.4 使用ActionSupport实现有刷新的验证 1343.4 对Struts 2有刷新验证的示例进行升级 1373.4.1 加入xml配置来屏蔽自动生成的table/tr/td代码 1373.4.2 解决“出错信息不能自动显示”的问题 1393.5 用标签显示全部出错信息 1423.6 出错信息进行传参及国际化 1443.6.1 创建info_en_US.properties和info_zh_CN.properties属性文件 1443.6.2 在JSP文件中显示国际化的静态文本 1473.6.3 在JSP文件中显示国际化的静态文本时传递参数 1493.6.4 在Action中使用国际化功能 1493.7 用实体类封装URL中的参数——登录功能的URL封装 1513.8 Struts 2中的转发操作 1533.8.1 Servlet中的转发操作 1533.8.2 Struts 2中的转发操作 1543.9 由Action重定向到Action——无参数 1573.9.1 什么样的情况下使用重定向 1573.9.2 新建起始控制层Login.java 1573.9.3 新建目的控制层List.java 1573.9.4 在struts.xml文件中配置重定向的重点 1583.9.5 新建显示列表的JSP文件 1593.10 由Action重定向到Action——有参数 1593.10.1 什么样的情况下需要重定向传递参数 1593.10.2 新建起始控制层Login.java文件 1593.10.3 更改struts.xml配置文件 1603.10.4 新建目的控制层List.java文件 1613.10.5 用JSTL和EL在JSP文件中打印数据 1623.11 让Struts 2支持多模块多配置文件开发 1643.11.1 新建4个模块的控制层 1643.11.2 新建3个模块的配置文件 1653.11.3 使用include标记导入多个配置文件 1673.11.4 创建各模块使用的JSP文件 1673.11.5 运行各模块的效果 1683.12 在Action中有多个业务方法时的处理 1693.13 自定义全局result 1713.13.1 新建全局result实例和控制层代码 1713.13.2 声明全局的result对象 1723.13.3 部属项目并运行 1723.14 在Action中使用servlet的API(紧耦版) 1733.14.1 将数据放到不同的作用域中 1733.14.2 从不同作用域中取值 1743.15 在Action中使用Servlet的API(松耦版) 1753.15.1 新建控制层 1753.15.2 新建JSP视图 176第4章 Struts 2文件的上传与下载 1784.1 使用Struts 2进行单文件上传 1784.1.1 Struts 2上传功能的底层依赖 1784.1.2 新建上传文件的JSP文件 1784.1.3 新建上传文件的控制层Register.java文件 1794.1.4 Action中File实例的命名规则 1804.1.5 设置上传文件的大小 1804.1.6 设计struts.xml配置文件 1804.1.7 成功上传单个文件 1814.2 使用Struts 2进行多文件上传 1814.2.1 新建上传多个文件的JSP 1824.2.2 设计上传的控制层代码 1824.2.3 成功上传多个文件 1844.3 使用属性驱动形式的文件上传 1854.3.1 创建上传多个文件的JSP 1854.3.2 设计上传文件的控制层 1864.3.3 新建上传文件的封装类 1874.3.4 将JSP文件中s:file标签的name属性进行更改 1884.3.5 以属性驱动方式成功上传多个文件 1894.4 用Struts 2实现下载文件的功能(支持中文文件名与IE和FireFix兼容) 1904.4.1 新建下载文件的JSP文件 1904.4.2 新建下载文件的控制层文件 1914.4.3 更改struts.xml配置文件 1924.4.4 成功下载中文文件名的文件 192第5章 JSON、Ajax和jQuery与Struts 2联合使用 1935.1 JSON介绍 1935.2 用JSON创建对象 1945.2.1 JSON创建对象的语法格式 1945.2.2 在JSP中用JSON创建一个对象 1945.2.3 运行效果 1945.3 用JSON创建字符串的限制 1955.3.1 需要转义的特殊字符 1955.3.2 在JSP中对JSON特殊字符进行转义 1955.3.3 运行效果 1965.4 用JSON创建数字类型语法格式 1965.4.1 在JSP中用JSON创建数字类型 1965.4.2 运行效果 1975.5 用JSON创建数组对象的语法格式 1975.5.1 JSON创建一个数组对象 1985.5.2 运行效果 1985.6 用JSON创建嵌套的对象类型 1985.7 将对象转成JSON字符串 2005.7.1 什么情况下需要将对象转成JSON字符串 2005.7.2 使用stringify方法将对象转成JSON字符串 2005.8 将对象转成JSON字符串提交到Action并解析(以post方式提交) 2015.8.1 在JSP中创建JSON和Ajax对象 2015.8.2 用Action控制层接收通过Ajax传递过来的JSON字符串 2025.8.3 运行效果 2035.8.4 在控制台输出的数据 2045.9 将对象转成JSON字符串提交到Action并解析(get方式提交) 2045.9.1 新建创建JSON字符串的JSP文件 2045.9.2 新建接收JSON字符串的Action控制层 2055.9.3 运行结果 2065.9.4 在控制台输出的数据 2065.10 将数组转成JSON字符串提交到Action并解析(get和post方式提交) 2075.10.1 在服务器端用get方法解析JSON字符串 2085.10.2 在服务器端用post方法解析JSON字符串 2095.10.3 运行结果 2105.10.4 在控制台输出的数据 2105.11 使用Ajax调用Action并生成JSON再传递到客户端(get和post方式提交) 2105.11.1 新建具有Ajax提交功能的JSP 2115.11.2 在Action控制层创建List中存String 2135.11.3 在Action控制层创建List中存Bean 2145.11.4 在Action控制层创建Map中存放的String 2155.11.5 在Action控制层创建Map中存放的Bean 2165.11.6 单击不同的button按钮调用不同的Action 2175.12 jQuery、JSON和Struts 2 2185.12.1 jQuery框架的Ajax功能介绍 2185.12.2 用jQuery的Ajax功能调用远程action(无返回结果) 2195.12.3 jQuery的Ajax方法结构 2205.12.4 用jQuery的Ajax功能调用远程action(有返回结果) 2215.12.5 用jQuery的Ajax功能调用远程action并且传递JSON格式参数(有返回值) 2235.12.6 用jQuery解析从action返回List中存String的JSON字符串 2265.13 在服务器端解析复杂结构的JSON对象 228第6章 用Hibernate 5操作数据库 2306.1 Hibernate概述与优势 2306.2 持久层、持久化与ORM 2316.3 用MyEclipse开发第一个Hibernate示例 2336.3.1 在MyEclipse中创建MyEclipse Database Explorer数据库连接 2336.3.2 创建Web项目并添加Hibernate框架 2356.3.3 开始Hibernate逆向 2396.3.4 数据访问层DAO与实体类entity的代码分析 2416.3.5 使用Hibernate进行持久化 2426.3.6 映射文件Userinfo.hbm.xml的代码分析 2436.3.7 查询—修改—删除的操作代码 2456.3.8 其他类解释 247第7章 Hibernate 5核心技能 2487.1 工厂类HibernateSessionFactory.java中的静态代码块 2487.2 SessionFactory介绍 2497.3 Session介绍 2497.4 使用Session实现CURD功能 2507.4.1 数据表userinfo结构与映射文件 2507.4.2 创建SessionFactory工厂类 2517.4.3 添加记录 2517.4.4 查询单条记录 2527.4.5 更改记录 2537.4.6 删除记录 2537.5 Hibernate使用JNDI技术 2547.5.1 备份Tomcat/conf路径下的配置文件 2547.5.2 更改配置文件context.xml 2547.5.3 更改配置文件web.xml 2547.5.4 添加Hibernate框架配置的关键步骤 2557.5.5 逆向工程 2557.5.6 支持JNDI的hibernate.cfg.xml配置文件内容 2557.5.7 创建查询数据的Servlet 2567.5.8 部属项目验证结果 2567.6 缓存与实体状态 2567.6.1 Hibernate的OID与缓存 2567.6.2 Hibernate中的对象状态:瞬时状态、持久化状态和游离状态 2587.7 双向一对多在MyEclipse中的实现 2587.7.1 添加主表记录 2617.7.2 添加子表记录 2627.7.3 更改主表数据 2627.7.4 更改子表数据 2627.7.5 删除子表数据 2637.7.6 删除主表main数据 2637.7.7 通过主表获取子表数据 2647.8 Hibernate备忘知识点 2657.9 对主从表结构中的HashSet进行排序 2677.10 延迟加载与load()和get()的区别 2677.10.1 主从表表结构的设计 2677.10.2 对省表和市表内容的添充 2687.10.3 更改映射文件 2687.10.4 新建测试用的Servlet对象 2687.10.5 更改映射文件Sheng.hbm.xml 2697.11 Hibernate对Oracle中CLOB字段类型的读处理 2707.12 Hibernate中的inverse与cascade的测试 270第8章 Hibernate 5使用HQL语言进行检索 2758.1 Hibernate的检索方式 2758.1.1 HQL表别名 2768.1.2 HQL对结果进行排序与list()和iterator()方法的区别 2788.1.3 HQL索引参数绑定 2818.1.4 HQL命名参数绑定与安全性 2828.1.5 HQL方法链的使用 2848.1.6 HQL中的uniqueResult方法的使用 2848.1.7 HQL中的where子句与查询条件 2858.1.8 查询日期——字符串格式 2878.1.9 查询日期——数字格式 2888.1.10 分页的处理 2898.1.11 HQL中的聚集函数:distinct-count-min-max-sum-avg 2908.1.12 HQL中的分组查询 292第9章 JPA核心技能 2949.1 什么是JPA以及为什么要使用JPA 2949.2 搭建JPA开发环境与逆向 2959.3 分析逆向出来的Java类 3009.4 使用IUserinfoDAO.java接口中的方法 3019.4.1 方法public void save(Userinfo entity)的使用 3029.4.2 方法public Userinfo findById(Long id)的使用 3039.4.3 方法public List findByProperty(String propertyName, final Object value, final int... rowStartIdxAndCount)的使用 3049.4.4 方法public List findByUsername(Object username, int... rowStartIdxAndCount)的使用 3049.4.5 方法public List findByPassword(Object password, int... rowStartIdxAndCount)的使用 3049.4.6 方法public List findByAge(Object age, int... rowStartIdxAndCount)的使用 3059.4.7 方法public List findAll(final int... rowStartIdxAndCount)的使用 3059.4.8 方法public Userinfo update(Userinfo entity)的使用 3059.4.9 方法public void delete(Userinfo entity)的使用 3069.5 JPA核心接口介绍 3069.5.1 类Persistence 3069.5.2 JPA中的事务类型 3079.5.3 接口EntityManagerFactory 3089.5.4 接口EntityManager 3089.6 实体类的状态 3089.7 使用原生JPA的API实现1个添加记录的操作 3099.8 从零开始搭建JPA开发环境 3099.9 EntityManager核心方法的使用 3119.9.1 方法void persist(Object entity)保存一条记录 3119.9.2 T merge(T entity)方法和 T find(Class entityClass, Object primaryKey)方法 3119.9.3 方法void remove(Object entity) 3129.9.4 getReference(Class, Object)方法 3129.9.5 createNativeQuery(string)方法 3159.9.6 clear()和contains(Object)方法 3179.9.7 createQuery(String)方法 3199.10 双向一对多的CURD实验 3199.10.1 逆向Main.java和Sub.java实体类 3199.10.2 创建Main 3229.10.3 创建Sub 3229.10.4 更新Main 3239.10.5 更新Sub 3239.10.6 删除Main时默认将Sub也一同删除 3249.10.7 从Main加载Sub时默认为延迟加载 3249.11 JPQL语言的使用 3259.11.1 参数索引式查询 3259.11.2 命名式参数查询 3269.11.3 JPQL支持的运算符与聚合函数与排序 3269.11.4 is null为空运算符的使用 3279.11.5 查询指定字段的示例 3279.11.6 JPQL语言对日期的判断 3299.11.7 JPQL语言中的分页功能 331第10章 Spring 4的DI与AOP 33210.1 Spring介绍 33210.2 依赖注入 33310.3 DI容器 33310.4 AOP的介绍 33410.5 Spring的架构 33410.6 一个使用传统方式保存数据功能的测试 33510.7 在Spring中创建JavaBean 33610.7.1 使用xml声明法创建对象 33710.7.2 使用Annotation注解法创建对象 34010.8 DI的使用 35010.8.1 使用xml声明法注入对象 35010.8.2 使用注解声明法注入对象 35210.8.3 多实现类的歧义性 35310.8.[email protected]10.8.[email protected]10.8.[email protected]10.8.[email protected](required = false)的写法 35810.8.[email protected] 上一篇: 高可用MySQL(第2版)[ (美)贝尔] 2017年版 下一篇: 数据产品经理必修课:从零经验到令人惊艳