SpringMVC常见面试题

1. 什么是Spring MVC ?

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

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

2. Spring MVC的五大组键 ?

  1. 前端控制器 (DispatcherServlet)
  2. 映射处理器(HandlerMapping)
  3. 处理器(Controller)
  4. 模型和视图(ModelAndView)
  5. 视图解析器(ViewResolver)

 

 

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

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

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

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

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

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

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

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

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

7. Spring MVC的优点:

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

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

Step1:导包(Spring-webmvc),添加spring配置文件,配置前端控制器dispatcherServlet

Step2: 写Controller

Step3:写JSP

Step4:在Spring的配置文件里面添加视图解析器、组建扫描、mvc注解扫描

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

方式1:通过request

方式2:通过@RequestParam

方式3:通过Javabean

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

方式1: 绑定数据到request

方式2: 返回ModelandView

方式3:绑定数据到ModelMap

方式4:绑定数据到Session

11. 系统如何分层 ?

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

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

 

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

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

 

 

13. SpringMVC中的拦截器问题 ?

DispatcherServlet收到请求之后,如果有拦截器,则先执行拦截器的方法,在执行处理器的方法; 注意:过滤器属于Servlet规范,拦截的是Servlet容器的调用过程 拦截器属于spring框架,拦截的是DispatcherServlet的调用过程 如何写一个拦截器: 1) 写一个java类,实现HandlerInterceptor接口; 2) 在接口方法当中,实现处理逻辑。 3) 配置拦截器 4) 拦截器还可以设置优先级:依据配置的顺序来执行

14. Spring MVC的异常处理 ?

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

 

 

原文地址:https://www.cnblogs.com/aohongzhu/p/12938742.html