1. 什么是Spring的MVC框架?
Spring MVC是Spring家族中应用于Web应用的一个模块,是Spring提供的一个基于MVC设计模式的Web开发框架。Spring Web MVC 框架提供模型-视图-控制器架构和随时可用的组件,用于开发灵活且松散耦合的Web应用程序。
2.描述一下 Spring MVC 的工作流程
用户发送HTTP请求
请求交由核心控制器DispatcherServlet处理
核心控制器找到映射器HandlerMapping,映射器根据xml配置或者注解看看请求路径是什么,该请求是否交由对应的Action类进行处理
核心控制器再找到适配器HandlerAdopter,看看有无该Action类
将带过来的数据进行转换,格式化等等操作
找到我们的控制器Controller,处理完业务之后返回一个ModelAndView对象
最后通过视图解析器ViewResolver来对ModelAndView进行解析
跳转到对应的JSP/html页面
是单例模式,所以在多线程访问的时候存在线程安全问题。不要用同步,会影响性能, 解决方案是不能在控制器里写字段
4. SpringMvc 中的控制器的注解一般用那个,有没有别的注解可以替代?
一般用@Controller注解,表示是表现层,不能用别的注解代替
5. @RequestMapping 注解用在类上面有什么作用?
是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
6. 怎么样把某个请求映射到特定的方法上面?
直接在方法上面加上注解@RequestMapping,并且在注解里写上要拦截的路径
7. DispatcherServlet
Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。
8. 介绍一下 WebApplicationContext
WebApplicationContext 是 ApplicationContext 的扩展,它具有 Web 应用程序所需的一些额外功能。它与普通的 ApplicationContext 在解析主题和决定与哪个 servlet 关联的能力方面有所不同
9. 什么是Spring MVC框架的控制器?
控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。
ParameterizableViewController
AbstractCommandController
10. 如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置?
可以在在@RequestMapping注解里加上method=RequestMethod.GET
11. 怎么样在方法里面得到 Request 或者 Session?
直接在方法的形参里声明request,Spring MVC就会自动把request对象传入
12.想在拦截的方法里面得到从前台传入的参数,怎么得
直接在方法的形参里声明这个参数,但名字必须和传过来的参数一样
13. Spring MVC 中函数的返回值是什么?
返回值有很多类型,有String, ModelAndView
14. Spring MVC 怎么样设定重定向和转发的?
在返回值前面添加redirect实现重定向,例如“redirect:www.baidu.com”
在返回值前面添加forward实现转发,例如“forward:user.do?name=method4”
15. Spring MVC 中有个类把视图和数据都合并的一起的,叫什么?
ModelAndView