数据传输

1.session和cookie的区别?
答:1)session在服务器,cookie在浏览器。
2)session依赖于sessionid,而sessionid是存到cookie的。
3)cookie保存的数据有大小有限的,且只能存放字符串类型数据,而session可以存放其他类型数据。
4)cookie存储会有安全问题,当其他人获取了本地的cookie,可以访问服务器;但对session来说,当用户过多的话,session会占用大量的服务器资源,造成性能下降。
2.servlet的生命周期?
答:1)第一次访问servlet的时候创建servlet对象; 2)调用servlet的init方法,该方法只会调用一次; 3)访问servlet的时候调用service方法来处理业务; 4)服务器关闭的时候调用destroy方法来销毁对象。
3.什么是servlet?servlet和JSP的关系?
答:serlvet是运行在服务端上的程序,用于处理前端发送过来的数据,动态的生成内容。
JSP的本质是servlet,经过编译之后就成了servlet;
JSP有内置对象,而servlet没有;
JSP更擅长页面表达,而servlet更适合逻辑业务处理。
4.xml的DOM解析和SAX解析的区别?
答:1)DOM解析一次性把全部文档内容以对象的方式加载到内存中;SAX解析则是边加载边读取。
2)DOM可以对文档中任意节点尽心增删改查,而SAX只能顺序读取,不能增删。
3)DOM是面向对象的编程方式,SAX是基于事件的编程方式。
5.转发和重定向的区别?
答:1)转发是一次请求,重定向是两次请求。
2)转发的地址栏不会变,且只能转发本应用内的资源;重定向可以访问应用外的资源,地址栏也会发生变化。
6.GET和POST提交方式的区别?
答:1)GET方式提交的数据是放在URL中的,是不安全的,而POST则是对所有用户不可见的。
2)GET方式提交的数据最多2KB,而POST没有限制。
3)GET方式提交的数据编码只能是ASC_II 码,而POST的没有限制。
4)GET方式提交的数据只需要一个TCP报文,而POST需要两个,先发送HTTP包的header,等服务器响应100,再发送数据。
7.servlet是线程安全的吗?
答:不是,servlet容器默认采用的是单例模式来处理请求的,即每个servlet在容器中只有一个实例对象,当用户发起请求的时候,会从线程池中取出一个线程,之后找到对应的servlet对象,当多个用户访问servlet对象的时候,servlet的实例对象或者静态变量的修改就会造成线程不安全的情况。
8.拦截器和过滤器的区别?**
答:1)过滤器是用来过滤参数,设置编码字符等工作;拦截器是用来拦截用户请求,对请求做判断处理,常用在用户登录处理,权限检查,记录日志。
2)过滤器是servlet规范中的对象;拦截器是框架中的对象。
3)过滤器是一个时间点;拦截器是三个时间点。
4)拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。