【JavaEE】NoteSet
1、Spring的概念和优点
①. Spring是一个轻量级的IOC和AOP容器框架
②. Spring是非侵入式的,基于Spring开发的应用一般不依赖于Spring的类
③. Spring是个容器,包含并且管理应用对象的生命周期和配置。
④. Spring提供对事务的管理
⑤. Spring对主流的框架提供了很好的集成支持。
2、Spring中的IoC和DI思想
IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。
DI(Dependence Injection 依赖注入):将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables)。
控制反转是一种思想,依赖注入是一种设计模式,IoC框架使用依赖注入作为实现控制反转的方式。
3、 ApplicationContext容器的使用
Application Context 是 spring 中较高级的容器,它可以加载配置文件中定义的 bean,
将所有的 bean 集中在一起,当有请求的时候分配 bean。
这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。
4、属性setter方法注入的实现
利用Spring配置文件applicationcontext.xml配置bean,并且setter参数注入 JDBCDataSource的连接参数,这样Spring在创建JDBCDataSource对象以后就会自动化的调用setter方法注入数据库连接参数。
5、Bean的常用属性及其子元素
spring框架中主要有四种标签bean、alias、import、beans,其中bean标签是其他标签的基础。
7、bean标签的属性
1)scope:用来配置spring bean的作用域
2)singleton:表示bean为单例的
3)abstract:设置为true,将该bean仅仅作为模板使用,应用程序上下文不会试图预先初始化它
4)lazy-init:设为true,延迟加载,该bean不会在ApplicationContext启动时提前被实例化,而是第一次向容器通过getBean索取bean时实例化
注:只对singleton的bean起作用
5)autowire:自动装配
6)dependency-check:依赖检查
7)depends-on:表示一个bean的实例化依靠另一个bean先实例化
8)autowire-candidate:设为false,容器在查找自动装配对象时,将不考虑该bean,即它不会被考虑作为其他bean自动装配的候选者,但是该bean本身可以使用自动装配来注入其他bean
9)primary:该bean优先被注入
10)init-method:初始化bean时调用的方法
11)destory-method:容器销毁之前所调用的方法
12)factory-method:当调用factory-method所指向的方法时,才开始实例化bean
13)factory-bean:调用静态工厂方法的方式创建bean
8、bean的子元素
1)meta:元数据,当需要使用里面的信息时可以通过key获取
2)lookup-method:获取器注入,是把一个方法声明为返回某种类型的bean但实际要返回的bean是在配置文件里面配置的
3)replaced-method:可以在运行时调用新的方法替换现有的方法,还能动态的更新原有方法的逻辑
4)constructor-arg:对bean自动寻找对应的构造函数,并在初始化的时候将设置的参数传入进去
5)property:基本数据类型赋值
6)qualifier:通过Qualifier指定注入bean的名称
9、实例化Bean的三种方式
1)、使用类构造器实例化;(默认无参数,一般使用这种方式)
2)、使用静态工厂方法实例化(简单工厂模式);
3)、使用实例化工厂实例化(工厂方法模式)。
每种实例化方法的xml配置是不同的。
10、Bean的作用域和生命周期
在Bean容器启动会读取bean的xml配置文件,然后将xml中每个bean元素分别转换成BeanDefinition对象。在BeanDefinition对象中有scope 属性,就是它控制着bean的作用域。
Spring框架支持5种作用域:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0iHYYutF-1615693977484)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps1.jpg)]
Bean实例生命周期的执行过程如下:
Spring对bean进行实例化,默认bean是单例;
Spring对bean进行依赖注入;
如果bean实现了BeanNameAware接口,spring将bean的id传给setBeanName()方法;
如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法,将BeanFactory实例传进来;
如果bean实现了ApplicationContextAware接口,它的setApplicationContext()方法将被调用,将应用上下文的引用传入到bean中;
如果bean实现了BeanPostProcessor接口,它的postProcessBeforeInitialization方法将被调用;
如果bean实现了InitializingBean接口,spring将调用它的afterPropertiesSet接口方法,类似的如果bean使用了init-method属性声明了初始化方法,该方法也会被调用;
如果bean实现了BeanPostProcessor接口,它的postProcessAfterInitialization接口方法将被调用;
此时bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用上下文被销毁;
若bean实现了DisposableBean接口,spring将调用它的distroy()接口方法。同样的,如果bean使用了destroy-method属性声明了销毁方法,则该方法被调用;
11、Bean的三种装配方式
隐式的bean扫描发现机制和自动装配:spring从两个角度实现自动化装配:组件扫描和自动装配。
在java中进行显示配置:通过java代码装配bean,。使用java代码,先新建一个配置类JavaConfig,里面都是配置所需的bean,不应该有业务逻辑代码,所以单独建一个类。
在XML中进行显示配置:配置postservice的bean时需要引入两个bean,postdao和userdao,放到constructor-arg的标签中,ref指的是依赖的bean的ID。如果是在javaConfig中配置的,就写@Bean的内容。如果是@Component就写@Qualifier的内容。这里是引入的是动态实现的dao接口的bean,是在spring-dao.xml中配置的,引入这个配置文件就可以自动获得beanID。
12、AOP的概念和作用
面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
面向切面编程,将通用需求功能从不相关的类中抽离出来,使很多类共享一个行为,一旦发生变化,不必修改很多类,只需修改这个行为即可。
面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序运行过程。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
一是减少重复,二是专注业务
13、AOP中的相关术语
连接点:类里面可以被增强的方法。
切入点:类里面实际被增强的方法。
通知/增强:增强的逻辑,比如增加的日志功能。
通知的分类:前置通知,后置通知,异常通知,最终通知,环绕通知。
切面:把增强用到具体的方法上面(把增强用到具体的切入点上面)
target:代理的目标对象
14、Spring中两种动态代理方式的区别
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换
15、基于代理类的AOP实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vjLKcvib-1615693977489)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps2.png)]
调用者Bean尝试调用目标方法,但是被生成的代理截了胡
代理根据Advice的种类(本例中是@Before Advice),对Advice首先进行调用
代理调用目标方法
返回调用结果给调用者Bean
16、基于xml和注解的Aspect开发
基于XML配置是指 通过XML配置文件定义切面、切入点及通知,所有的定义必须在< aop:config>元素内完成。
在使用AspectJ实现Spring AOP时,需要用到的jar包有:
spring-aop.jar
spring-aspects.jar
aspectjweaver.jar
17、Spring中JDBC模块的作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kWBhcVhZ-1615693977494)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps3.jpg)]
核心模块提供了框架的基本组成部分,包含IOC和依赖注入功能。
Bean模块提供BeanFactory,它是一个工厂模型的复杂实现
上下文模块建立在有核心和Bean模块提供的坚实的基础上,他是访问定义和配置的任何对象的媒介,AppliactionContext接口是上下文接口的重点
表达式语言模块在运行时提供了查询和操作一个对象图的强大的表达式语言。
JDBC模块提供了删除冗余的JDBC相关编码的JDBC抽象层。
ORM模块为流行的对象关系映射API,包含JPA,JDO,Hibernate和IBatis,提供了集成层。
OXM模块提供了抽象层,它支持对JAXB,Castor,XMlBeans,JiBx和XStream的对象/xml映射实现。Java消息服务JMS模块包含生产和消费的信息的功能。
事务模块为实现特殊接口的类及所有的POJO支持编程式和声明式事务管理。
JDBC模块提供了删除冗余的JDBC相关编码的JDBC抽象层。
ORM模块为流行的对象关系映射API,包含JPA,JDO,Hibernate和IBatis,提供了集成层。
OXM模块提供了抽象层,它支持对JAXB,Castor,XMlBeans,JiBx和XStream的对象/xml映射实现。Java消息服务JMS模块包含生产和消费的信息的功能。
事务模块为实现特殊接口的类及所有的POJO支持编程式和声明式事务管理。
18、Spring JDBC的配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-beHbXdZZ-1615693977500)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps4.jpg)]
19、 JdbcTemplate类中几个常用方法的使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wzJ2REt-1615693977503)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps5.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nsSis3rF-1615693977505)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps6.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rt6woRYS-1615693977506)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps7.jpg)]
20、MyBatis的基础知识
Mybatis 是一个半自动的ORM持久成框架。apache下的顶级项目。
Mybatis是JDBC的轻量级的封装,使用时程序员只需要注入sql语句,mybatis通过映射可以灵活生成满足数据库的sql语句。
解决了jdbc的一下几个问题:
1)jdbc创建和销毁数据库的连接耗资源过大,mybatis框架内置连接池。
2)sql语句在javaWeb 项目中,修改sql语句需要修改java项目中的代码不利于维护。mybatis采用配置文件注入sql语句,使sql语句与java代码分离。
3)使用jdbc查询对象时,够多的参数书写不方便。(每一个参数需要书写一个?占位符,并且还需要写一句对应的java语句)且不利于维护;Mybatis使用自动映射java对象至sql语句,通过statement的parameterType进行传参
4).jdbc查询时存在硬编码,当sql语句改变,系统解析是也发生变化,造成系统不利于维护。Mybatis使用自动sql语句至Java对象,通过statement的resultType进行传参
21、myBatis的工作原理
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。用xml文件构建SqlSessionFactory实例是非常简单的事情。
22、 了解MyBatis核心对象的作用
1、SqlSessionFactoryBuilder:负责构建SqlSessionFactory,并且提供了多个build()方法的重载
2、SqlSessionFactory:创建SqlSession实例的工厂
3、SqlSession:用于执行持久化操作的对象。
23、 MyBatis配置文件中各个元素的作用
1.<properties… />元素,是用来修改配置文件中数据库连接的信息
2.<settings元素主要用于改变MyBatis运行时的行为,例如开启二级缓存、开启延迟加载等。
3.<typeAliases元素用于为配置文件中的Java类型设置一个简短的名字,即设置别名。别名的设置与XML配置相关,其使用的意义在于减少全限定类名的冗余。
4.typeHandler的作用就是将预处理语句中传入的参数从javaType(Java类型)转换为jdbcType(JDBC类型),或者从数据库取出结果时将jdbcType转换为javaType。
5.<objectFactoty元素,MyBatis中默认的ObjectFactory的作用是实例化目标类,它既可以通过默认构造方法实例化,也可以在参数映射存在的时候通过参数构造方法来实例化。通常使用默认的ObjectFactory即可
6.<plugins元素,用来增加插件;MyBatis允许在已映射语句执行过程中的某一点进行拦截调用,这种拦截调用是通过插件来实现的。<plugins元素的作用就是配置用户所开发的插件
7.<environments元素用于对环境进行配置。MyBatis的环境配置实际上就是数据源的配置,我们可以通过<environments元素配置多种数据源,即配置多种数据库。
8.<mappers 元素用于指定MyBatis映射文件的位置,一般可以使用以下4种方法引入映射器文件。
24、 MyBatis映射文件中常用元素的使用
可以通过读取映射文件调用相应的方法,获取SqlSessionFactoty工厂对象;sql语句都写在映射文件中(查询,插入,删除,更新等)
在映射文件中,<mapper元素是映射文件的根元素,其他元素都是它的子元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-viPCyMlp-1615693977507)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps8.jpg)]
25、常用的动态SQL元素及其作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Z8rieAk-1615693977508)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps9.png)]
26、传统DAO方式的开发整合
实现持久层
1.创建包cn.lctvu.po,在该包中创建Customer.java
2.在cn.lctvu.po包中创建映射文件CustomerMapper.xml
3.在MyBatis的配置文件mybatis-config.xml中,配置映射文件CustomerMapper.xml
实现DAO层
1.在src目录下,创建一个cn.lctvu.dao包,并在包中创建接口CustomerDao,在接口中编写一个通过id查询客户的方法findCustomerById()
CustomerDao.java
2.在cn.lctvu.dao下再创建impl包,并在包中创建CustomerDao接口的实现类CustomerDaoImpl
3.在Spring的配置文件applicationContext.xml中,编写实例化CustomerDaoImpl的配置。整合测试
27、掌握Mapper接口方式的开发整合
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7yI5x91d-1615693977509)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps10.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOROrOlD-1615693977510)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps11.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KPA1hG9G-1615693977511)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps12.jpg)]
28、Spring MVC的特点
1.他是基于组件技术的,全部是应用对象,无论是控制器或视图,还是业务对象的类都是java组件,并且和spring提供的其他基础结构紧密集成.
2.不依赖于servlet Api
3.可以使用任意一种视图技术,不仅仅是jsp.
4.支持各种请求资源的映射策略.
5.是易于扩展的.
29、Spring MVC的工作流程
1.用户提交请求至前端控制器DispatcharServlet
2.dispatcharServlet控制器查询一个或多个handlerMaping,找到处理请求的controller
3.dispatcharServlet控制器将请求提交到controller
4.controller进行业务逻辑处理后,返回ModelAndView对象,该对象本身包含了视图对象的信息
5.DispatcherServlet控制器查询一个或多个ViewResoler视图解析器,找到ModelAndView对象指定的视图对象.
6.视图负责将结果返回到客户端.
30、Spring MVC核心类的作用
制器核心类:(入口类)
org.springframework.web.servlet.DispatcherServlet - 配置web.xml
加载配置文件核心类:
org.springframework.web.context.ContextLoaderListener – spring的配置文件
处理url影射核心类:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping-根据bean的名称请求一个bean. spring的配置文件- /abc
处理视图资源核心类:
org.springframework.web.servlet.view.ResourceBundleViewResolver
return hello – 决定返回的字符串由哪一个页面来显示。
<context:component-scan package=“cn.hncu”/>用于替代上面的类。
方法动态调用核心类
org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver
31、Spring MVC常用注解的使用
1、@Controller注解类型
org.springframework.stereotype.Controller注解类型用于指示Spring 类的实例是一个控制器,
其注解形式为@Controller。
该注解在使用时 不需要再实现Controller接口,只需要将@Controller注解加入到控制器 类上,
然后通过Spring的扫描机制找到标注了该注解的控制器即可。
2、@RequestMapping注解类型
Spring通过@Controller注解找到相应的控制器类后,还需要知道控制器内部对每一个请求是如何处理的
这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法。
使用时,可以标注在一个方法或一个类上。
标注在方法上:作为请求处理方法在程序接收到对应的URL请求时被调用
3、组合注解
@GetMapping:匹配GET方式的请求;
@PostMapping:匹配POST方式的请求;
@PutMapping:匹配PUT方式的请求;
@DeleteMapping:匹配DELETE方式的请求;
@PatchMapping:匹配PATCH方式的请求。
为了保证Spring能够找到控制器类,还需要在Spring MVC的配置文件中添加 相应的扫描配置信息
在applicationContext.xml 中引入context命名空间
32、Spring MVC中的数据绑定的概念
在执行程序时,Spring MVC会根据客户端请求参数的不同,将请求消息中的信息以一定的方式转换并绑定到控制器类的方法参数中。这种将请求消息数据与后台方法参数建立连接的过程就是Spring MVC中的数据绑定。
33、Spring MVC中的几种数据绑定类型
基本类型数据绑定、包装类型参数绑定、数组元素绑定、多层级对象的绑定、同属性对象参数绑定、List绑定、Map绑定、表单多对象传递的绑定。
34、Spring MVC数据绑定的使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LA1JG0hU-1615693977512)(file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml10644\wps13.jpg)]
Spring MVC将ServletRequest对象传递给DataBinder;
将处理方法的入参对象传递给DataBinder;
DataBinder调用ConversionService组件进行数据类型转换、数据格式化等工作,并将ServletRequest对象中的消息填充到参数对象中;
调用Validator组件对已经绑定了请求消息数据的参数对象进行数据合法性校验;
校验完成后会生成数据绑定结果BindingResut对象,Spring MVC会将BindingResult对象中的内容赋给处理方法的相应参数。
35、JSON的数据结构
对象:{“name”:“Michael”,“age”:24}
数组:比如:[{“name”:“Michael”,“age”:24},{“name”:“Tom”,“age”:25}]
值:{“name”:“Michael”, “birthday”:{“month”:8,“day”:26}},类似于对象嵌套对象.
很多人疑惑{}和[]形式的区别。看到一段很经典的总结:大括号{}用来描述一组“不同类型的无
序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
36、Spring MVC中JSON数据交互的使用
前台传过来的方式有两种,一种是传json格式的数据过来,另一种就是在url的末尾传普通的key/value串过来,针对这两种方式,在Controller类中会有不同的解析,但是在Controller类中返回的json格式的数据都是一样的。
37、RESTful风格的请求样式
1、GET[select] 请求会向数据库发索取数据的请求,从而来获取信息,其只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容。无论进行多少次操作,结果都是一样的。
2、PUT[update] 请求是向服务器端发送数据的,从而改变信息,其用来修改数据的内容,但是不会增加数据的种类等,无论进行多少次PUT操作,其结果并没有不同。
3、POST[insert]请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源.几乎目前所有的提交操作都是用POST请求的。
4、DELETE[delete]请求是用来删除某一个资源的。
38、Spring MVC中| RESTful风格请求的使用
Spring mvc可以使用@RequestMapping的路径设置,结合@PathVariable的参数指定,来实现RESTful风格的请求。
39、拦截器的定义
要使用Spring MvC中的拦截器,就需要对拦截器类进行定义和配置。通常拦载器类可以通过两种方式来定义。一种是通过实现 HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如HandlerInterceptorAdapter)来定义;另一种是通过实现WebRequestInterceptor接口,或继承WebRequestInterceptor接口的实现类来定义。
40.拦截器的配置
针对拦截器配置:需要在某个HandlerMapping配置中将拦截器作为参数配置进去,此后通过该HandlerMapping映射成功的Handler就会使用配置好的拦截器
针对全局配置:只需要在Spring的类加载配置文件中添加"mvc:interceptors"标签对,在该标签对中配置的拦截器,可以起到全局拦截器的作用,这是因为该配置会将拦截器注入到每一个HandlerMapping处理器映射器中。
41.单个拦截器的执行流程
程序先执行preHandle()方法,如果该方法的返回值为true,则程序会继续向下执行处理器中的方法,否则将不再向下执行
在业务处理器(即控制器类Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向客户端返回响应
在DispatcherServlet处理完请求后,才会执行afterCompletion()方法
42、多个拦截器的执行流程
1、当俩个拦截器都实现放行操作时,顺序为preHandle 1,preHandle 2,postHandle 2,postHandle 1,afterCompletion 2,afterCompletion 1
2、当第一个拦截器preHandle返回false,也就是对其进行拦截时,第二个拦截器是完全不执行的,第一个拦截器只执行preHandle部分。
3、当第一个拦截器preHandle返回true,第二个拦截器preHandle返回false,顺序为preHandle 1,preHandle 2 ,afterCompletion 1
43、Spring MVC中文件上传的实现步骤
jsp页面的编写,编写UploadController,springMVC.xml配置文件上传解析器,测试
44、SSM框架的整合思路
1.DAO层
1.1使用mybatis。需要创建SqlMapConfig.xml.
1.2在dao层还需要一个applicationContext-dao.xml文件。
这个里边需要配置数据源
需要让spring容器管理sqlsessionFactory,单利存在
把mapper的代理对象放到spring容器中,使用扫描包的方式加载mapper的代理对象
2.Service层
2.1事物管理
2.2需要把service层实现类对象放到spring容器中管理
3.表现层
3.1配置注解驱动
3.2配置视图解析器
3.3需要扫描controller
4.web.xml文件
4.1spring容器配置
4.2springmvc前端控制器配置
4.3解决乱码问题,配置post乱码过滤器。
45、ssm框架整合时的配置文件内容
applicationContext.xml
1.配置数据源 2.配置mybatis的sqlSessionFactory工厂 3 .自动扫描包,并且生成mapper的实现类 4.配置事务核心管理器(利用Spring事务机制必配) 5.开启注解事务
SpringMVC.xml
1.开启注解扫描 2.配置处理器映射器,处理器适配器 3.配置视图解析器 4.配置处理器对静态资源放行
MybatisConfig.xml
Web.xml
1.配置spring容器相关的资源文件和创建容器的监听类 2.处理post方式提交乱码问题 3.配置springmvc的核心servlet接管请求
46、SSM框架整合应用程序的编写
第一步:引入依赖
第二步:在mian下创建webapp,在webapp下创建WEB-INF,在WEB-INF下创建web.xml
第五步:编写Springmvc的配置文件 Springmvc-servlet.xml文件第二步:在mian下创建webapp,在webapp下创建WEB-INF,在WEB-INF下创建web.xml
第四步:编写spring的AOP配置文件applicationContext-tx.xml文件(事物)
第五步:编写Springmvc的配置文件 Springmvc-servlet.xml文件
第六步:编写mapper文件