1. 什么是Spring MVC ?
- Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一部分,它和Struts2一样都属于表现层的框架。
- MVC(Model模型 View 视图 Controller 控制器):这是一种软件架构思想,是一种开发模式,将软件划分为三种不同类型的模块,分别是模型,视图,和控制器。
- 模型:用于封装业务逻辑处理(java类);
- 视图:用于数据展现和操作界面(Servlet);
- 控制器:用于协调视图和模型(jsp);
- 处理流程:视图将请求发送给控制器,由控制器选择对应的模型来处理;模型将处理结果交给控制器,控制器选择合适的视图来展现处理结果;
优点:方便测试和代码的维护,分工协作等
2. Spring MVC的五大组键 ?
- 前端控制器 (DispatcherServlet)
- 映射处理器(HandlerMapping)
- 处理器(Controller)
- 模型和视图(ModelAndView)
- 视图解析器(ViewResolver)
附: Spring MVC 的运行原理
交到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是一种表现层的架构思想。
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