Spring常问的面试
1、Java中的异常
非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。
检查异常(checked exception):除了Error 和 RuntimeException的其它异常。强制要求程序员为这样的异常做预备处理工作
runtimeException :运行时异常,系统不要求必须处理
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常
IllegalArgumentException - 传递非法参数异常。
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
ArithmeticException - 算术运算异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
IOException:非运行时异常,必须处理
FileSystemException-文件系统操作失败抛出
ChangedCharSetException-更改字符集时抛出异常
CharacterCodingException-发生字符编码或解码错误时抛出异常
ClosedChannelException-尝试关闭该操作通道上调用I/O操作时抛出异常
UnknownHostException-无法确定主机的IP地址
2、Spring的原理
Spring的工作原理就是让一个对象的创建不用new就可以自动的生产,在运行时通过Spring的配置文件来动态的创建对象和调用对象。
3、简述SpringIOC的执行过程
加载配置文件-----》根据配置文件创建相应的IOC容器----》实例化bean-------》加载实例化好的bean到IOC容器中去-----》调用bean。
4、bean.xml中的配置顺序会影响对象的创建顺序吗?
会的,,,,最先配的最先实例化。如果一个beanA的创建需要另一个beanB,这时虽然beanB在beanA的后边,也不影响beanA的创建。
5、如果用XML配置声明式事务,分哪几个步骤
1.配置事务管理器。DataSourceTransactionManager
2.配置切面和事务传播方式
3.配置切点
6、@PathVariable 和 @RequestParam
两者都是从request中接受请求的,都可以接收参数
@PathVariable:从URL路径中获取变量,比如URL中:emp/{id}获取id
@RequestParam:获取参数,比如URL中的:do?pageSize=3获取pageSize=3的
7、用哪个注解格式化日期
@DatetimeFormate(“yyyy-MM-dd”)
8、Spring的拦截器
实现了HandlerInterceptor接口的类或者继承继承HandlerInterceptorAdapter类,在Springmvc.xml中配置,
HandlerInterceptor接口中定义了三个方法:
1 )preHandle:将在请求处理之前进行调用,SpringMVC 中的Interceptor 是链式的调用的
2 )postHandle :当前所属的Interceptor 的preHandle 方法的返回值为true 时才能被调用,DispatcherServlet 进行视图返回渲染之前被调用
3 )afterCompletion:该方法也是需要当前对应的Interceptor 的preHandle 方法的返回值为true 时才会执行,方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行。这个方法的主要作用是用于进行资源清理工作的。
9、拦截器和Filter的区别
Spring的拦截器与Servlet的Filter有相似处,二者都是AOP编程思想的体现,都能实现权限检查。日志记录等,不同的是:
1.适用范围不同:Filter是Servlet规范规定的,只能使用Web容器中,拦截器既可用于Web程序,亦可以用于其它地方
2.规范不同,Filter是在Servlet规范定义的,是Servlet容器支持的,拦截器是在Spring容器内,Spring框架支持的。
3.拦截器归Spring管理,Spring里面的资源可以通过IOC注入到拦截器。
10、SpringMVC的几个组件
1.DispatcherServlet 请求入口
2.HandlerMapping 请求派发,负责请求和控制器建立一一对应的关系
3.Controller 处理器
4.ModelAndView 封装模型信息和视图信息
5.ViewResolver 视图处理器,定位页面
11、视图解析器除了解析jsp还能解析其他视图吗
能,InternalResourceViewResolver可以查找jsp,实现org.springframework.web.servlet.view.freemarker中的FreeMarkerViewResolver类可以解析其他视图。必须先配置freemarkerConfig
12、简述SpringMVC项目的框架搭建过程
创建项目----导入所需要的jar包------配置web.xml----配置mvc.xml,spring.xml---创建类
13、如果一个service实现了接口,我们需要在controller中使用,应该注入接口还是实现类
注入接口,spring默认是JDK动态代理
14、Ajax 的无刷新功能就是利用 XMLHttpRequest 的异步请求来完成的