1、什么是 SpringMvc? Spring MVC 的优点?
SpringMvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。
MVC框架就是一个分离了控制器,模型对象、分派器以及处理程序的各个角色,这种分离让它们更容易进行定制。功能类似于Servlet,springmvc的核心控制器dispatcherServlet是继承自framworkerSevlet
来看看继承图:
优点:
- 它是基于组件技术的。全部的应用对象,无论控制器和视图,还是业务对象 之类的都是java组件。并且和Spring提供的其他基础结构组件紧密集成.
- 不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)
- 可以任意使用各种视图技术,而不仅仅局限于JSP
- 支持各种请求资源的映射策略
- 它应是易于扩展的
2、SpringMVC工作原理?
工作流程图:
执行时序图:
⑴ 用户发送请求至前端控制器DispatcherServlet
⑵ DispatcherServlet收到请求调用HandlerMapping处理器映射器。
⑶ 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
⑷ DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
⑸ 执行处理器(Controller,也叫后端控制器)。
⑹ Controller执行完成返回ModelAndView
⑺ HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
⑻ DispatcherServlet将ModelAndView传给ViewReslover视图解析器
⑼ ViewReslover解析后返回具体View
⑽ DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
⑾ DispatcherServlet响应用户。
3、SpringMvc的处理器是不是单例模式?SpingMvc中的处理器的注解?
是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在处理器里面不能写字段。
—般用@Conn troller注解,表示是表现层,不能用用别的注解代替。
4 如何开启注解处理器和适配器?
我们在项目中一般会在 springmvc.xml 中通过开启 mvc:annotation-driven来实现注解处
理器和适配器的开启。
5、如何解决get 和post 乱码问题?
解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器。 设置为 utf-8.
解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:
- 修改 tomcat 配置文件添加编码与工程编码一致。
- 另外一种方法对参数进行重新编码 String userName = New
String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);
6、SpringMVC怎么样设定重定向和转发的?
(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"
(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"
7、 SpringMVC常用的注解有哪些?
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
get方式提交的方法,可以在 @RequestMappi ng 注解里面加上 method=Re