SpringMVC面试(记录学习笔记)

SpringMVC面试(记录学习笔记)

  1. 什么是SpringMVC?
    SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把模型-视图-控制器分离,将web层进行解耦,把复杂的Web应用分成逻辑清晰的几个部分,简化开发,减少出错。
    2.SpringMVC的优点
    可以支持各种视图技术,不仅仅局限于JSP;
    与Spring框架直接集成,无需配置文件;清晰角色分配,前端控制器,处理器映射器,处理器适配器,视图解析器;支持各种请求资源的映射策略。
    3.SpringMVC的主要组件
    前端控制器:接受请求,相应结果,相当于转发器,有了DispatcherServlet就减少了其他组件之间的耦合度。
    处理器映射器:根据URL来查找处理器。
    处理器适配器:调用处理器。
    处理器:就是Controller层的controller。
    视图解析器:进行视图的解析,根据视图逻辑名解析成真正的视图view。
    视图view:view是一个接口,它的实现类支持不同的视图类型。
    4.SpringMVC的执行流程
    1.用户发送请求到前端控制器;
    2.前端控制器接收到请求,调用处理器映射器。
    3.处理器映射器根据URL找到具体的处理器,生成处理对象和处理器拦截器,返回给前端控制器。
    4.前端控制器调用处理器适配器执行处理器。
    5.执行处理器Controller。
    6.Controller执行完成返回ModelAndView。
    7.处理器适配器将ModelAndView返回给前端控制器。
    8.前端控制器将ModelAndView传给视图解析器 。
    9.视图解析器解析成具体的view返回给前端控制器。
    10.前端控制器对具体的view进行渲染。
    11.前端控制器响应用户。
    5.MVC是什么?MVC设计模式的好处是什么?
    MVC是一种设计模式,模型(model)-视图(view)-控制器(controller),三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。
    MVC设计模式的好处:分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可拓展性,可维护性;有利于系统的并行开发,提升开发效率。
    6.注解原理是什么?
    注解的本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时产生的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法,该方法会从memberValues这个Map中索引出对应的值。memberValues的来源是Java常量池。
    7.SpringMVC常用的注解有哪些?
    @RequestMapping:用于处理请求URL映射的注解,可以用在类或者方法上,用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
    @RequestBody:注解实现接收http请求的json数据,将json数据转化为Java对象。
    @ResponseBody:注解实现将Controller方法返回对象转化为就送对象相应给客户。
    8.SpringMVC中控制器的注解一般用哪个?有没有其他注解可以替代?
    一般使用@Controller注解,也可以使用@RestController注解,@RestController注解就相当于ResponseBody + @Controller。
    9.@Controller注解的作用
    在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,他把用户请求的数据经过业务层处理之后封装成一个Model,然后在把该model返回给对应的view进行展示。
    10.@RequestMapping注解的作用
    @RequestMapping是一个用来处理请求地址映射的注解,可以用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
    RequestMapping注解有六个属性:value:请求地址的实际地址;method:指定请求的method类型;consumes:指定处理请求的提交内容;produces:指定返回的内容类型;params:指定request中必须包含某些参数值,才让该方法执行。headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
    11.@ResponseBody注解的作用
    该注解用于将Controller的方法返回的对象,通过适当的HTTPMessageConverter转换为指定格式后,写入到Response对象的body数据区。
    12.SpringMVC怎么设定重定向和转发的?
    1.转发:在返回值前面加“forward”;
    2.重定向:在返回值前面加“redirect”;
    13.SpringMVC怎么和AJAX相互调用?
    通过Jackson框架就可以把Java里面的对象直接转化成可以识别的JSON对象:加入Jackson.jar;在配置文件中配置json的映射;在接受AJAX方法里面可以直接返回Object,List等,但是方法前面要加上@ResponseBody注解。
    14.如何解决中文乱码问题
    post请求乱码:
    在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;
    get请求乱码:
    修改Tomcat配置文件添加编码与工程编码一致;
    对参数进行重新编码:
String userName = new String(request.getParmeter("userName").getBytes("ISO8859-1"),"utf-8");

15.SpringMVC里面拦截器是怎么写的
有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,在接口方法当中实现逻辑,然后在SpringMVC的配置文件中配置拦截器。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值