mvc_01

请求流程
用户发送请求至前端控制器DispatcherServlet
DispatcherServlet收到请求调用HandlerMapping处理器映射器。
处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
执行处理器(Controller,也叫后端控制器)。
Controller执行完成返回ModelAndView
HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
DispatcherServlet将ModelAndView传给ViewReslover视图解析器
ViewReslover解析后返回具体View
DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
DispatcherServlet响应用户
以上流程是以DispatcherServlet为核心轴,并且DispatcherServlet就是一个Servlet

XML方式
1 创建项目并导包
创建web项目,已经非常熟悉,不再多说
需要导入的包支持

2 配置文件
web.xml

basic-servlet.xml

3 控制器类

4 jsp页面
视图解析器这里,我们指定了文件的目录和后缀
当controller返回了welcome的时候 就会去找WEB-INF/jsp/welcome.jsp
需要创建对应的jsp

5 运行测试
运行web程序,浏览器输入
http://localhost:8080/SpringMVC_01_Basic/w

6 小结
创建项目,引入依赖
配置web.xml
因为现在,所有请求,我们都希望通过spring mvc进行管理
配置servlet
name
class:对应的路径(DispatchServlet)
配置了servletMapping
servlet-name: 对应到上面的名字
地址 /
配置Spring
文件的位置要和web.xml同级
文件名字和servlet中servlet的名字对应上
servlet名字-servlet.xml
配置MappingHandle的实例

配置映射关系
配置 视图解析器
实现Controller
extends AbstractController
实现一个抽象方法
返回一个ModelAndView
注解方式
1 配置文件

配置包扫描,需要能把controller放到spring容器管理
添加一个Controller类,并加上Controller注解
类上加@RequestMapping(""),配置地址和controller的映射关系
在方法上加@RequestMapping(""),配置地址和方法的映射关系
执行方法,并返回一个字符串,这个字符串就是view-name

2 常用注解
@Controller
使用Controller注解之后,在方法上可以通过return的jsp或者html页面的名字,通过视图解析器,就能跳转到指定页面
如果没有Controller注解,这个类中的方法是不会被请求过去的
所对应的层也是controller层,表现层
@RestController
RestController注解相当于Controller和ResponseBody一起使用
这个类中的方法可以被请求过来,但是方法中无法jsp和html页面,视图解析器就不会起到作用,返回的内容就是return后面的内容
@RequestMapping
是Spring Web应用中最常用到的注解之一,这个注解会将http请求映射到MVC和Controller控制器的处理方法上
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@RequestBody
@RequestBody 主要用于接收前端通过 请求体 传递给后端的JSON字符串中的数据
GET方式无请求体,所以使用@RequestBody的时候不能使用GET方式,而应该使用POST形式
@RequestParam
用于接收前端传递过来的url中的参数(key=value)的形式
主要用于接收前后端key不一致的时候,使用@RequestParm来指定获取
@PathVaraible
@PathVaraible主要用于获取url请求中的动态参数的

@RequestMapping(“/delete/{id}”)
public String delete(@PathVaraible(“id”) int id){}
当RequestMapping中需要动态传递过来参数的时候,需要通过@PathVaraible来接收
@ResponseBody
如果方法需要返回JSON或者XML或者自定义内容到页面中去,就需要再方法上加上ResponseBody,这个时候,返回的数据就会不被视图解析器所解析
SessionAttributes注解
用于多次执行控制器方法间的参数,可以通过value指定存入属性的名字
比如 :

3 控制器类和参数绑定
RequestMapping详解
RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系
RequestMapping注解可以作用在方法和类上
作用在类上:第一级的访问目录
作用在方法上:第二级的访问目录
细节:路径可以不编写 / 表示应用的根目录开始
细节:${ pageContext.request.contextPath }也可以省略不写,但是路径上不能写 /
RequestMapping的属性
path 指定请求路径的url
value value属性和path属性是一样的
method 指定该方法的请求方式
GetMapping
PostMapping
PutMapping
DeleteMapping
params 指定限制请求参数的条件
headers 发送的请求中必须包含的请求头

参数绑定说明
请求参数的绑定说明
绑定机制
表单提交的数据都是k=v格式的username=haha&password=123
SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
要求:提交表单的name和参数的名称是相同的

支持的数据类型
基本数据类型和字符串类型
实体类型(JavaBean)
集合数据类型(List、map集合等)

基本数据类型和字符串类型
提交表单的name和参数的名称是相同的
区分大小写
如果名称不相同可以通过@RequestParam(“user”),指定参数名字
如果参数是必传的@RequestParam(required = true)

实体类型(JavaBean)
提交表单的name和JavaBean中的属性名称需要一致
如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name

给集合属性数据封装
表单提提交
list:多个同名属性设置list
获取通过json的方式进行提交
需要设置注解@RequestBody
请求参数中文乱码的解决
在web.xml中配置Spring提供的过滤器类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值