Java面试——SpringMvc 相关

SpringMVC工作流程:
  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping,解析请求对应的Handler。
  3. 通过HandlerMapping得到HandlerAdapter,调用真正的处理器处理请求,和相应业务逻辑。
  4. 调用handle()方法返回ModelAndVIew,Model是返回的数据对象。View是逻辑上的View。
  5. DispatcherServlet将ModelAndView送给ViewResolver视图解析器处理,解析返回具体的view
  6. 将Model渲染到view视图
  7. 最后向用户response响应
2,SpringMVC和struts2的主要区别:
  1. springMVc的入口是一个servlet即前端控制器,而struts的入口是一个filter
  2. springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例,而struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
  3. springmvc通过参数解析器将request内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象。而struts采用值栈存储请求和响应的数据,通过OGNL表达式存取数据。
3,常用注解:

@Controller
@Service 声明service组件
@Repository 声明Dao组件
@Component 泛指之间,不好归类时使用
@RequestMapping 请求映射
@Resource 用于注入,默认按名称装配
@Autowired 用于注入,默认按类型装配
@Transactional 事务管理
@ResponseBody

4,Servlet生命周期

初始化:Web容器加载Servlet,调用init()方法
处理请求:当请求达到时,运行service方法。service()自动派遣运行与请求对应的方法
销毁:服务结束,Web容器会调用Servlet的distroy方法销毁servlet

5,什么是aop,aop的作用是什么?

面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足
面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。
可以把Spring AOP看作是对Spring的一种增强

6,什么是ioc?

IOC是依赖注入的一个方面,这个概念是不用创建对象,只需描述如果去创建。
你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。

7,静态代理总结:

1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.
2.缺点:
因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护。

8,如何解决静态代理中的缺点呢?

答案是可以使用动态代理方式

9,动态代理的特点:

1.代理对象,不需要实现接口
2.代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们指定创建代理对象/目标对象实现的接口的类型)
3.动态代理也叫做:JDK代理,接口代理

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐