目录 源码下载 学习目的与要求······························································································································1 本章主要内容 ··································································································································1 1.1 Spring简介···························································································································1 1.1.1 Spring的由来 ·········································································································1 1.1.2 Spring的体系结构 ·································································································1 1.2 Spring开发环境的构建 ································································································3 1.2.1 使用 Eclipse开发 Java Web应用 ······································································4 1.2.2 Spring的下载 ·········································································································6 1.3 使用 Eclipse开发 Spring入门程序 ···········································································7 1.4 本章小结 ································································································································8 习题 1 ···············································································································································8 学习目的与要求··························································································································· 10 本章主要内容 ······························································································································· 10 2.1 Spring IoC的基本概念 ··································································································· 10 2.2 Spring IoC容器 ·········································································································· 11 2.2.1 BeanFactory········································································································ 11 2.2.2 ApplicationContext··························································································· 11 2.2.3 GenericApplicationContext··········································································· 13 2.3 依赖注入的类型················································································································· 14 2.3.1 使用构造方法注入 ·························································································· 14 2.3.2 使用属性的 Setter方法注入 ········································································ 16 2.4 本章小结 ····························································································································· 17 习题 2 ············································································································································ 17 学习目的与要求··························································································································· 18 本章主要内容 ······························································································································· 18 3.1 Bean的配置······················································································································· 18 3.2 Bean的实例化 ·················································································································· 19 3.2.1 构造方法实例化 ······························································································ 19 3.2.2 静态工厂方法实例化 ······················································································ 20 3.2.3 实例工厂方法实例化 ······················································································ 21 3.3 Bean的作用域 ············································································································· 22 3.3.1 singleton作用域································································································· 22 3.3.2 prototype作用域································································································ 23 3.4 Bean的生命周期 ········································································································ 24 3.5 Bean的装配方式 ·············································································································· 26 3.5.1 基于 XML配置的装配 ··················································································· 26 3.5.2 基于注解的装配 ······························································································ 29 3.6 本章小结 ····························································································································· 33 习题 3 ············································································································································ 33 学习目的与要求··························································································································· 35 本章主要内容 ······························································································································· 35 4.1 Spring AOP的基本概念 ································································································· 35 4.1.1 AOP的概念··········································································································· 35 4.1.2 AOP的术语··········································································································· 36 4.2 动态代理 ····························································································································· 37 4.2.1 JDK动态代理 ·································································································· 37 4.2.2 CGLIB动态代理 ······························································································ 40 4.3 基于代理类的 AOP实现 ···························································································· 42 4.4 基于 XML配置开发 AspectJ ···················································································· 45 4.5 基于注解开发 AspectJ ······························································································· 49 4.6 本章小结 ····························································································································· 52 习题 4 ············································································································································ 52 学习目的与要求··························································································································· 53 本章主要内容 ······························································································································· 53 5.1 Spring的数据库编程 ······································································································· 53 5.1.1 Spring JDBC的配置··························································································· 53 5.1.2 Spring jdbcTemplate的使用方法 ···························································· 54 5.2 编程式事务管理················································································································· 58 5.2.1 基于底层 API的编程式事务管理 ································································ 58 5.2.2 基于 TransactionTemplate的编程式事务管理 ······································60 5.3 声明式事务管理················································································································· 62 5.3.1 基于 XML方式的声明式事务管理 ······························································63 5.3.2 基于@Transactional注解的声明式事务管理 ··········································66 5.3.3 如何在声明式事务管理中捕获异常 ····························································· 69 5.4 本章小结 ····························································································································· 71 习题 5 ············································································································································ 71 学习目的与要求··························································································································· 72 本章主要内容 ······························································································································· 72 6.1 MVC模式与 Spring MVC的工作原理 ·································································· 72 6.1.1 MVC模式·············································································································· 72 6.1.2 Spring MVC的工作原理 ··················································································· 73 6.1.3 Spring MVC接口································································································ 74 6.2 第一个 Spring MVC应用 ························································································· 74 6.2.1 创建Web应用并引入JAR包 ··········································································· 74 6.2.2 在 web.xml文件中部署 DispatcherServlet ················································· 75 6.2.3 创建 Web应用首页····························································································· 76 6.2.4 创建 Controller类 ······························································································ 76 6.2.5 创建 Spring MVC配置文件并配置 Controller映射信息··························· 76 6.2.6 应用的其他页面···································································································· 77 6.2.7 发布并运行 Spring MVC应用·········································································· 77 6.3 视图解析器 ························································································································· 78 6.4 本章小结 ····························································································································· 78 习题 6 ············································································································································ 78 学习目的与要求··························································································································· 80 本章主要内容 ······························································································································· 80 7.1 基于注解的控制器 ······································································································· 80 7.1.1 Controller注解类型 ··························································································· 80 7.1.2 RequestMapping注解类型 ············································································· 81 7.1.3 编写请求处理方法································································································ 82 7.2 Controller接收请求参数的常见方式 ····································································· 83 7.2.1 通过实体 Bean接收请求参数 ··········································································· 83 7.2.2 通过处理方法的形参接收请求参数 ·································································· 89 7.2.3 通过 HttpServletRequest接收请求参数······················································· 90 7.2.4 通过@PathVariable接收 URL中的请求参数 ··············································· 90 7.2.5 通过@RequestParam接收请求参数······························································ 91 7.2.6 通过@ModelAttribute接收请求参数···························································· 91 7.3 重定向与转发 ··············································································································· 92 7.4 应用@Autowired进行依赖注入··················································································· 93 7.5 @ModelAttribute注解·································································································· 94 7.6 本章小结 ····························································································································· 96 习题 7 ············································································································································ 96 学习目的与要求··························································································································· 98 本章主要内容 ······························································································································· 98 8.1 数据绑定 ····························································································································· 98 8.2 表单标签库 ························································································································· 98 8.3 数据绑定的应用 ·········································································································101 8.4 JSON数据交互 ··········································································································108 8.4.1 JSON概述···········································································································108 8.4.2 JSON数据转换 ··································································································109 8.5 本章小结 ···························································································································112 习题 8 ··········································································································································112 学习目的与要求·························································································································114 本章主要内容 ·····························································································································114 9.1 拦截器概述 ·················································································································114 9.1.1 拦截器的定义······································································································114 9.1.2 拦截器的配置······································································································115 9.2 拦截器的执行流程···········································································································116 9.2.1 单个拦截器的执行流程 ···············································································116 9.2.2 多个拦截器的执行流程 ···············································································118 9.3 应用案例——用户登录权限验证 ············································································120 9.4 本章小结 ···························································································································124习题 9 ··········································································································································124 学习目的与要求·························································································································125 本章主要内容 ·····························································································································125 10.1 数据验证概述·················································································································125 10.1.1 客户端验证·····································································································125 10.1.2 服务器端验证·································································································125 10.2 Spring验证器 ·········································································································126 10.2.1 Validator接口 ······························································································126 10.2.2 ValidationUtils类························································································126 10.2.3 Validator验证示例 ······················································································127 10.3 Jakarta Bean Validation(JSR 380) ·······························································132 10.3.1 Jakarta Bean Validation验证配置··························································132 10.3.2 标注类型·········································································································133 10.3.3 Jakarta Bean Validation验证示例··························································134 10.4 本章小结·························································································································137 习题 10········································································································································137 学习目的与要求·························································································································138 本章主要内容 ·····························································································································138 11.1 程序国际化概述 ······································································································138 11.1.1 Java国际化的思想 ·······················································································138 11.1.2 Java支持的语言和国家 ···············································································139 11.1.3 Java程序国际化 ···························································································139 11.1.4 带占位符的国际化信息 ················································································140 11.2 Spring MVC的国际化 ··························································································141 11.2.1 Spring MVC加载资源属性文件 ·······························································141 11.2.2 语言区域的选择 ····························································································142 11.2.3 使用 message标签显示国际化信息 ························································142 11.3 用户自定义切换语言示例 ······················································································143 11.4 本章小结·························································································································147 习题 11········································································································································147 学习目的与要求·························································································································148 本章主要内容 ·····························································································································148 12.1 示例介绍·························································································································148 12.2 SimpleMappingExceptionResolver类·································································153 12.3 HandlerExceptionResolver接口 ············································································154 12.4 @ExceptionHandler注解·························································································155 12.5 @ControllerAdvice注解···························································································156 12.6 本章小结·························································································································157 习题 12········································································································································157 学习目的与要求·························································································································158 本章主要内容 ·····························································································································158 13.1 文件的上传 ···············································································································158 13.2 文件的下载 ···············································································································163 13.3 本章小结·························································································································166 习题 13········································································································································166 学习目的与要求·························································································································167 本章主要内容 ·····························································································································167 14.1 MyBatis简介 ················································································································167 14.2 MyBatis的环境构建····································································································168 14.3 MyBatis的工作原理····································································································168 14.4 MyBatis的核心配置····································································································169 14.5 使用 Eclipse开发 MyBatis入门程序 ·································································170 14.6 SSM框架的整合开发 ··································································································174 14.6.1 相关 JAR包····································································································174 14.6.2 MapperScannerConfigurer方式 ···························································175 14.6.3整合示例 ···································································································176 14.6.4SqlSessionDaoSupport方式 ·····························································180 14.7 使用 MyBatis Generator插件自动生成映射文件 ···········································185 14.8 映射器概述·····················································································································187 14.9