1、什么是SpringMVC
SpringMVCj就是一个Spring内置的MVC框架(Model-View-Controller),解决页面代码和后端代码的分离。
2、SpringMVC的执行流程
- 用户发送请求给前端控制器(DispatcherServlet)
- 前端控制器接收到请求后调用处理器映射器(HandlerMapping)
- 处理器映射器找到处理器,生成处理器对象和处理器拦截器,然后返回给前端控制器
- 前端控制器调用处理器适配器(HandlerAdapter)
- 处理器适配器经过适配调用具体的处理器(Controller)
- 处理器执行完成返回ModelAndView对象
- 处理器适配器将Controller执行结果ModelAndView返回给前端控制器
- 前端控制器将ModelAndView传给视图解析器(ViewReslover)
- 实体解析器解析ModelAndView后返回具体的视图(View)给前端控制器
- 前端控制器根据View进行渲染视图
- 前端控制器响应View给用户
3、常用注解
3.1、注解原理是什么
注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引对应的值。而memberValues的来源是Java常量池。
3.2、SpringMVC常用的注解有哪些
- RequestMapping:用于处理请求url映射的注解,可用于类和方法上。用于类上,则表示类中所有响应请求的方法都是以该地址作为父路径。
- RequestBody:注解实现接受http请求的json数据,将json转换为java对象
- ResponseBody:注解实现将controller方法返回对象转化为json对象响应给客户
3.3、@PathVariable和@RequestParam的区别
#{} 预编译处理 ${} 字符串替换
请求路径上有个id的变量值,可以通过@PathVariable来获取@RequestMapping(value="/page/{id}")
@RequestParam用来获取静态的URL请求入参spring注解时action用到 ?
4、其他
4.1、SpringMVC怎么样设定重定向和转发的
(1)转发:子啊返回值前面加"forward:",如forward:user.do?name=method4
(2)重定向:在返回在前面加"redirect",如redirect:http://www.baidu.com
4.2、SpringMVC里面拦截器怎么写
一种是实现HanderInterceptor接口,另一种是继承适配器类,接着在接口方法中,实现处理逻辑;然后在SpringMVC的配置文件中配置拦截器即可。