前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA面试锦囊(六)

JAVA面试锦囊(六)

作者头像
用户7386338
发布2020-05-29 11:11:20
3390
发布2020-05-29 11:11:20
举报
文章被收录于专栏:Java患者Java患者Java患者

● 简单介绍一下MVC模式?

MVC全名是Model View Controller,是模型(model) -- 视图(view) -- 控制器(controller)的缩写。一种软件设计典范,用一种业务逻辑数据界面显示分离的方法组织代码,将业务逻辑聚焦到一个部件里面。在改进和个性化定制界面以及用户交互的同时,不需要重新编写业务逻辑。

最简单、最经典的就是JSP(view)+ Servlet(Controller)+ JavaBean(model)

(1) 控制器接收来自用户请求。

(2) 控制器调用JavaBean来完成业务。

(3) 完成业务后通过控制器跳转JSP页面的方式给用户反馈信息。

(4) JSP为用户做出最终的响应。

● 简单说一下对MVC框架的理解?

是为了解决传统MVC模式一些问题问题而出现的框架,传统的mvc模式存在一下问题:

(1) 所有的Servlet和Servlet映射都要配置在web.xml中,如果项目太大。web.xml太庞大了,并且不能实现模块化管理

(2) Servlet的主要功能就是接收参数、调用逻辑、跳转页面,比如像其他字符编码文件上传等功能也要写在Servlet中,需要做特定的处理。

(3) 接收参数麻烦,不能通过model接收。只能单个的接收。接收完成后需要手动设置进model中。

(4) 跳转页面的方式比较单一(forword,redirect),并且当页面发生修改时需要修改Servlet源代码。

● Struts2的执行流程或者Struts2的原理?

(1) 客户端向服务端发起一个请求,这个请求经过一系列的过滤器(Filter),到达核心Filter。接着FilterDispatcher(StrutsPrepareAndExecuteFilter)被调用,询问ActionMapper来决定着请求是否需要调用某一个Action,如果不需要则走原来的流程。

(2)如果ActionMapper决定需要调用某个Action时,FilterDispatcher(StrutsPrepareAndExecuteFilter)把这个请求交给ActionProxy;

(3) ActionProxy通过Configuration Manager询问框架的配置文件(struts.xml),找到需要调用的Action类。

(4) ActionProxy创建一个ActionInvocation实例。

(5) ActionInvocation实例使用命名模式来调用,在调用Action的过程中前后,涉及到相关的拦截器(Intercepter)的调用。

(6) 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置文件找到对应的返回结果。返回结果通常是一个需要被表示的JSP或者FreeMarker的模板。

● Struts2的拦截器是什么?你都用它干什么?

在struts2中的功能(参数处理文件上传字符编码等)都是通过用拦截器完成的。

我们也可以自定义拦截器,进行可插拔配置,在执行Action的方法前后执行相关逻辑完成业务。如:

(1) 用户登录判断,在执行Action的前面判断是否已经登录,如果没有登录的跳转到登录页面。

(2) 用户权限判断,在执行Action的前面判断是否具有权限,如果没有权限就给出提示信息。

操作日志

● 说说Spring MVC的执行流程?

(1) 用户向服务器发送请求,请求被Spring前端控制器Servlet(DispatcherServlet)捕获。

(2) DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器)。最后以HandlerExecutionChain对象的形式返回。

(3) DispatcherServlet选择一个合适的HandlerAdapter。提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller),Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象。

(4) DispatcherServlet根据返回的ModelAndView,选择一个合适的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)。

(5) 通过ViewResolver结合ModelView渲染视图。DispatcherServlet将渲染结构返回给客户端。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档