springMVC(面试精简浓缩版)

1、是什么

  • springMvc是一个基于java的mvc设计模式的web框架
  • 通过把model、view、controller分离,将web层进行职责解耦,简化开发,减少出错

2、spring工作流程

  1. 用户发送请求到前端控制器dispatcherServlet
  2. DispatcherServlet收到请求后,调用handlerMappering处理器映射器
  3. handlerMapping根据URL请求找到具体的处理器handler,生成处理器对象及处理器拦截器(如果有)一并返回给DispatcherServlet
  4. DispatcherServlet调用HandlerAdapter处理器适配器
  5. 执行处理器controller
  6. controller执行完返回modelAndview
  7. handlerAdapter将modelandview返回dispatcherServlet
  8. dispatcherServlet将modelAndview传给viewReslover视图解析器
  9. viewResolver解析后返回具体的view
  10. dispatcherServlet对view进行渲染视图
  11. dispatcherSErvlet响应用户

3、Springmvc三大组件

  • handlerMappering、handlerAdapter、viewResolver

4、springmvc的重定向和转发

  1. 通过给controller方法的形参httpRequest和httpRespond设定forward和sendRedirect
  2. 在return前加forward是转发 return “forward:/index.jsp” 加redirect是重定向 return “redirect:/index.jsp”

5、常用注解

  1. @requestmapping:用于处理URL映射
  2. @controller:处理dispatcherServlet分发的请求,封装model对象,调用业务方法
  3. @requestParam:把请求中指定的参数名称给控制器参数赋值,用value指定名称
  4. @requestBody:接受http请求的json数据,将json转成java对象
  5. @responseBody: 将controller方法返回的对象转化成json对象给响应给客户
  6. @Pathvariable:主要用于url上变量映射到处理方法的参数上
  7. @restController=@controller+@responseBody

6、springmvc与struts2区别

  1. springmvc的入口是dispatcherServlet,而struts2入口是filter过滤器
  2. springmvc是基于方法开发的,请求参数传到方法的形参可以设计成单例或者多例的,structs2是基于类开发的,传递参数是根据类的属性,只能设计成多例
  3. structs2参数栈存储请求和响应的数据,springmvc通过参数解析器将数据和视图封装成modelAndView对象

7、post和get乱码

  • post乱码,在web.xml配置characterEncodingFilter过滤器,把encoding属性设为utf-8
  • get:修改tomcat的配置文件

8、springmvc拦截器

  • 定义一个类实现HandlerInterceptor接口,然后在springmvc.xml中配置拦截器

9、注解原理

  • 注解本质是一个继承了Annotation的特殊接口,其具体实现类是一个jdk动态代理生成的代理类,我们通过反射获得注解时,返回的也是java运行时生成的代理对象。通过代理对象调用自定义的代理方法,会最终调用AnnocationInvocationHandler的invoke()方法,该方法会采用mermberValues这个map中查询出对应的值,mermberValues来源是java常量池

10、mvc和ajax相互调用

  1. 通过jackson.jar可以把java对象转化成js可以识别的json对象
  2. 在配置文件中配置json的映射
  3. 在接收ajax的方法前加@responseBody注解,直接返回Object、list等

11、tips

  • springmvc控制器是单例模式的,在多线程访问的时候会有安全问题,可以用ThreadLocal(做数据隔离)为每个线程单独生成一份变量拷贝副本,独立操作互不影响
  • get请求:request:method=requestMethod.Get
  • 直接在方法的形参中传request,springmvc自动将request对象传入
  • 将形参的名字设成和前端传来的一样就能得到前端传入的参数
  • 直接在方法中声明这个对象,springmvc会自动把属性值赋值到这个对象中
  • 返回值类型有String,modelAndView(视图和数据)
  • 从后台向前端传数据:通过modelMap对象,调用put方法把对象放里面,前端通过el表达式获取
  • 把Model的数据放入Session里面:在类上加@sessionAttributes注解,里面的字符串就是session里面的key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值