@@ -8237,9 +8237,12 @@ ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.
82378237
82388238 **开始创建**:`doCreateBean(beanName, RootBeanDefinition, Object[] args)`
82398239
8240+ * 清除缓存:如果bean是单例,就先清除缓存中的bean信息
8241+
82408242 * **创建实例**:`createBeanInstance(beanName, RootBeanDefinition, Object[] args)`
8241- * 优先级从高到低:工厂方法、有参**构造函数**、默认构造函数
8242- * 将 BeanDifinition 转化成 BeanWrapper,Spring给所有创建的Bean实例包装成BeanWrapper,BeanWrapper是对反射相关API的简单封装,使得上层使用反射完成相关的业务逻辑大大简化
8243+
8244+ * 优先级从高到低:工厂方法、有参**构造函数**、无参构造函数
8245+ * Spring给所有创建的Bean实例包装成BeanWrapper,BeanWrapper是对反射相关API的简单封装,使得上层使用反射完成相关的业务逻辑大大简化
82438246
82448247 * 后置处理:`applyMergedBeanDefinitionPostProcessors()`
82458248 * 将所有的后置处理器拿出来,并且把名字叫beanName的类中的变量都封装到InjectionMetadata的injectedElements集合里面,目的是以后从中获取,创建实例,通过反射注入到相应类
@@ -8296,8 +8299,6 @@ ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.
82968299
82978300 * 根据不同的scope进行disposableBean的注册,在销毁对象时调用destory()
82988301
8299- 总结:Bean的初始化过程:共仓
8300-
83018302
83028303
83038304****
@@ -9830,7 +9831,7 @@ ModelAndView 是SpringMVC提供的一个对象,该对象可以用作控制器
98309831
98319832注解:@ResponseBody
98329833
9833- 作用:将Controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到Response的body区。如果返回值是字符串,那么直接将字符串返回客户端;如果是一个对象,会将对象转化为Json,然后返回客户端。
9834+ 作用:将Controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到Response的body区。如果返回值是字符串,那么直接将字符串返回客户端;如果是一个对象,会**将对象转化为Json**,返回客户端
98349835
98359836注意:当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
98369837
@@ -10128,7 +10129,7 @@ ModelAndView 是SpringMVC提供的一个对象,该对象可以用作控制器
1012810129名称:@RequestBody
1012910130类型:形参注解
1013010131位置:处理器类中的方法形参前方
10131- 作用:将异步提交数据组织成标准请求参数格式 ,并赋值给形参
10132+ 作用:将异步提交数据**转换**成标准请求参数格式 ,并赋值给形参
1013210133范例:
1013310134
1013410135```java
@@ -10374,6 +10375,8 @@ public User cross(HttpServletRequest request){
1037410375
1037510376
1037610377
10378+
10379+
1037710380***
1037810381
1037910382
@@ -10488,16 +10491,19 @@ public void afterCompletion(HttpServletRequest request,
1048810491
1048910492### 拦截配置
1049010493
10494+ 拦截路径:
10495+
10496+ * ` /** ` :表示拦截所有映射
10497+ * ` /* ` :表示拦截所有/开头的映射
10498+ * ` /user/* ` :表示拦截所有/user/开头的映射
10499+ * ` /user/add* ` :表示拦截所有/user/开头,且具体映射名称以add开头的映射
10500+ * ` /user/*All ` :表示拦截所有/user/开头,且具体映射名称以All结尾的映射
10501+
1049110502``` xml
1049210503<mvc : interceptors >
1049310504 <!-- 开启具体的拦截器的使用,可以配置多个-->
1049410505 <mvc : interceptor >
10495- <!-- 设置拦截器的拦截路径,支持*通配-->
10496- <!-- /** 表示拦截所有映射-->
10497- <!-- /* 表示拦截所有/开头的映射-->
10498- <!-- /user/* 表示拦截所有/user/开头的映射-->
10499- <!-- /user/add* 表示拦截所有/user/开头,且具体映射名称以add开头的映射-->
10500- <!-- /user/*All 表示拦截所有/user/开头,且具体映射名称以All结尾的映射-->
10506+ <!-- 设置拦截器的拦截路径,支持*通配-->
1050110507 <mvc : mapping path =" /handleRun*" />
1050210508 <!-- 设置拦截排除的路径,配置/**或/*,达到快速配置的目的-->
1050310509 <mvc : exclude-mapping path =" /b*" />
@@ -10886,20 +10892,14 @@ ExceptionHandler注解:
1088610892
1088710893### Rest 概述
1088810894
10889- Rest ( REpresentational State Transfer ) :一种网络资源的访问风格,定义了网络资源的访问方式
10895+ Rest ( Representational State Transfer ) :一种网络资源的访问风格,定义了网络资源的访问方式
1089010896
10891- * 传统风格访问路径
10892- http: // localhost/user/get?id=1
10893- http: // localhost/deleteUser?id=1
10894- * Rest 风格访问路径
10895- http: // localhost/user/1
10897+ * 传统风格访问路径:http:// localhost/user/get?id=1
10898+ * Rest风格访问路径:http:// localhost/user/1
1089610899
1089710900Restful是按照Rest风格访问网络资源
1089810901
10899- 优点:
10900-
10901- * 隐藏资源的访问行为,通过地址无法得知做的是何种操作
10902- * 书写简化
10902+ 优点:隐藏资源的访问行为,通过地址无法得知做的是何种操作,书写简化
1090310903
1090410904Rest行为约定方式:
1090510905
@@ -10913,32 +10913,50 @@ Rest行为约定方式:
1091310913
1091410914 注意:上述行为是约定方式,约定不是规范,可以打破,所以称Rest风格,而不是Rest规范
1091510915
10916+
10917+
1091610918***
1091710919
1091810920
1091910921
10920- ### Restful 开发
10922+ ### Restful
10923+
10924+ Restful请求路径简化配置方式:@RestController = @Controller + @ResponseBody
10925+
10926+ 相关注解:
10927+
10928+ * `@GetMapping ("/poll ")` = `@RequestMapping (value = "/poll ",method = RequestMethod .GET )`
10929+
10930+ * `@PostMapping ("/push ")` = `@RequestMapping (value = "/push ",method = RequestMethod .POST )`
1092110931
10922- Restful 请求路径简化配置方式:** @RestController = @Controller + @ResponseBody **
10932+ * `@GetMapping ("{id }")`:Restful开发
10933+
10934+ ```java
10935+ public String getMessage (@PathVariable (" id" ) Integer id ){}
10936+ ```
10937+
10938+ `@PathVariable `注解的参数一般在有多个参数的时候添加
10939+
10940+ 过滤器:HiddenHttpMethodFilter 是SpringMVC 对Restful 风格的访问支持的过滤器,
10941+
10942+ 代码实现:
1092310943
1092410944* restful. jsp
10925- 开启SpringMVC 对Restful 风格的访问支持过滤器,即可** 通过页面表单提交PUT ** 与DELETE 请求
1092610945 页面表单使用隐藏域提交请求类型,参数名称固定为_method,必须配合提交类型method= post使用
10927-
10928- * GET 请求通过地址栏可以发送,也可以通过设置form的请求方式提交
10946+
10947+ * GET 请求通过地址栏可以发送,也可以通过设置form的请求方式提交
1092910948 * POST 请求必须通过form的请求方式提交
10930-
10931- ```html
10949+
10950+ ```html
1093210951 < % @page pageEncoding= " UTF-8" language= " java" contentType= " text/html;UTF-8" % >
1093310952 < h1> restful风格请求表单< / h1>
1093410953 < % -- 切换请求路径为restful风格-- % >
1093510954 < form action= " /user/1" method= " post" >
1093610955 < % -- 当添加了name为_method的隐藏域时,可以通过设置该隐藏域的值,修改请求的提交方式,切换为PUT 请求或DELETE 请求,但是form表单的提交方式method属性必须填写post-- % >
10937- < % -- 该配置需要配合HiddenHttpMethodFilter 过滤器使用,单独使用无效,请注意检查web. xml中是否配置了对应过滤器-- % >
1093810956 < input type= " text" name= " _method" value= " PUT" / >
1093910957 < input type= " submit" / >
1094010958 < / form>
10941- ```
10959+ ```
1094210960
1094310961
1094410962* java / controller / UserController
@@ -11008,49 +11026,17 @@ Restful请求路径简化配置方式:**@RestController = @Controller + @Respo
1100811026* 配置拦截器 web. xml
1100911027
1101011028 ```xml
11011- < ? xml version= " 1.0" encoding= " UTF-8" ? >
11012- < web- app xmlns= " http://xmlns.jcp.org/xml/ns/javaee"
11013- xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
11014- xsi: schemaLocation= " http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
11015- version= " 3.1" >
11016- < filter>
11017- < filter- name> characterEncodingFilter< / filter- name>
11018- < filter- class> org.springframework.web.filter.CharacterEncodingFilter</ filter- class>
11019- < init- param>
11020- < param- name> encoding< / param- name>
11021- < param- value> UTF - 8 < / param- value>
11022- < / init- param>
11023- < / filter>
11024- < filter- mapping>
11025- < filter- name> characterEncodingFilter< / filter- name>
11026- < url- pattern> /* </url-pattern>
11027- </filter-mapping>
11028-
1102911029 < ! -- 配置拦截器,解析请求中的参数_method,否则无法发起PUT 请求与DELETE 请求,配合页面表单使用-- >
11030- <filter>
11031- <filter-name>HiddenHttpMethodFilter</filter-name>
11032- <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
11033- </filter>
11034- <filter-mapping>
11035- <filter-name>HiddenHttpMethodFilter</filter-name>
11036- <servlet-name>DispatcherServlet</servlet-name>
11037- </filter-mapping>
11038-
11039- <servlet>
11040- <servlet-name>DispatcherServlet</servlet-name>
11041- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
11042- <init-param>
11043- <param-name>contextConfigLocation</param-name>
11044- <param-value>classpath*:spring-mvc.xml</param-value>
11045- </init-param>
11046- </servlet>
11047- <servlet-mapping>
11048- <servlet-name>DispatcherServlet</servlet-name>
11049- <url-pattern>/</url-pattern>
11050- </servlet-mapping>
11051- </web-app>
11030+ < filter>
11031+ < filter- name> HiddenHttpMethodFilter</ filter- name>
11032+ < filter- class> org.springframework.web.filter.HiddenHttpMethodFilter</ filter- class>
11033+ < / filter>
11034+ < filter- mapping>
11035+ < filter- name> HiddenHttpMethodFilter</ filter- name>
11036+ < servlet- name> DispatcherServlet</ servlet- name>
11037+ < / filter- mapping>
1105211038 ```
11053-
11039+
1105411040
1105511041
1105611042
0 commit comments