Java Web整合开发完全自学手册

出版时间:2009-1  出版社:白广元、 等 机械工业出版社 (2009-01出版)  作者:白广元  页数:517  
Tag标签:无  

前言

本书叙述的Struts、Hibernate、Spring、Eclipse无论在已有项目的选用比例和在开发人员中的认知度上都是最有影响力和号召力的。正是由于这4个框架备受关注,其社区也空前得活跃,使得这4个项目的版本进展也非常得快。

内容概要

  如何整合Struts+Hibernate+Spring+Eclipse进行J2EE开发,所有实例都基于MyEclipse IDE开发,引领读者快速进入基于Java Web的J2EE应用领域。《Java Web整合开发完全自学手册》主要介绍Struts、Hibernate、Spring、Eclipse的基础知识,如何整合这4个开源框架进行J2EE开发,如何基于MyEclipse IDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、Spring、Eclipse四个框架的使用,如何整合Struts+Hibernate+Spring+Eclipse框架。Struts+Hibernate+Spring+Eclipse已经成为轻量级开发J2EE的标准配置,被称为SHS经典组合,这也是目前Java程序员必须掌握的技能。由于使用范围广也使它们的版本更替非常之快,尤其是Java 5推出以后这些项目都采用了Java 5中的特性来重新实现并增加了很多新特性。以国内使用最广泛的Struts为例,其新版本Struts 2与前一版Struts1.x已经有了天壤之别。Hibernate也从2.0升级为3.X,近期Spring也最新推出了2.5版。读者如果再参考以前的版《Java Web整合开发完全自学手册》籍学习,无异于南辕北辙,而《Java Web整合开发完全自学手册》的编写就是基于当前最新的版本,也着重于新版本中新功能的介绍。 《Java Web整合开发完全自学手册》适合Java开发Web应用和J2EE的初学者阅读,同时也适合有一定基础并希望提高自己的系统设计水平的读者阅读。《Java Web整合开发完全自学手册》的重点第二篇Struts、第三篇Hibernate、第四篇Spring采用了相似的行文结构,条理清楚,不仅可作为step by step的入门书籍,也可作为读者自学的案头参考书。

书籍目录

写给自学编程的人员前言第一篇 Java开发Web应用第1章 Web应用的发展1.1 从静态网页说起1.2 动态网页的鼻祖CGI1.3 三足鼎立1.3.1 系出名门-ASP和ASP.NET1.3.2 草根中走出的巨人-PHP1.3.3 来自Java阵营-JSP和J2EE1.4 模型-视图-控制器(MVC)1.4.1 MVC简介1.4.2 MVC的组成1.4.3 MVC带来的好处1.5 Ajax的兴起1.5.1 什么是Ajax1.5.2 Ajax的工作原理1.5.3 Ajax的优势所在1.6 小结第2章 学习JSP2.1 环境准备2.1.1 安装JDK2.1.2 安装Tomcat2.1.3 安装MyEclipse2.2 第一个JSP程序2.2.1 JSP的工作原理2.2.2 JSP目录结构2.2.3 解读web.xml2.2.4 编写第一个JSP2.2.5 发布与测试2.3 JSP基本的语法2.3.1 给JSP加注释2.3.2 在JSP中声明变量和函数2.3.3 用JSP表达式输出结果2.3.4 用JSP脚本实现程序逻辑2.4 编译指令和动作标签2.4.1 使用page指令2.4.2 用include指令插入其他JSP2.4.3 用taglib指令引入标签库2.4.4 用forward标签跳转页面2.4.5 动态插入文件2.4.6 用标签操作JavaBean2.4.7 其他动作标签2.5 JSP的内置对象2.5.1 使用Request对象获取请求2.5.2 使用Response对象做应答2.5.3 在Session对象中保存用户会话2.5.4 Application对象、pageContext对象和JSP的Scope2.5.5 使用Out对象输出2.5.6 在Exception对象中处理异常2.5.7 Page对象和Config对象2.6 Servlet2.6.1 Servlet简介2.6.2 创建Servlet2.6.3 过滤器(Filter)2.6.4 监听器(Listener)2.7 自定义JSP标签2.7.1 标签库简介2.7.2 创建标签的处理类2.7.3 创建标签库描述文件2.7.4 使用自定义标签2.7.5 JSP2.0中新增的标签定义方法2.8 小结第二篇 Struts2第3章 Struts2概述3.1 Struts项目简介3.2 Struts2的前世今生3.3 Web世界中的MVC3.3.1 MVC在Web中的发展3.3.2 前端控制器和页面控制器3.4 为什么要使用Struts23.4.1 框架的意义3.4.2 Struts2的优势3.5 小结第4章Struts2入门4.1 下载与安装Struts24.1.1 下载Struts24.1.2 发布Struts2自带的例子4.2 第一个Struts2程序4.2.1 配置web.xml4.2.2 编写JSP界面4.2.3 编写Action类4.2.4 添加映射到配置文件4.3 发布与测试4.3.1 发布4.3.2 测试结果4.3.3 分析处理流程4.4 小结第5章 Struts2的核心概念5.1 术语概述5.2 Struts2的体系结构5.3 Struts2的配置文件5.3.1 全局配置文件-struts.properties5.3.2 核心配置文件-struts.xml5.3.3 struts.xml的默认实现5.3.4 Velocity模板规则文件5.4 struts.xml的配置5.4.1 Action配置5.4.2 Result配置5.4.3 拦截器(Interceptor)配置5.4.4 包(Package)配置5.4.5 命名空间(Namespace)配置5.4.6 在struts.xml中定义Bean5.4.7 在struts.xml中使用通配符5.5 实现Action5.5.1 实现Action接口5.5.2 扩展ActionSupport类5.5.3 实现基本校验5.5.4 使用本地的资源文件5.5.5 用ActionContext与Web容器发生联系5.5.6 高级输入5.5.7 使用Model-Driven5.5.8 使用Property-Driven5.6 Result类型介绍5.6.1 内置Result类型5.6.2 默认Result5.6.3 页面跳转Result5.6.4 创建Action链5.6.5 整合各种View技术5.6.6 自定义Result5.7 拦截器(Interceptor)介绍5.7.1 Interceptor的原理5.7.2 内置拦截器介绍5.7.3 使用内置Interceptor5.7.4 内置拦截器栈介绍5.7.5 自定义拦截器5.8 小结第6章 Struts2的View组件6.1 EL简介6.1.1 EL语法6.1.2 EL变量6.1.3 自动转变类型6.1.4 EL隐含对象(内置对象)6.1.5 EL保留字6.2 使用通用标签6.2.1 标签语法6.2.2 控制标签(ControlTags)6.2.3 数据标签(DataTags)6.2.4 杂项标签6.3 使用HTML标签6.3.1 模板(Templates)和主题(Theme)6.3.2 通用属性6.3.3 表单标签介绍6.3.4 非表单标签6.3.5 标签实例6.4 OGNL介绍6.4.1 OGNL概述6.4.2 OGNL中的集合6.5 模板和主题的原理及方法6.5.1 模板装载6.5.2 选择主题(Theme)6.5.3 Struts2自带主题6.5.4 自定义主题6.6 在Struts中使用FreeMarker6.6.1 最简单的应用6.6.2 模板加载顺序6.6.3 在FTL文件中使用标签6.7 在Struts中使用Velocity6.7.1 最简单的应用6.7.2 变量解析6.7.3 配置Velocity6.7.4 在VM文件中使用标签6.8 在Struts中使用JasperReports6.8.1 准备JasperReports库6.8.2 定义值对象6.8.3 编写Action类6.8.4 编写Jasper模板6.8.5 配置struts.xml6.9 小结第7章 Struts2的高级应用7.1 类型转换(TypeConversion)7.1.1 为什么需要类型转换7.1.2 定义类型转换器7.1.3 内建的(Builtin)类型转换支持7.1.4 参数名称的关系7.1.5 空值属性处理7.1.6 Collection和Map支持7.1.7 类型转换错误处理7.2 校验(Validation)7.2.1 手动校验7.2.2 使用框架校验7.2.3 注册校验器7.2.4 字段校验和非字段校验7.2.5 校验器的短路7.2.6 客户端校验7.2.7 Ajax校验实例7.3 国际化7.3.1 信息的来源7.3.2 资源包搜索顺序7.3.3 添加默认的资源包7.3.4 使用国际化信息7.4 处理上传文件7.4.1 编写文件上传页面7.4.2 构造处理上传的Action7.4.3 编写结果页面7.4.4 更多配置7.4.5 错误处理7.4.6 多文件上传7.5 防止重复提交7.5.1 使用标签增加标记7.5.2 使用Tokeninterceptor验证7.5.3 使用TokenSessionStoreInterceptor重新输出结果页面7.6 自动等待页面7.7 控制反转(IoC)7.7.1 配置Spring7.7.2 实现接口7.7.3 创建Action7.7.4 结果页面7.8 用Annotation配置Struts7.8.1 配置Action7.8.2 配置拦截器7.8.3 配置验证器7.8.4 配置类型转换7.9 小结第8章 Struts2实战inMyEclipse8.1 准备开发环境8.1.1 创建工程8.1.2 引入Struts2的类库8.1.3 创建Struts2的配置文件8.1.4 目录结构8.2 编写代码8.2.1 登录界面8.2.2 登录Action8.2.3 用户CRUD操作8.2.4 添加校验8.2.5 实现国际化8.2.6 使用自定义拦截器8.3 在MyEclipse中发布8.4 小结第三篇 Hibernate3第9章Hibernate概述9.1 JDBC简介9.1.1 JDBC提供的工具接口9.1.2 JDBC访问数据库9.1.3 持久化层9.1.4 关系型数据库与面向对象的冲突9.2 ORM介绍9.2.1 什么是ORM9.2.2 ORM带来了什么9.2.3 流行的ORM框架简介9.3 Hibernate项目简介9.3.1 Hibernate的传奇经历9.3.2 为什么要选择Hibernate9.4 小结第10章 Hibernate入门10.1 安装MySQL数据库10.1.1 下载Hibernate10.1.2 安装MySQL10.1.3 配置MySQL10.1.4 MySQL的常用命令10.1.5 下载MySQL的JDBC驱动10.2 下载与安装Hibernate10.2.1 下载Hibernate10.2.2 安装Hibernate10.3 第一个Hibernate程序10.3.1 创建表10.3.2 创建持久化类(PersistentClasses)10.3.3 编写映射(Mapping)文件10.3.4 编写Hibernate配置文件10.3.5 编写测试程序10.3.6 运行测试10.4 小结第11章 Hibernate的基本操作11.1 基本概念11.1.1 体系结构(Architecture)11.1.2 持久化类(PersistentClasses)11.1.3 实例的状态11.2 配置Hibernate11.2.1 数据库连接配置11.2.2 全局属性配置11.2.3 连接池配置11.2.4 使用其他配置方式11.3 Hibernate核心类11.3.1 Configuration类11.3.2 SessionFactory类11.3.3 Session类11.3.4 Query和Criteria类11.3.5 Transaction接口11.4 通过Session完成基本操作11.4.1 保存数据11.4.2 加载数据11.4.3 更新数据11.4.4 saveOrUpdate方法11.4.5 删除数据11.4.6 缓存11.5 小结第12章 Hibernate的O/R映射12.1 映射定义(MappingDeclaration)12.1.1 元素介绍12.1.2 元素介绍12.1.3 元素介绍12.1.4 元素介绍12.1.5 其他属性12.2 映射对象标识符12.2.1 标识符的含义12.2.2 内置生成器介绍12.2.3 Hibernate的内置标识符生成器的用法12.2.4 映射自然主键12.2.5 复合自然主键12.3 Hibernate的类型12.3.1 Java基本值类型的Hibernate映射12.3.2 Java时间和日期类型的Hibernate映射类型12.3.3 Java大对象类型的Hibernate映射类型12.3.4 JDK自带的Java类的Hibernate映射类型12.3.5 自定义值类型12.4 小结第13章 复杂映射关系13.1 关联关系映射13.1.1 多对一(manytoone)13.1.2 一对一(onetoone)13.1.3 一对多(onetomany)13.1.4 双向关联(bidirectionalassociations)13.1.5 双向一对一(bidirectionalonetoone)13.1.6 使用连接表(withjointables)13.1.7 多对多(manytomany)13.1.8 完整实例13.2 集合类(Collections)映射13.2.1 持久类中的集合类13.2.2 映射集合13.2.3 映射外键13.2.4 映射索引13.2.5 集合类排序13.2.6 完整的Map实例13.3 组件映射13.3.1 依赖对象13.3.2 在集合中出现的依赖对象13.3.3 组件作为联合标识符13.3.4 动态组件13.4 继承关系映射13.4.1 采用所有的类同在一张表13.4.2 采用每个子类一张表13.4.3 采用每个具体类一张表13.5 小结第14章 用Hibernate检索数据14.1 查询基础14.1.1 执行查询14.1.2 用iterate()方法迭代查询结果14.1.3 指定绑定参数14.1.4 用Hibernate简单分页14.1.5 可滚动遍历(ScrollableIteration)14.2 HQL语句详解14.2.1 HQL基础14.2.2 用from子句指定数据表14.2.3 用select子句查询数据14.2.4 HQL中的聚集函数14.2.5 多态查询14.2.6 用where子句添加查询条件14.2.7 查询条件中的表达式14.2.8 用orderby子句排序14.2.9 用groupby子句分组14.2.1 0HQL的子查询14.2.1 1用fetch关键字来延时加载集合14.2.1 2将HQL语句放入配置文件中14.3 条件查询14.3.1 添加查询条件14.3.2 结果集排序14.3.3 条件查询中的关联关系14.3.4 使用样例查询14.3.5 离线(Detached)查询和子查询14.4 直接使用SQL14.4.1 使用SQL查询14.4.2 将SQL语句放入配置文件中14.4.3 调用存储过程14.5 数据过滤14.6 小结第15章 Hibernate高级应用15.1 批量处理15.1.1 及时清理Session缓冲区15.1.2 使用无状态Session接口15.1.3 使用HQL的批量语句15.2 事务与并发处理15.2.1 事务简介15.2.2 使用JDBC事务15.2.3 使用JTA事务15.2.4 数据操作的异常处理15.2.5 使用悲观锁15.2.6 使用乐观锁15.3 延时加载15.3.1 实体对象的延迟加载15.3.2 集合类型的延迟加载15.3.3 属性延迟加载15.4 缓存管理15.4.1 什么是缓存15.4.2 Hibernate自带的一级缓存15.4.3 二级缓存的定义15.4.4 常用的缓存插件15.4.5 如何使用二级缓存15.4.6 在查询中使用缓存15.5 事件机制15.5.1 拦截器15.5.2 事件系统15.6 使用注释配置Hibernate15.6.1 在创建Session工厂时指定Annotation15.6.2 使用注释15.6.3 给文件中的HQL加注释15.7 小结第16章 Hibernate3实战inMyEclipse16.1 环境介绍16.1.1 数据库连接工具16.1.2 创建Hibernate工程16.1.3 生成持久化类16.1.4 HQL编辑器16.2 代码说明16.2.1 配置文件16.2.2 SessionFactory16.2.3 数据脚本16.2.4 持久化类和映射文件16.2.5 DAO类16.3 测试16.4 小结第四篇 Spring2.5第17章Spring概述17.1 Spring简介17.1.1 Spring项目历史17.1.2 Spring的由来17.1.3 Spring2.5 带来的新特性17.2 Spring的基本概念17.2.1 Spring的组成结构17.2.2 什么是IoC17.2.3 什么是AOP17.3 为什么要使用Spring17.3.1 何谓轻量级(Lightweight)17.3.2 Spring带来了什么17.3.3 Spring的优势17.3.4 其他轻量级容器17.4 小结第18章 Spring入门18.1 下载与安装Spring18.1.1 下载Spring18.1.2 安装Spring18.2 第一个Spring程序18.2.1 IoC示例18.2.2 AOP示例18.3 小结第19章 Spring的IoC19.1 Bean工厂19.1.1 创建Bean工厂19.1.2 使用多个文件19.1.3 获取Bean19.1.4 BeanFactory的其他方法19.2 配置Bean19.2.1 Bean的定义19.2.2 Bean命名约定19.2.3 Bean的别名19.3 依赖19.3.1 Setter注入19.3.2 构造函数注入19.3.3 引用其他的Bean(协作者)19.3.4 使用depends-on19.3.5 注入集合类19.3.6 自动装配19.4 Bean的特性19.4.1 Bean的作用域19.4.2 改变Bean的行为19.4.3 Bean的生命周期19.5 利用ApplicationContext19.5.1 利用MessageSource实现国际化19.5.2 事件处理19.5.3 底层资源的访问19.5.4 延迟初始化Bean19.5.5 ApplicationContext在Web应用中的实例化19.6 使用注释定义IoC(2.5 新增)19.6.1 用例介绍19.6.2 使用@Autowired注释19.6.3 在Setter方法上使用注释19.6.4 在构造函数中使用注释19.6.5 处理出现多个匹配情况19.6.6 使用JSR-250的注释19.6.7 彻底摆脱配置文件19.7 小结第20章 Spring的AOP20.1 SpringAOP简介20.1.1 AOP的概念20.1.2 AOP的术语20.1.3 Spring的AOP有何特点20.1.4 SpringAOP的功能和目标20.2 @AspectJ配置AOP20.2.1 启用@AspectJ支持20.2.2 声明一个切面20.2.3 声明一个切入点(Pointcut)20.2.4 合并切入点表达式20.2.5 声明通知20.2.6 通知的参数(AdviceParameters)20.2.7 使用引入(Introductions)来定义接口20.3 XML方式配置AOP20.3.1 声明一个切面20.3.2 声明一个切入点20.3.3 声明通知20.3.4 通知参数20.3.5 使用引入20.3.6 使用@AspectJ还是XML配置AOP20.4 Spring2.5 以前的AOP20.4.1 声明切面20.4.2 创建通知20.4.3 配置文件20.4.4 运行实例20.5 小结第21章 Spring的MVC框架21.1 SpringMVC简介21.1.1 SpringMVC的结构21.1.2 SpringWebMVC框架的特点21.2 DispatcherServlet的功能21.2.1 在Web服务器中配置DispatcherServlet21.2.2 加载Bean配置文件21.2.3 SpringWeb应用的上下文21.3 控制器(Controller)21.3.1 基类AbstractController21.3.2 其他实用的控制器21.4 处理器映射(HandlerMapping)21.5 视图解析器21.6 Spring对视图的支持21.6.1 Spring的标签库21.6.2 Spring的主题21.7 MVC的完整实例21.7.1 配置web.xml21.7.2 创建Controller21.7.3 视图解析器21.7.4 JSP页面21.7.5 发布与测试21.8 用注释来驱动SpringMVC(2.5 新增)21.8.1 基于注释的Controller21.8.2 使注释生效21.9 小结第22章 用Spring整合其他应用22.1 集成Struts22.1.1 概述22.1.2 添加plugin包22.1.3 修改web.xml文件22.1.4 把Struts与Spring的配置文件对应起来22.1.5 高级选项22.2 集成Struts1.x22.2.1 装载应用程序环境22.2.2 使用Spring的ActionSupport22.2.3 覆盖RequestProcessor22.2.4 将动作管理委托给Spring22.3 Spring下完成远程访问22.3.1 访问RMI22.3.2 使用JAX-RPC的WebService22.3.3 发送电子邮件22.3.4 其他远程22.4 简化EJB的访问22.4.1 用传统的方式访问EJB22.4.2 用Spring访问EJB22.5 Spring中的定时调度(Scheduling)22.5.1 创建定制的Timers22.5.2 直接调度JavaBean22.6 Spring中的线程池22.6.1 使用TaskExecutor接口22.6.2 Spring自带Executor实现22.7 事务管理22.7.1 编程式事务管理22.7.2 声明式事务管理22.8 使用JDBC进行数据访问22.8.1 JdbcTemplate类22.8.2 DataSource接口22.8.3 执行SQL语句22.8.4 执行查询22.8.5 更新数据库22.9 集成Hibernate22.9.1 简介22.9.2 在Spring的ApplicationContext中创建SessionFactory22.9.3 使用HibernateTemplate22.9.4 使用HibernateDaoSupport类22.9.5 使用编程式的事务22.9.6 使用声明式的事务22.10 小结第23章 Spring2.5 实战inMyEclipse23.1 环境介绍23.1.1 插件的下载与安装23.1.2 创建Spring工程23.1.3 利用向导创建Spring的Bean23.1.4 其他支持23.2 代码说明23.2.1 在Spring中给Hibernate配置数据源23.2.2 持久化类和映射文件23.2.3 DAO类23.2.4 添加事务管理23.3 测试23.4 小结第五篇 Struts2+Spring2.5 +Hibernate3实例第24章 综合使用Struts+Hibernate+Spring开发图书管理系统24.1 概述24.1.1 系统功能预览24.1.2 系统结构24.1.3 所需资源24.1.4 源代码目录组织24.2 给Web服务器配置web.xml24.2.1 添加Struts2配置24.2.2 添加Spring配置24.2.3 定义编码转化器(解决中文问题)24.2.4 定义Log的输出24.3 用Struts2实现Web表现层24.3.1 Struts的配置文件24.3.2 图书管理的Action类24.3.3 在添加图书中采用自动校验24.3.4 使用标签实现图书维护页面24.4 用Hibernate实现数据层24.4.1 创建数据库24.4.2 配置数据源24.4.3 持久化类和映射文件24.4.4 实现图书管理和登录管理的DAO类24.5 Spring整合业务层24.5.1 配置Bean文件24.5.2 实现业务类24.5.3 保存图书中的事务管理24.5.4 浏览图书的分页处理24.6 发布与测试24.6.1 在MyEclipse中发布应用24.6.2 在Tomcat中查看运行结果24.7 小结

章节摘录

插图:

编辑推荐

书山有路勤为径,学海无涯苦作舟!《Java Web整合开发完全自学手册》涵盖主题JSP基础知识Struts 2框架sturts.xml核心配置文件Action接口Result类型Interceptor拦截器Struts 2的View组件Spring 2.5框架config-beans.xml文件Spring的AOPSpring的IoCHibernate 3框架Hibernate.cfg.xml配置文件Hibernate的O-R映射创建Hibernate持久化类用Hibernate检索数据:HQLHibernate核心类SSH案例:图书管理系统《Java Web整合开发完全自学手册》特色涵盖基础知识、核心技术、典型示例等内容按照“基本概念一核心语法一典型示例”的模式讲解.容易上手提供100余个典型实例、1个项目案例超值光盘内容《Java Web整合开发完全自学手册》源代码+本书视频演示+本书电子教案(PPT)1200余页编程技术文档(免费赠送)+45个编程专题视频讲座(免费赠送)《Java Web整合开发完全自学手册》重点内容概览Java Web开发基础知识概述详细讲解Struts 2框架的知识及应用详细讲解Hibernate 3框架的知识及应用详细讲解Spring 2.5框架的知识及应用用1个项目案例讲解SSH框架整合应用《Java Web整合开发完全自学手册》读者对象Java Web开发入门人员Java Web开发程序员J2EE初学者希望提高系统设计水平的人员想了解SSH新版本的人员其他编程爱好者丛书特点《Java Web整合开发完全自学手册:Struts+Hibernate+Spring+Eclipse》(珍藏版)作者均为有多年编程经验的一线程序员或者培训讲师提供了专门的技术服务论坛:http://www.rzchina.net光盘提供了源代码、视频演示、电子教案及编程技术文档按“基本概念一语法讲解一示例讲解”的模式讲解,适合自学概念都以简单的语言描述.必要时进行类比,容易理解提供了大量实例.最后还提供了综合案例,比较实用无论理论知识,还是实例,讲解都很详细,容易掌握对代码进行了丰富的注释,阅读起来没有任何障碍。

图书封面

图书标签Tags

评论、评分、阅读与下载


    Java Web整合开发完全自学手册 PDF格式下载


用户评论 (总计12条)

 
 

  •   看了一部分,觉得很适用。我是从事软件开发,对于提升自己的开发技能,起得了很好的升华作用。
  •   很全面,我很喜欢这本书,很使用
  •   往往内容全面了就解释的不够清楚,本书最糟糕的是错误很多,错别字、单词
  •   讲的比较复杂,很专业,不适用我
  •   内容简单通俗易懂,就是光盘代码有错误
  •   这是完成J2EE开发的很好书,很详细,有了它,基本能完成一个项目。
  •   虽然比较入门级,但是结构上不是很好,有的章节有点乱。
  •   很不适合初学者,想学java web的建议先从j2se开始,然后学一点html,div,css等,然后学点jsp和servlet等。这样就可以自己动手做点基础的网站了。需要一年的时间吧!
  •   比较垃圾,书中语言错误很多,光盘中源码不完整,作者对读者太不负责任了
  •   不过如果先看一些基础的东西的话,效果会更好~~~
  •   本书写的比较的浅显易懂,比较适合初学者,但深度不够,而且使用的案例也过于简单
  •   看目录写得很详细,有点兴趣。但是出版日期怎么写的2009年??
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7