SSM综合复习

  1 SSM综合复习
  2 

 

  3 SSM综合复习    1
  4 1.    mybatis    3
  5 1.1.    mybatis第一天    3
  6 1.1.1.    MyBatis  框架概述    3
  7 1.1.2.    Mybatis  框架快速入门    3
  8 1.2.    mybatis第二天    4
  9 1.2.1.    mapper代理方式实现 CRUD    4
 10 1.2.2.    核心配置文件中的标签设置    5
 11 1.3.    mybatis第三天    6
 12 1.3.1.    mybatis中的动态sql(重点)    6
 13 1.3.2.    能够掌握一对多,多对多的配置(重点)    7
 14 1.4.    mybatis第四天    9
 15 1.4.1.    mybatis的延迟加载    9
 16 1.4.2.    mybatis的一级缓存二级缓存    10
 17 1.4.3.    mybatis中的注解开发    11
 18 2.    spring    13
 19 2.1.    spring第一天    13
 20 2.1.1.    spring的概述    13
 21 2.1.2.    程序的耦合及解耦    14
 22 2.1.3.    IOC概念和spring中的IOC的XML配置    14
 23 2.1.4.    依赖注入(Dependency Injection)    16
 24 2.2.    spring第二天    17
 25 2.2.1.    ioc的常用注解    17
 26 2.2.2.    纯注解的ioc案例    18
 27 2.2.3.    spring和Junit整合    18
 28 2.3.    spring第三天    19
 29 2.3.1.    动态代理    19
 30 2.3.2.    AOP    20
 31 2.4.    spring第四天    22
 32 2.4.1.    jdbcTemplate    23
 33 2.4.2.    基于xml配置声明式事务管理    23
 34 2.4.3.    基于annotation声明式事务管理    24
 35 3.    springmvc    25
 36 3.1.    springmvc第一天    25
 37 3.1.1.    springmvc概述    25
 38 3.1.2.    springmvc入门案例    25
 39 3.1.3.    springmvc执行流程    25
 40 3.1.4.    请求参数的 绑定    26
 41 3.1.5.    常用注解    26
 42 3.2.    springmvc第二天    27
 43 3.2.1.    响应数据和结果视图    27
 44 3.2.2.    SpringMVC实现文件上传    28
 45 3.2.3.    springmvc的异常处理    29
 46 3.2.4.    SpringMVC框架中的拦截器    29
 47 3.3.    springmvc第三天    30
 48 3.3.1.    SSM整合    30
 49 
 50  
 51 1.    mybatis
 52 1.1.    mybatis第一天
 53 1.1.1.    MyBatis  框架概述
 54 mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程
 55 笔试题:orm思想
 56 对象关系映射
 57 1.1.2.    Mybatis  框架快速入门
 58 步骤
 59 1.创建maven工程,添加依赖
 60 2.编写实体类和接口
 61 3.编写映射配置文件(同包同名)
 62 4.编写核心配置文件
 63 5.编写测试类
 64     加载配置文件
 65     创建sqlSessionFactory
 66     创建sqlSession
 67     获取代理对象
 68     代理对象调用方法
 69     释放资源
 70 测试类中设计的设计模式
 71 构建者模式
 72 工厂模式
 73 代理模式
 74 1.2.    mybatis第二天
 75 1.2.1.    mapper代理方式实现 CRUD  
 76 mapper代理开发要求:
 77 1.接口和映射文件要同包同名
 78 2.持久层映射配置中 mapper 标签的 namespace 属性取值必须是持久层接口的全限定类名
 79 3.SQL 语句的配置标签<select>,<insert>,<delete>,<update>的 id 属性必须和持久层接口的
 80 方法名相同
 81 4.parameterType要和接口中的传入参数类型相同
 82 5.resultType要和接口中的返回结果类型相同
 83 查询所有
 84 添加
 85 获取添加成功记录的id值
 86 
 87 更新
 88 删除
 89 聚合函数
 90 模糊查询
 91 #{}和${}的区别:
 92 #{}表示一个占位符
 93 #{}可以实现prepareStatment向占位符中设置值,自动进行JDBC和java类型转换,防止ql注入
 94  #{}可以接收简单类型值或pojo属性值,如果parameterType传输基本数据类型,值随便写
 95 -----------------------------------------------------------------------------------------------
 96 ${}表示拼接sql串
 97 ${}是将传入的参数原样拼接在sql中,不进行jdbc类型转换
 98 ${}可以接收简单类型值或pojo属性值,如果parameterType传输基本数据类型,${}括号中只能是value
 99 实体属性映射和表字段不匹配
100 别名
101 resultMap
102 1.2.2.    核心配置文件中的标签设置
103 properties:属性配置
104 resource属性:用于指定 properties 配置文件的位置,要求配置文件必须在类路径下
105 resource="jdbcConfig.properties"
106 url 属性:统一资源定位符
107 http://localhost:8080/mystroe/CategoryServlet
108 typeAliases:自定义别名
109 <!-- 单个别名定义 -->
110 <typeAlias alias="user" type="com.itheima.domain.User"/>
111 <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
112 <package name="com.itheima.domain"/>
113 mappers:映射器
114 方式一:
115 <mapper resource=" " />
116 使用相对于类路径的资源
117 如:<mapper resource="com/itheima/dao/IUserDao.xml" />
118 方式二:
119 <mapper class=" " />
120 使用 mapper 接口类路径
121 如:<mapper class="com.itheima.dao.UserDao"/>
122 注意:此种方法要求 r mapper  接口名称和 r mapper  映射文件名称相同,且放在同一个目录中
123 方式三:
124 <package name=""/>
125 注册指定包下的所有 mapper 接口
126 如:<package name="cn.itcast.mybatis.mapper"/>
127 注意:此种方法要求  mar pper  接口名称和 r mapper  映射文件名称相同,且放在同一个目录中
128 1.3.    mybatis第三天
129 1.3.1.    mybatis中的动态sql(重点)
130 <if test=条件判断></if>
131 注意问题:1.条件判断中不能使用&&,要使用and
132        2.<if>标签的 test 属性中写的是对象的属性
133 <where></where>
134 简化 where 1=1 的条件拼装,我们可以采用<where>标签来简化开发,会自动删去
135 第一个and
136 <foreach> </foreach>
137 <foreach>标签用于遍历集合
138 collection: 代表要遍历的集合元素,注意编写时不要写#{}
139 open: 代表语句的开始部分
140 close: 代表结束部分
141 item: 代表遍历集合的每个元素,生成的变量名
142 separator: 代表分隔符
143 <select>
144 抽取重复的语句代码片段
145 <sql id="defaultSql">
146           select * from user
147 </sql>
148 使用
149 include refid="defaultSql"></include>
150 1.3.2.    能够掌握一对多,多对多的配置(重点)
151 表关系
152 一对一 :人和身份证
153 一对多 :用户和订单
154 多对多 :学生和课程
155 实体中表示关系
156 一对多
157     一方实体中添加集合表示多方
158     多方实体中声明实体对象表示一方
159 多对多
160     双方实体中都添加集合表示对方
161 一对一查询中对返回结果集的封装
162 方式一
163 定义专门的 pojo 类作为输出类型,其中定义了 sql 查询结果集所有的字段
164 方式二
165 使用 resultMap,定义专门的 resultMap 用于映射一对一查询结果。
166     <association property="user" javaType="cn.itheima.domain.user">
167 一对多查询对返回结果集的封装
168 使用 resultMap,定义专门的 resultMap 用于映射一对一查询结果。
169  <collection property="accounts" ofType="account">
170 多对多查询中对返回结果集的封装
171 使用 resultMap,定义专门的 resultMap 用于映射一对一查询结果。
172  两方使用的标签都是 <collection property="user" ofType="user">
173 1.4.    mybatis第四天
174 1.4.1.    mybatis的延迟加载
175 什么是立即加载
176 加载实体类数据时,关联数据也会立即加载
177 什么是延迟加载
178 加载实体类数据时,关联数据不会立即加载,当需要关联数据时才会被加载
179 一对一延迟加载配置
180 使用 assocation  实现延迟加载
181 1.编写持久层 DAO接口
182 2.持久层映射文件
183 
184 3.开启 Mybatis 的延迟加载策略
185 <settings>
186 <setting name="lazyLoadingEnabled" value="true"/>
187 <setting name="aggressiveLazyLoading" value="false"/>
188 </settings>
189 一对多延迟加载配置
190 使用 Collection  实现延迟加载
191 1.编写持久层 DAO接口
192 2.持久层映射文件
193 
194 3.开启 Mybatis 的延迟加载策略
195 <settings>
196 <setting name="lazyLoadingEnabled" value="true"/>
197 <setting name="aggressiveLazyLoading" value="false"/>
198 </settings>
199 1.4.2.    mybatis的一级缓存二级缓存
200 缓存概念
201 存储在内存中的临时数据,使用缓存,可以减少与数据库的交互次数
202 一级缓存
203 1.默认开启
204 2.sqlSession范围
205 3.清空一级缓存的触发条件
206 增删改
207 sqlsession.close
208 sqlsession.clearCache
209 sqlSession.commit
210 二级缓存
211 1.默认不开启
212 2.二级缓存是 mapper 映射级别的缓存:
213 二级缓存是跨 SqlSession 的
214 二级缓存的开启
215 
216 第一步:在 SqlMapConfig.xml  文件开启二级缓存
217 <setting name="cacheEnabled" value="true"/>
218 
219 第二步:配置相关的 Mapper  映射文件
220 <cache></cache>
221 
222 第三步:置 配置 statement  上面的 useCache  属性
223 useCache="true"
224 1.4.3.    mybatis中的注解开发
225 常用注解
226 @Insert:实现新增
227 @Update:实现更新
228 @Delete:实现删除
229 @Select:实现查询
230 @Result:实现结果集封装
231 @Results:可以与@Result 一起使用,封装多个结果集
232 @ResultMap:实现引用@Results 定义的封装
233 @One:实现一对一结果集封装
234 @Many:实现一对多结果集封装
235 @CacheNamespace:实现注解二级缓存的使用
236 注解开发案例步骤
237 1.编写实体类
238 2.使用注解方式开发 持久层 接口@select
239 3.编写 SqlMapConfig  配置文件
240 4.编写测试方法
241 复杂关系映射的注解说明
242 @Results  注解
243 代替的是标签<resultMap>
244 @Resutl 注解
245 代替了 <id> 标签和<result> 标签
246 id 是否是主键字段
247 column 数据库的列名
248 property 需要装配的属性名
249 one 需要使用的@One 注解(@Result(one=@One)()))
250 many 需要使用的@Many 注解(@Result(many=@many)())
251 @One  注解(一对一)
252 代替了<assocation> 标签,是多表查询的关键,在注解中用来指定子查询返回单一对象
253 select 指定用的 来多表查询的 sqlmapper
254 fetchType 会覆盖全局的配置参数 lazyLoadingEnabled
255 取值:    eager
256              lazy
257              default
258 @Many  注解(多对一)
259 代替了<assocation> 标签,是多表查询的关键,在注解中用来指定子查询返回单一对象
260 一对一映射注解配置
261 
262 一对多注解映射配置
263 
264 2.    spring
265 2.1.    spring第一天
266 2.1.1.    spring的概述
267 概述
268 spring是一个一栈式的轻量级开源框架
269 核心
270 IOC
271 控制反转:将对象的创建交给spring
272 DI:依赖注入
273 AOP
274 面向切面编程
275 优势
276 方便解耦,简化开发 
277 AOP 编程的支持
278 方便集成各种优秀框架
279 体系结构
280 1.核心部分
281 2.AOP部分
282 3.数据访问部分
283 4.web部分
284 2.1.2.    程序的耦合及解耦
285 耦合
286 程序间的依赖关系,应力争做到高内聚,低耦合
287 解耦
288 通过对代码的优化来降低耦合,杜绝编译期依赖关系
289 解决耦合的思路
290 反射+XML
291 2.1.3.    IOC概念和spring中的IOC的XML配置
292 准备工作
293 1.创建工程,导入依赖
294 2.创建业务层接口和实现类
295 3.创建持久层接口和实现类
296 入门案例
297 1.在类的根路径下创建的 一个任意名称的 xml 
298 2.让 让 spring  管理 资源置 ,在配置文件中配置 service 和 和 dao
299 <bean id=""  class="">
300 3.测试 配置是否成功
301 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
302 IAccountService aService = (IAccountService) ac.getBean("accountService");
303 System.out.println(aService);
304 bean标签:用于配置对象让 spring 来创建
305 属性
306 id:给对象在容器中提供一个唯一标识。用于获取对象。
307 class:指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数。
308 scope:指定对象的作用范围。
309        singleton :默认值,单例的.
310        prototype :多例的.
311 实例化 Bean  的三种方式
312 默认无参构造函数
313 <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"/>
314 静态工厂的方法创建对象
315 <bean id="accountService"
316 class="com.itheima.factory.StaticFactory"
317 factory-method="createAccountService"></bean>
318 实例工厂的方法创建对象
319 <bean id="instancFactory" class="com.itheima.factory.InstanceFactory"></bean>
320 <bean id="accountService"
321 factory-bean="instancFactory"
322 factory-method="createAccountService"></bean>
323 2.1.4.    依赖注入(Dependency Injection)
324 概念
325 XML中对类之间的依赖关系进行维护
326 二种注入方式
327 构造函数注入
328 <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
329      <constructor-arg name="name" value=" 张三 "></constructor-arg>
330      <constructor-arg name="age" value="18"></constructor-arg>
331       <constructor-arg name="birthday" ref="now"></constructor-arg>
332 </bean>
333 Set方法注入
334 <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl">
335 <property name="name" value="test"></property>
336 <property name="age" value="21"></property>
337 <property name="birthday" ref="now"></property>
338 </bean>
339  注入集合属性
340 注入集合数据
341 List 结构的:
342 array,list,set
343 Map 结构的
344 map,entry,props,prop
345 2.2.    spring第二天
346 2.2.1.    ioc的常用注解
347 创建对象
348 1.@component
349 2.@controller
350 3.@service
351 4.@repository
352 相当于<bean id="" class="">
353 依赖注入
354 @Autowired:自动按照类型注入
355 @Qualifier:在自动按照类型注入的基础之上,再按照 Bean 的 id 注入(不能独立使用)
356 @Resource:根据bean的id进行注入
357 @value:注入基本数据类型和 String 类型数据的
358 范围:单例多例
359 @Scope
360 singleton
361 phototype
362 生命周期
363 @PostConstruct:用于指定初始化方法。
364 @PreDestroy:用于指定销毁方法。
365 2.2.2.    纯注解的ioc案例
366 @Configuration
367 指定当前类是一个配置类
368 @ComponentScan("com.itheima")
369 用于通过注解指定spring在创建容器时要扫描的包
370 @Bean
371 作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中
372 测试:ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);
373 @Import()
374 作用:用于导入其他的配置类
375 @PropertySource
376 作用:用于指定properties文件的位置
377 2.2.3.    spring和Junit整合
378 @RunWith(SpringJUnit4ClassRunner.class):替换运行器
379 @ContextConfiguration(locations= {"classpath:bean.xml"}):指定配置文件路径
380 2.3.    spring第三天
381 2.3.1.    动态代理
382 JDK动态代理:基于接口的动态代理
383 Proxy.newProxyInstance(参数1,参数2,参数3)
384 参数1:classloarder:类加载器
385 参数2:class[]:被代理类实现的全部接口
386 参数3:new invocationHandler:增强逻辑
387 
388 public Object  invork(参数1,参数2,参数3)
389 参数1:代理对象
390 参数2:当前执行的方法
391 参数3:当前执行的方法所需要的参数
392 
393 ***代理对象调用任何方法都会执行invork方法
394 CGLIB:基于子类的动态代理
395 Enhancer.create(参数1,参数2,)
396 参数1:class:被代理对象的字节码
397 参数2:Callback:用于提供增强的代码
398 
399 
400 public Object intercept(参数1,参数2,参数3)
401 参数1:代理对象
402 参数2:当前执行的方法
403 参数3:当前执行的方法所需要的参数
404 
405 ***代理对象调用任何方法都会执行intercept方法
406 2.3.2.    AOP
407 概念
408 AOP:面向切面编程
409 作用
410 不修改源码的基础上,对已有方法进行增强
411 好处
412 减少重复代码
413 提高开发效率
414 维护方便
415 底层
416 动态代理
417 术语
418 Joinpoint( 连接点):所有可以被增强的方法
419 Pointcut( 切入点):真正被增强的方法
420 Advice( 通知/ 增强):增强的逻辑
421 Target( 目标对象):被代理对象
422 Weaving(织入):创建代理对象的过程
423 Proxy (代理):代理对象
424 Aspect(切面):切入点和通知结合的过程
425 切入点表达式说明
426 execution:匹配方法的执行(常用)
427 execution(表达式)
428 表达式语法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))
429 
430 execution(* com.itheima.service.impl.*.*(..))
431 XML配置AOP步骤
432 第一步:创建代理类和被代理类的IOC配置
433 第二步:使用 aop:config  声明 aop  配置
434 第三步:使用 aop:aspect  配置切面
435 属性:id:给切面提供一个唯一标识。
436           ref:引用配置好的通知类 bean 的 id。
437 <aop:aspect id="txAdvice" ref="txManager">
438 </aop:aspect>
439 第四步:使用 aop:pointcut  配置切入点表达式
440 属性:
441 expression:用于定义切入点表达式。
442 id:用于给切入点表达式提供一个唯一标识
443 <aop:pointcut expression="execution(
444 public void com.itheima.service.impl.AccountServiceImpl.transfer(
445 java.lang.String, java.lang.String, java.lang.Float)
446 )" id="pt1"/>
447 第五步:使用 aop:xxx  配置 对应的通知类型
448 aop:before:前置通知
449 aop:after-returning:后置通知
450 aop:after-throwing:异常通知
451 aop:after:最终通知
452 aop:around:环绕通知
453 基于注解的 AOP 
454 第一步:把通知类使用 注解配置@Component("txManager")
455 第二步:在通知类上使用@Aspect  注解声明为切面
456 第三步:在增强的方法上使用注解配置通知@Before
457 第四步:在 spring  配置文件中开启 spring  对注解 AOP  的支持
458 <aop:aspectj-autoproxy/>
459 切入点表达式注解
460 @Pointcut
461 不使用 XML  的配置方式
462 @EnableAspectJAutoProxy
463 2.4.    spring第四天
464 2.4.1.    jdbcTemplate
465 概念
466  spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装
467 作用
468 对数据库表进行crud
469 API
470 增删改:update(sql,可变参数)
471 查询多个:query(sql,new beanProperyRowMapper,参数)
472 查询一个:queryForObject(sql,new beanProperyRowMapper,参数)
473 2.4.2.    基于xml配置声明式事务管理
474 步骤
475 第一步: 配置事务管理器
476 第二步:配置事务的通知引用事务管理器
477 <tx:advice id="txAdvice" transaction-manager="transactionManager">
478 </tx:advice>
479 第三步:配置事务的属性
480 <tx:method name="*" read-only="false" propagation="REQUIRED"/>
481 <tx:method name="find*" read-only="true" propagation="SUPPORTS"/>
482   第四步:配置 AOP  切入点表达式
483 <!-- 配置 aop -->
484 <aop:config>
485 <!-- 配置切入点表达式 -->
486 <aop:pointcut  expression="execution(*  com.itheima.service.impl.*.*(..))"
487 id="pt1"/>
488 </aop:config>
489 第五步:配置切入点表达式和事务通知的对应关系
490 <!-- 在 在 aop:config  标签内部:建立事务的通知和切入点表达式的关系 -->
491 <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/
492 2.4.3.    基于annotation声明式事务管理
493 步骤
494 第一步:配置事务管理器 并注入数据源
495 <!-- 配置事务管理器 -->
496 <bean  id="transactionManager"
497 class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
498 <property name="dataSource" ref="dataSource"></property>
499 </bean>
500 第二步:在业务层使用@Transactional  注解
501 @Transactional
502  第 三步:在配置文件中开启 spring  对注解事务的支持
503 <tx:annotation-driven transaction-manager="transactionManager"/>
504 不使用 xml  的配置方式
505 @EnableTransactionManagement
506 3.    springmvc
507 3.1.    springmvc第一天
508 3.1.1.    springmvc概述
509 SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架
510 3.1.2.    springmvc入门案例
511 1. 创建工程,导入依赖
512 2. web.mxl中配置核心控制器-  Servlet
513 3. 创建 spring mvc 的配置文件
514 4. 编写控制器并使用注解配置
515 5.测试
516 3.1.3.    springmvc执行流程
517 1、用户发送请求至前端控制器DispatcherServlet
518 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
519 3、处理器映射器根据请求url找到具体的处理器,并返回给DispatcherServlet。
520 4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
521 5、执行处理器(Controller,也叫后端控制器)。
522 6、Controller执行完成返回ModelAndView
523 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
524 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
525 9、ViewReslover解析后返回具体View
526 10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
527 11、DispatcherServlet响应用户
528 3.1.4.    请求参数的 绑定
529 基本类型参数
530 要求我们的参数名称必须和控制器中方法的形参名称保持一致
531 POJO  类型参数
532 要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是 POJO 类型
533 数组和集合类型参数
534 给 List 集合中的元素赋值,使用下标
535 给 Map 集合中的元素赋值,使用键值对
536 3.1.5.    常用注解
537  RequestMapping
538 用于建立请求 URL 和处理请求方法之间的对应关系
539 RequestParam
540 把请求中指定名称的参数给控制器中的形参赋值
541 RequestBody
542 用于获取请求体内容
543 PathVaribale
544 用于绑定 url 中的占位符,例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符
545 CookieValue
546 用于把指定 cookie 名称的值传入控制器方法参数
547 ModelAttribute
548 可以用于修饰方法和参数
549 方法:出现在方法上,表示当前方法会在控制器的方法执行之前,先执行
550 参数:出现在参数上,获取指定的数据给参数赋值
551 SessionAttribute
552 用于多次执行控制器方法间的参数共享
553 3.2.    springmvc第二天
554 3.2.1.    响应数据和结果视图
555 返回值分类
556 返回字符串
557 Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址
558 返回值是void
559 如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到
560 返回值是ModelAndView对象
561 ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图
562 SpringMVC框架提供的转发和重定向
563 forward请求转发
564 return "forward:/user/findAll";
565 redirect重定向
566 return "redirect:/user/findAll";
567 springmvc实现异步
568 ResponseBody响应json数据
569 @ResponseBody
570 3.2.2.    SpringMVC实现文件上传
571 文件上传三要素
572 1.表单提交方式必须是post
573 2.必须有文件上传项,且有name值
574 3.enctype="multipart/form-data"
575 springmvc方式实现文件上传
576 SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的
577 name属性名称相同
578 配置文件解析器 multipartResolver
579 SpringMVC跨服务器方式文件上传
580 1.搭建图片服务器
581 2.实现SpringMVC跨服务器方式文件上传
582 3.2.3.    springmvc的异常处理
583 异常处理思路
584  Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进行异常的处理。
585 SpringMVC的异常处理
586 1.自定义异常类
587 2.自定义异常处理器
588 3. 配置异常处理器
589 3.2.4.    SpringMVC框架中的拦截器
590 拦截器的概述
591 SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术
592 拦截器和过滤器的区别
593 过滤器配置了可以拦截任何资源
594 拦截器只会对控制器中的方法进行拦截
595 自定义拦截器步骤
596 1.创建类,实现HandlerInterceptor接口,重写需要的方法
597 2.在springmvc.xml中配置拦截器类
598 3.3.    springmvc第三天
599 3.3.1.    SSM整合
600 思路
601 Springmvc与spring整合
602 配置spring的监听器
603 mybatis与spring整合
604 将mybatis的配置交给spring编写
605  数据源
606  sessionFactroy
607  mapper映射
608  事务

 

posted @ 2018-11-16 21:04  aniymx  阅读(710)  评论(0编辑  收藏  举报