1、谈谈你对springmvc的理解
springmvc是一个基于Java的实现了MVC设计模式的Web框架,通过把Model,View,Controller分离,将web层进行解耦。springmvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。springmvc是Spring构建在Servlet API上的Web框架。目前大部分的javaweb 开发已经使用springmvc来做。它提供了模型 - 视图 - 控制器架构,可用于开发灵活的Web应用程序。
2、springmvc工作原理是什么
1.客户端发送请求到DispatcherServlet
2.DispatcherServlet查询handlerMapping找到处理请求的Controller
3.Controller调用业务逻辑后,返回ModelAndView
4.DispatcherServlet查询ModelAndView,找到指定视图
5.视图将结果返回到客户端
3、springmvc的流程?
1.用户发送请求至前端控制器DispatcherServlet。
2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4.DispatcherServlet调用HandlerAdapter 处理器适配器。
5.HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6.Controller执行完成返回ModelAndView。
7.HandlerAdapter将controller 执行结果ModelAndView返回给DispatcherServlet。
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器。9.ViewReslover解析后返回具体View。
10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11.DispatcherServlet响应用户。
4、如何全局处理控制器异常?
通过@ControllerAdvice(也可使用@RestControllerAdvice)注解和@ExceptionHandler注解组合,通过在方法入参中捕获异常进行处理,举例如下:
@Slf4j
@RestControllerAdvice("cn.coding.manage.api")
public class GlobalExceptionControllerAdvice {
@ExceptionHandler(NullPointerException.class)
public Rest nullPointHandler(HttpServletRequest request, NullPointerException e) {
System.out.println(e.getMessage);
return RestBody.failure(-1, "出现异常了");
}
}
5、springmvc中的控制器的注解一般用那个,有没有别的注解可以替代?
一般用@Conntroller注解,表示是表现层。也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层。一般只能用着两个注解
如何处理Spring MVC 中的跨域问题?
- 通过在控制层方法使用
@CrossOrigin
注解。 - 通过springmvc 拦截器来处理,同理servlet中的filter也可以处理。
- 通过在springmvc xml配置文件中的
<mvc:cors>
标签中配置。
更多推荐
springmvc经典面试题
发布评论