【SpringMVC面试专题1】 1. **SpringMVC是什么?** SpringMVC是Spring框架的一个核心模块,它是一个基于Model-View-Controller(MVC)架构的Web应用程序开发框架。SpringMVC允许开发者无需编写过多的Servlet代码,通过声明式配置或注解来处理请求和响应,简化了Web应用的开发流程。 2. **SpringMVC的优点** - **基于组件技术**:SpringMVC中的所有应用对象,如控制器、视图以及业务对象,都是Java组件,并且与Spring提供的其他基础设施紧密集成。 - **不依赖Servlet API**:尽管在实现时SpringMVC确实依赖Servlet,但其设计目标是尽量减少对Servlet API的依赖。 - **灵活的视图技术**:开发者可以自由选择各种视图技术,不仅限于JSP。 - **多种请求资源映射策略**:SpringMVC提供了多种方式将请求映射到相应的处理方法。 - **可扩展性**:SpringMVC的架构设计使得扩展非常方便,适应不断变化的需求。 3. **SpringMVC的工作原理** - 客户端向DispatcherServlet发送请求。 - DispatcherServlet查询handlerMapping找到合适的Controller来处理请求。 - Controller执行业务逻辑后,返回ModelAndView对象。 - DispatcherServlet根据ModelAndView找到对应的视图。 - 视图负责将结果渲染回客户端。 4. **SpringMVC的流程** - 用户请求到达前端控制器DispatcherServlet。 - DispatcherServlet调用HandlerMapping找到具体的处理器。 - HandlerMapping返回处理器对象及可能的拦截器给DispatcherServlet。 - DispatcherServlet使用HandlerAdapter调用处理器。 - 控制器Controller执行后返回ModelAndView。 - HandlerAdapter将Controller的结果返回给DispatcherServlet。 - DispatcherServlet将ModelAndView传递给ViewResolver解析。 - ViewResolver解析后返回具体的View。 - DispatcherServlet根据View渲染视图并将结果响应给用户。 5. **SpringMVC控制器的单例模式问题** SpringMVC的控制器默认是单例模式,多线程环境下可能导致线程安全问题。解决方案是避免在控制器中定义实例变量,或者使用ThreadLocal来确保线程局部变量的安全。 6. **SpringMVC与Struts2的区别** - 入口不同:SpringMVC由Servlet(前端控制器)处理,Struts2由Filter(过滤器)处理。 - 开发方式:SpringMVC基于方法,每个URL对应一个方法;Struts2基于类,请求参数通过类的属性传递。 - 数据存取:SpringMVC使用参数解析器,通过方法参数接收和返回数据;Struts2使用值栈和OGNL存取数据。 7. **控制器注解** 在SpringMVC中,通常使用`@Controller`注解标记控制器类,表示该类是表现层的组件。没有其他注解可以直接替代`@Controller`,但可以结合`@RequestMapping`等其他注解进行更细致的路由控制。 8. **@RequestMapping类级别的作用** `@RequestMapping`注解在类级别上表示类中的所有请求处理方法的公共前缀。 9. **请求映射到特定方法** 可以在方法上直接使用`@RequestMapping`注解,注解中的路径会指定该方法应处理的请求路径。 10. **拦截特定HTTP方法** 若要仅拦截GET请求,可以在`@RequestMapping`注解中添加`method=RequestMethod.GET`,或在方法上使用`@GetMapping`注解。 以上内容涵盖了SpringMVC的基本概念、优点、工作流程、控制器的单例模式问题、与Struts2的对比,以及请求映射等关键知识点,这些是面试中可能会遇到的问题。
- 粉丝: 31
- 资源: 333
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助