1.springmvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet将请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.DispathcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象;
6.视图负责将结果显示到客户端;
2:Struts工作机制?为什么要使用Struts?
工作机制:
Struts的工作流程:
在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,当ActionServlet接收到一个客户请求时,将执行如下流程.
(1)检索和用户请求匹配的Action Mapping实例,如果不存在,就返 回请求路径无效信息;
(2)如果Action Form实例不存在,就创建一个Action Form对象,把客户提交的表单数据保存到Action Form对象中;
(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用Action Form的validate()方法;
(4)如果Action Form的validate()方法返回null或返回一个不包含Action Message的 ActuibErrors对象,就表示表单验证成功;
(5)Action Servlet 根据Action Mapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
(6)Action的execute()方法返回一个Action Forward对象,Action Servlet再把客户请求转发给 Action Forward对象指向的JSP组件;
(7)Action Forward对象指向JSP组件生成动态网页,返回给客户;
为什么要用:
JSP、Servlet,JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
3:如何优化Hibernate?
1. 使用双向一对多关联,不使用单向一对多
2.灵活使用单向一对多关联
3.不用一对一,用多对一取代
4.配置对象缓存,不使用集合缓存
5.一对多集合使用Bag,多对多集合使用Set
6.继承类使用显式多态
7.表字段要少,表关联不要怕多,有二级缓存撑腰
4:spring的工作原理?
Spring 已经用过一段时间了,感觉Spring是个很不错的框架。
内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。
Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。
Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
5:拦截器和过滤器的区别
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、拦截器不依赖于servlet容器,过滤器依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
6:怎么使用Spring配置事务?
Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略。
声明式事务管理的配置方式,通常有以下4种:
(1)使用TransactionProxyFactoryBean为目标Bean生成事务代理的配置。此方式是最传统、配置文件最臃肿、最难以阅读的方式。
(2)采用Bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。
(3)采用BeanNameAutoProxyCreator,根据Bean Name自动生成事务代理的方式。这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。但这种方式避免了增量式配置,效果非常不错。
(4)采用DefaultAdvisorAutoProxyCreator,直接利用Spring的AOP框架配置事务代理的方式,效果非常不错,只是这种配置方式的可读性不如第3种方式。
7:.什么是AOP,AOP的作用是什么?
面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。
除了类(classes)以外,AOP提供了切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。
Spring的一个关键的组件就是AOP框架,可以自由选择是否使用AOP,提供声明式企业服务,特别是为了替代EJB声明式服务。
最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上。
允许用户实现自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强.
总结:面试官对实际开发经验比较看重, 对框架的使用也比较看重,以上是我面试的经过。