一、springMVC面试题
1.Spring MVC的异常处理
异常是指程序运行中的不正常行为,由于各种原因(如:程序编码问题、系统环境问题、用户操作错误等)导致的程序逻辑流程中断。对于Web应用而言,异常可以来源于控制层、业务层、DAO层等多个部分,这也给我们开发后台Web应用带来了诸多挑战。
Spring MVC通过自定义异常机制和拦截器机制来全面处理请求返回结果中的异常信息。下一步我们将结合具体实例进一步探究Spring MVC的异常处理机制。
Spring MVC异常处理机制
1.异常处理器映射器HandlerExceptionResolver
2.自定义异常类
2.springmvc 用什么对象从后台向前台传递数据的?
1.通过request 对象设置请求域
2.返回ModelAndView;
3通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前端就可以通过el表达式拿到;
4.绑定数据到 Session中。
3.springMvc的Controller是不是单例模式?
单例模式。在多线程访问的时候有线程安全问题,解决方案是在控制器里面不要写可变状态量,如果需要使用这些可变状态,可以使用ThreadLocal,为每个线程单独生成一份变量副本,独立操作,互不影响。
4.介绍下 Spring MVC 拦截器?
SpringMVC的处理器拦截器(Interceptor)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理,用户可以自己定义一些拦截器来实现特定的功能。
而拦截器链就是将拦截器按一定的顺序联结成一条链【servlet中有过滤器链】。
preHandle是前置操作,Handle执行前执行,返回布尔值,表示是否通过拦截器。如果该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果不需要再调用其他的组件去处理请求,则返回false;
postHandle是后置操作,Handle执行后执行,也就是DispatcherServlet向客户端返回响应前被调用;
afterCompletion是最终操作,在DispatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作;
5.SpringMvc怎么配置拦截器?
可以通过在配置文件中配置
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!--拦截的资源URI-->
<mvc:mapping path="/**"/>
<!--不拦截哪些-->
<!--<mvc:exclude-mapping path="" />-->
<bean id="handlerInterceptorDemo1"
class="com.qzcsbj.interceptor.HandlerInterceptorDemo1">
</bean>
</mvc:interceptor>
</mvc:interceptors>
6.拦截器和过滤器的区别:
1过滤器是servlet规范中的一部分(sun公司定义的),任何java web工程都可以使用。
2拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能用。
3过滤器在url-pattern中配置了/*之后,可以对所有要访问的资源拦截。
4拦截器它是只会拦截访问的控制器方法,如果访问的是jsp,html,css,image 或者js是不会进行拦截的。
7.REST是什么
REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,他是由Roy Thomas Fielding博士在他的论文 《Architectural Styles and the Design of Network-based Software Architectures》中提出的一个术语。REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。
基于Web的架构,实际上就是各种规范的集合,这些规范共同组成了Web架构。比如Http协议,比如客户端服务器模式,这些都是规范。每当我们在原有规 范的基础上增加新的规范,就会形成新的架构。而REST正是这样一种架构,他结合了一系列的规范,而形成了一种新的基于Web的架构风格。