Java Web相关面试题

拦截器与过滤器的用法和区别?

forward与redirect的区别?

session & cookie的作用和区别

http是无状态的协议, web服务器不能识别出哪些请求是同一个浏览器发的,浏览器的每一次请求都是完全独立的。
Cookie放在浏览器端,浏览器第一次范围服务器时没有cookie,然后服务器给浏览器一个cookie,以后每次浏览器访问服务器都要带上这个cookie。 Jsp 是服务端
<% 
	// 1.创建一个 cookie 对象 
	Cookie cookie =new Cookie(“name”,”jhb”);
	// 2.调用 response 的一个方法把 cookie 传输给客户端
	Response.addCookie( cookie) ;
%>
默认情况下 cookie 是会话级别,存储在浏览器内存中,用户退出浏览器之后被删除,若希望浏览器将 cookie 存在磁盘上,则要使用 maxage,并给一个以秒为单位的时间,表示cookie 的存活时间。
Cookie 作用范围:可以作用当前目录和当前目录的子目录, 但不能作用与当前目录的上一级。
Cookie:在客户端保持 http 状态信息的方案,会话跟踪。
Session:在服务器端保持 http 状态信息。
当浏览器第一次访问服务器时,没有 cookie,服务器也就得不到 JSession_id, then 服务器创建一个 session 对象,并返回一个 JSession_id 给浏览器,通过 cookie 返回,下次浏览器再访问服务器时就带上 cookie(其中有 JSession_id),服务器就能找到对应的 session 对象。 JSession_id 可以通过 cookie 传输,也可以通过 url 传送。
一个 session,对应一个 sessionID。
Session:浏览器和服务器的一次会话,若浏览器不关,自始至终都是一个 session,因为用 cookie 传送。
当程序需要为某给客户端的请求创建 session 时,服务器首先检查这个客户端的请求是否包含一个 session 标识,即 JSession_id,如果包含,则说明以前已经为此客户创建过JSession_id,服务器就按照这个 JSession_id 检索出来(若检索不到,可能会新建一个,这种情况下可能会出现在服务器已经删除了该用户对应的 session 对象。但用户人为的在请求的
URL 上附加 JSession_id 的参数。)如不包含则创建一个 session,并生成与这个 session
有关的 JSession_id,这个 JSession_id 将在本次响应中返回给客户端。
默认 session 用 cookie。
若第一次访问某 web 应用程序的一个 jsp 页面,且该 jsp 页面的 page 指定 session=true,
服务器会创建一个 httpsession 对象。
注:关闭浏览器只是使存储在浏览器内存中的 session cookie 失效,不会使服务器端的session 对象失效。

Spring Bean的作用域

  • singleton: 在Spring IOC容器中仅存在一个Bean实例,Bean实例以单例方式存在,默认值
  • prototype: 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new xxxBean()
  • request: 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
  • session: 同一个HTTP session共享一个Bean, 不同Session使用不同Bean
  • globalSession: 一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境

Spring中事务的隔离级别

TransactionDefinition接口中定义了五个表示隔离级别的常量:

  • TransactionDefinition.ISOLATION_DEFAULT:使用后端数据库默认的隔离级别,MySQL默认采REPEATABLE_READ隔离级别,Oracle默认采用READ_COMMITTED隔离级别
  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED:最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读/幻读或不可重复读
  • TransactionDefinition.ISOLATION_READ_COMMITTED:允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生
  • TransactionDefinition.ISOLATION_REPEATABLE_READ:对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读或不可重复读,但幻读仍有可能发生
  • TransactionDefinition.ISOLATION_SERIALIZABLE:最高的隔离级别,完全服从ACID的隔离级别。所有的事
    务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻
    。但是这将严重影响程序的性能。通常情况下也不会用到该级别

Spring的IOC/DI的实现原理及其相关API?

Spring MVC的执行原理?

1. 客户端提交请求到DispatcherServlet
2. DispatcherServlet负责查找一个或者多个handlermapping,找到处理请求的Controller
3. DispatcherServlet将请求提交给Controller
4. Controller完成逻辑处理后,返回ModelAndView
5. DispatcherServlet负责查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图
6. 视图解析器处理完毕后,返回对应视图

参考文档

Spring面试题整理

MyBatis

#与$的作用和区别?

你可能感兴趣的:(Java)