目录
Spring MVC支持的常见方法返回类型:(1 5 6常见类型)
11
11.1 Spring MVC概述
Spring MVC优点:
1 是Spring框架一部分,可使用Spring中的功能。
2 灵活,可与其他框架通用。
3 提供的前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。(不理解)
4 可自动绑定用户输入,并能正确的转换数据类型。(不理解)
5 内置常见校验器,可以校验用户输入,如果不能通过,则重定向到输入表单。(不理解)
6 支持国际化,可根据用户区域显示多国语言。(不理解)
7 使用基于xml的配置文件,在编辑后,不需要重新编译程序。(不理解)
8 支持多种视图技术,比如jsp, velocity,freemarker等。
11.2 第一个Spring MVC应用
编程步骤
1 导包
2 添加配置文件
3 配置DispatcherServlet
元素值为1则表示应用程序启动时会立即加载该Servlet,若不存在则应用程序在第一个Servlet请求时加载该Servlet。(不理解)
配置文件的位置若配置了则在应用程序启动时加载,没有配置则默认在web-inf
目录下寻找servletname-servlet.xml命名方式的配置文件(如
Springmvc-servlet.xml)。
4 写Controller(处理器),实现Controller接口,并重写handleRequest()。(这里使用Controller接口的方式开发一个控制器)
5 配置配置文件,配置控制器的信息。
---在Spring容器的配置文件中,添加HandlerMapping的配置信息。
---在Spring的配置文件中,配置Controller(即配置bean对象)。
---在Spring配置文件中,配置视图解析器ViewResolver。
6 写jsp,即视图页面
详见188页。
11.3 Spring MVC的工作流程
见课本177页。
Spring MVC是:
是一个MVC框架,是用来简化基于MVC架构的WEB应用开发。
五大组件:
1 DispatcherServlet(前端控制器)
--接受请求,依据HandlerMapping的配置信息调用相应的模型。
2 HandlerMapping(处理器映射器)
--包含了请求路径与模型对应关系。
3 Controller(处理器/模型)
--负责处理业务逻辑。
4 ModelAndView
--封装了处理结果。注意:处理结果除了数据之外,还可能有视图名。
5 ViewResolver
--DispatcherServlet依据ViewResolver的解析结果,调用真的视图对象来生成相应的页面。
12
12.1 DispatherServlet
充当前端控制器的角色,见11.2编程步骤第3条。
12.2 Controller注解类型
指示Spring类的实例是一个控制器,作用与实现Controller接口一样。
写法:
--在类上面添加@Controller注解。
--通过Spring的扫描机制找到标注了该注解的控制器即可(实现此效果需要在配置文件中添加相应的扫描配置信息。步骤:1在配置文件的声明中引入spring-context。 2使用元素指定需要扫描的包名,这样就会在此包下所有标注的注解的类都会被Spring处理)。
与实现接口写控制器的方法相比:此种简单(更常用),基于注解的控制器可同时处理多个(另种只能处理单一的请求动作),灵活。
12.3 RequestMapping注解类型
实现控制器内部对每个请求的控制,用于映射一个请求/方法。
写法:在方法/类上添加此注解。
1标注在方法上,此方法会成为一个请求处理方法,它会在程序接收到对应的url请求时被调用。
2 标注在类上,类中的多有方法将映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。
请求访问时需改路径,类中所有方法都需在请求路径中添加。
此注解的属性:见183页
组合注解:
--作用:简化常用http映射,更好表达被注解方法的语义。
@Get/Post/Put/Delete/@PatchMapping:匹配Get/Post/Put/Delete/@Patch方式的请求。
12.3.4 请求处理方法的参数类型和返回类型:
每一个请求处理方法可有不同类型的参数,和一个多种类型的返回结果。
Spring MVC支持的常见方法返回类型:(1 5 6常见类型)
1 ModelAndView(可添加Model数据并指定视图,但不能实现数据与视图间的解耦)
2 Model
3 Map
4 view
5 String(常用,其类型的返回值可跳转视图但不能携带数据,那怎么在方法中将数据带入视图页面?见答5。也可进行重定向与请求转发,见答6。)
6 void(主要在异步请求时使用,只返回数据不跳转视图)
7 HttpEntity<T>和ResponseEntity
8 Callable<V>和DeferredResult
答5:
答6:redirect重定向
forward请求转发
12.4 ViewResolver(视图解析器)见186页
12.5 应用案例
精确匹配:比如/user/login.html 此中一个请求路径对应一个servlet,很复杂,需要写大量配置文件。
扩展名匹配(后缀):*.do
路径匹配:/或/* 什么意思
1同步请求对象Request
参数值要与请求参数名一致
Request.getParameter(“username”);
2通过@RequestParam()注解
a可以通过形参名与请求参数名一致,来获取请求参数。
b为了避免不一致,要将该注解添加在形参前面。
c该注解的参数是请求参数的名称。
例如:
3使用javaBean封装请求参数值
a写一个Java类, 私有属性名要与请求参数名一致,并提供相应的set get方法。
b将该JavaBean作为处理方法的形参。
向页面传值
1使用Request对象
a将数据绑定到 request对象,然后转发到jsp
bspringmvc默认使用的是转发
c在前端页面中,可以使用el表达式通过绑定名获取值。
2ModeAndView
a先将数据封装到了ModelAndView对象中,再将该对象作为方法的返回值,还要包含视图名。
b在前端页面使用el表达式获取。
3ModelMap
将该对象作为方法的参数,然后将数据绑定到该对象上。
4Session
将该对象作为方法的参数,然后将数据绑定到该对象上。