SpringMVC笔记
SpringMVC笔记
你别睡这么晚一、Spring框架
1.典型的Web层框架包括:
Struts1
Web work
Struts2
Spring MVC
Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。采用工厂模式。它与Struts2框架一样,都属于MVC框架,但其使用和性能等方面比Struts2更加优异。SpringMVC项目中必须添加的JAR包包括:4个核心JAR包、commons-logging的JAR以及两个web相关的JAR(spring-web和spring-webmvc的JAR包)。
2.Spring MVC的特点。
(1) 是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
(2) 灵活性强,易于与其他框架集成。
(3) 提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。
(4) 可自动绑定用户输入,并能正确的转换数据类型。
(5) 内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。
(6) 支持国际化。可以根据用户区域显示多国语言。
3.Spring MVC主要有如下优点:
(1)是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
(2)灵活性强,易于与其他框架集成。
(3)提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。
(4)可自动绑定用户输入,并能正确的转换数据类型。
(5)内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。
(6)支持国际化。可以根据用户区域显示多国语言。
(7)支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。
(8)使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。
4.Spring MVC框架的工作流程如下:
(1)用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。
(2)DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器。
(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 。
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。
(5)HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器。
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet 。
(8)DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器)。
(9)ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图)。
(10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。
(11)视图渲染结果会返回给客户端浏览器显示。
5.在web.xml中,配置Spring MVC的前端控制器DispatcherServlet
如果没有通过
6.控制器方法的返回值类型
ModelAndView类型中可以添加Model数据,并指定视图;String类型的返回值可以跳转视图,但不能携带数据;而void类型主要在异步请求时使用,它只返回数据,而不会跳转视图。
7.@Controller注解在使用时可分为如下两步:
(1)在相应的类上标注@Controller注解。
(2)在Spring MVC的配置文件中添加相应的扫描配置信息。首先需要在配置文件中引入context名称空间的配置,然后使用<context:component-scan>
元素指定需要扫描的类包。
8.SpringMVC框架下请求处理方法的参数类型:
基于SpringMVC框架下请求处理方法的参数类型主要有:HttpServletRequest、HttpServletResponse、HttpSession、Model、HttpMethod等;
基于SpringMVC框架下请求处理方法的返回类型主要有:ModelAndView、Map、String、void、HttpEntity<?>、View等。
9.SpringMVC中获取输入值的方式主要有:
在action的方法中写与请求参数同名的变量
在action的方法的参数中使用HttpServletRequest、HttpServletResponse、HttpSession、Model、HttpMethod等对象
在方法的参数中使用@RequestParam注解
界面上的输入信息是某个自定义对象的信息,在接收的时候直接封装为该自定义对象
把请求参数放到请求路径中,即采用RESTful风格。
10.SpringMVC中对用户的响应方式主要有:
返回ModelAndView对象,如new ModelAndView(“studentList”,model),第一个参数表示视图,第二参数表示视图中需要的数据。
1 |
|
控制层的方法返回值类型为String,在方法中返回表示输出界面的字符串,与ModelAndView中的第一个参数相同
1 |
|
使用String表示要返回的视图,使用Model表示要返回的数据。在请求方法的参数中定义Model对象,在请求方法体中把数据存储到Model对象中响应给前端页面。
1 |
|
返回JSON数据。
11.@RequestParam注解
@RequestParam注解主要用于对请求中的参数进行定义,多用于在请求参数名与方法形参名不一致时的参数间接绑定。在使用时可以指定他的4个属性,具体如下:
(1)value:name属性的别名,这里指参数的名字,即入参的请求参数名字,如果只使用vaule属性,则可以省略value属性名。
(2)name:用于指定请求头绑定的名称。
(3)required :用于指定参数是否必须,默认是true,表示请求中一定要有相应的参数。
(4)defaultValue:默认值,表示如果请求中没有同名参数时的默认值。
12.在使用包装POJO类型数据绑定时
在使用包装POJO类型数据绑定时,前端请求的参数名编写必须符合以下两种情况:
(1)如果查询条件参数是包装类的直接基本属性,则参数名直接用对应的属性名;
(2)如果查询条件参数是包装类中POJO的子属性,则参数名必须为“对象.属性”,其中“对象”要和包装POJO中的对象属性名称一致,“属性”要和包装POJO中的对象子属性一致。
13.JSON数据交互时,主要使用的两个注解@RequestBody和@ResponseBody
JSON数据交互时,主要使用了两个注解@RequestBody和@ResponseBody。其中@RequestBody用于将请求体中的数据绑定到方法的形参中,在使用时标准在在方法的形参上。@ResponseBody用于直接返回return对象。Jackson用到的开源包的有 jackson-annoations-2.8.8.jar、 jackson-core-2.8.8.jar、jackson-databind-2.8.8.jar。
14.JSON对象的数组结构
JSON对象的数组结构以 “[” 开始,以 “]” 结束,对象结构以 “{” 开始,以 “}”结束,JSON对象数据结构的中间部分由键值对(key:value)以英文 “,” 分隔的值的列表组成。关键字(key)必须为String类型,值(value)可以是String、Number、Object、Array等数据类型。
15.RESTful
RESTful也称之为REST,是英文“Representational State Transfer”的简称。RESTful风格在HTTP请求中,使用put、delete、post和get方式分别对应添加、删除、修改和查询的操作。
16.@PathVariable(“id”)注解
@PathVariable(“id”)注解用于接收并绑定请求参数,它可以将URL请求中的变量映射到请求方法的形参上。
如果请求路径中的参数名方法形参名称一样,则@PathVariable后面的 “ (“id”) ” 可以省略。
17.Spring MVC的文件上传
Spring MVC的文件上传是通过MultipartResolver对象实现的。
文件上传表单需要满足的3个条件如下:
(1) form表单的method属性设置为post;
(2) form表单的enctype属性设置为multipart/form-data;
(3) 提供的文件上传输入框。