框架通关整理1-SpringMVC面试常问(执行流程、组件、常用注解)

java通关整理汇总-Java基础、计算机网络、数据库、设计模式、框架、算法模板、笔试


SpringMVC

SpringMVC的概述
  1. 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
  2. Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供 了构建 Web 应用程序的全功能 MVC 模块。
  3. 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的 SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等
SpringMVC请求执行过程
  1. 用户发送请求至用户发送请求至 前端控制器 DispatcherServlet;
  2. DispatcherServlet收到请求后,调用HandlerMapping 处理器映射器,请求获取Handle;
  3. 处理器映射器根据请求url 找到具体的处理器 一并返回给DispatcherServlet;
  4. DispatcherServlet 调用 HandlerAdapter 处理器适配器
  5. HandlerAdapter 处理器适配器经过适配调用具体处理器(Handler,也叫后端控制器);
  6. 处理器 Handler执行完成返回ModelAndView
  7. HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView 传给 ViewResolver 视图解析器进行解析;
  9. ViewResolver解析后返回具体View
  10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

在这里插入图片描述

SpringMVC的组件
  1. 前端控制器(DispatcherServlet)
  2. 处理器映射器(HandlerMapping)
  3. 处理器(Handler)
  4. 处理器适配器(HandlAdapter)
  5. 视图解析器(View Resolver)
  6. 视图(View)
Springmvc 怎么样设定重定向和转发的?

在返回值前面加"redirect:“就可以让返回值重定向,譬如"redirect:http://www.baidu.com”
在返回值前面加"forward:“就可以让结果转发,譬如"forward:user.do?name=method4”

Springmvc 和struts2的区别有哪些?
  • springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器
  • springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
  • Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。
springmvc 中当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?

要加上@ResponseBody注解。

常用注解
@RequestMapping注解
  1. 作用在类上:第一级的访问目录
  2. 作用在方法上:第二级的访问目录
    3.${ pageContext.request.contextPath }表示绝对路径
@RequestParam注解
  1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值
  2. 属性
    value:请求参数中的名称
    required:请求参数中是否必须提供此参数,默认值是true,必须提供

当required设置为flase时,请求参数中,不包含该字段的字也可以,不会报错

@RequestBody注解
  1. 作用:用于获取请求体的内容(注意:get方法不可以)
  2. 属性 1. required:是否必须有请求体,默认值是true
@RequestHeader注解
  1. 作用:获取指定请求头的值 2. 属性 1. value:请求头的名称
@RequestMapping(path="/hello")    
public String sayHello(@RequestHeader(value="Accept") String header) {        
System.out.println(header);        
return "success";    }
@ CookieValue注解
  1. 作用:用于获取指定cookie的名称的值 2. 属性 1. value:cookie的名称
 @RequestMapping(path="/hello")    
 public String sayHello(@CookieValue(value="JSESSIONID") String cookieValue) {        
 System.out.println(cookieValue);        
 return "success";    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值