转载

Java编程大佬致程序员:BAT面试突击指南;再不学习,哭都来不及

1. 什么是Spring MVC ?

  • Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一部分,它和Struts2一样都属于表现层的框架。
  • MVC(Model模型 View 视图 Controller 控制器):这是一种软件架构思想,是一种开发模式,将软件划分为三种不同类型的模块,分别是模型,视图,和控制器。
  • 模型:用于封装业务逻辑处理(java类);
  • 视图:用于数据展现和操作界面(Servlet);
  • 控制器:用于协调视图和模型(jsp);
  • 处理流程:视图将请求发送给控制器,由控制器选择对应的模型来处理;模型将处理结果交给控制器,控制器选择合适的视图来展现处理结果;

Java编程大佬致程序员:BAT面试突击指南;再不学习,哭都来不及

优点:方便测试和代码的维护,分工协作等

2. Spring MVC的五大组键 ?

  • 前端控制器 (DispatcherServlet)
  • 映射处理器(HandlerMapping)
  • 处理器(Controller)
  • 模型和视图(ModelAndView)
  • 视图解析器(ViewResolver)

附: Spring MVC 的运行原理

Java编程大佬致程序员:BAT面试突击指南;再不学习,哭都来不及

交到DispatcherServlet 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller DispatcherServlet将请求提交到Controller Controller调用业务逻辑处理后,返回ModelAndView DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图 视图负责将结果显示到客户

3. SpringMVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?

是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能,解决方案是在控制器里面不能写字段。

4. SpringMVC中控制器的注解一般用哪个,有没有别的注解可以代替?

一般用@Controller注解,表示是表现层,不能使用别的注解代替。

5. @RequestMapping注解用在类上面有什么作用?

用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

6. SpringMVC怎样设定重定向和转发 ?

  • 在返回值的前面加”forward”,就可以实现让结果转发;
  • 在返回值的前面加上”redirect”,就可以让返回值重定向。

7. Spring MVC的优点?

  • 基于View框架的无缝集成,采用IOC便于测试
  • 典型的纯MVC架构,Struts是不完全基于MVC框架的
  • 与tapestry是纯正的Servlet系统

8. 基于注解的Spring MVC的应用编程步骤

  • 导包(Spring-webmvc),添加spring配置文件,配置前端控制器dispatcherServlet
  • 写Controller
  • 写JSP
  • 在Spring的配置文件里面添加视图解析器、组建扫描、mvc注解扫描

9. SpringMVC如何读取请求参数值 ?

  • 方式1:通过request
  • 方式2:通过@RequestParam
  • 方式3:通过Javabean

10. Spring MVC如何向页面传值 ?

  • 方式1: 绑定数据到request
  • 方式2: 返回ModelandView
  • 方式3:绑定数据到ModelMap
  • 方式4:绑定数据到Session

11. 系统如何分层 ?

  • 系统分为表现层(UI):数据的展现,操作页面,请求转发。
  • 业务层(服务层):封装业务处理逻辑
  • 持久层(数据访问层):封装数据访问逻辑

各层之间的关系: 表示层通过接口调用业务层,业务层通过接口调用持久层,这样,当下一层发生变化改变,不影响上一层的数据。 MVC是一种表现层的架构思想。

Java编程大佬致程序员:BAT面试突击指南;再不学习,哭都来不及

12. Spring MVC如何解决中文乱码问题 ?

  • 可以使用SpringMVC提供的过滤器(CharacterEncodingFilter)来解决;只需要配置该过滤器就可以,需要注意的是:
  • 过滤器的编码设置应该与jsp页面保存一致
  • 表单的提交方式设置为post

13. SpringMVC中的拦截器问题 ?

DispatcherServlet收到请求之后,如果有拦截器,则先执行拦截器的方法,在执行处理器的方法;

注意:过滤器属于Servlet规范,拦截的是Servlet容器的调用过程 拦截器属于spring框架,拦截的是DispatcherServlet的调用过程

如何写一个拦截器:

  • 写一个java类,实现HandlerInterceptor接口;
  • 在接口方法当中,实现处理逻辑。
  • 配置拦截器
  • 拦截器还可以设置优先级:依据配置的顺序来执行

14. Spring MVC的异常处理 ?

可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。

更多关于Java面试题的答案以及笔者Java学习路线图,点击下方传送门即可免费领取!!!

传送门

原文  https://segmentfault.com/a/1190000021053292
正文到此结束
Loading...