javaweb面试题续

20、cookie和session的区别

    Cookie的数据是存放在客户端的浏览器上,session数据时放在服务器

    Cookie不是很安全,其他人可以分析存放的cookie,进行cookie的欺骗,考虑到安全应该使用session

    session会在一定时间内保存在服务器上,当访问当访问增多时,会占用服务器的性能,因此可以考虑使用cookie

   

21、JSP的四大域对象

    JSP的四大域对象:page、request、session、application

    page代表与一个页面相关的对象和属性

    request代表与web客户机发出的一个请求相关的对象和属性。

    session代表与某个用户与服务器建立的一次会话的对象和属性

    application代表与整个web应用程序相关的对象和属性,它的实质是跨越整个web应用程序,包括多个页面、请求和绘画的一个全局作用域

 

22、监听器与Servlet中的监听器

    监听器实质是一个java类,用来监听另一个类的方法属性是否发生变化,一旦发生了变化,监听器这个类就会被调用

    Servlet中的监听器

        ServletContext、HttpServletRequest、HttpSession

    HttpSession监听JavaBean的状态的改变(钝化、活化、绑定、解绑)

 

23、过滤器Filter

    在Web应用中过滤器它可以截取客户端和服务器端之间的请求和响应信息,并对这些信息进行过滤当WEB容器接收到一个资源的请求时,它会判断是否有过滤器与这个资源相关联,如果有,那么容器将请求交给过滤器进行处理 

    在Web.xml中配置filter。

 

24、装饰者模式:

    条件①:装饰者(增强的类)和被装饰者(被增强的类)都要实现同一个接口;

    条件②:装饰者要获得被装饰者的引用

    缺点:如果接口中的方法很多那么就要实现很多方法。

 

25、JSP页面实现文件上传

    条件:

        form表单的提交方式是post,有input type=”file”,                                                             enctype="multipart/form-data"

    步骤:

        创建核心上传类ServletFileUpload,需要一个工厂类

        创建磁盘工厂独享DiskFileItemFactory

        解析客户端发送给过来的请求

        处理解析结果,结果是FileItem的集合

        遍历集合,判断是普通表单项还是文件上传项

        如果是普通表单项,输出name和value

        如果是文件上传项,创建FileOutputStream对象,两个流对接向服务器写文件

26、Web.xml文件可以配置哪些内容

    web.xml文件用于配置web应用的相关信息,如:监听器、过滤器、Servlet、相关参数、会话超时时间、安全验证、错误页面等

    ①配置Spring上下文加载监听器加载Spring配置文件并创建IOC容器

    ②配置OpenSessionView过滤器解决延迟加载和Hibernate会话关闭的矛盾

    ③配置会话超时间为10分钟

    ④配置404和Exception的错误页面

    ⑤配置安全认证的方式

   

27、项目中常用的JSTL标签

    项目中使用了JSTL的核心标签库,包括<c:if>、<c:choose>、<c: when>、<c: otherwise>、<c:forEach>等,主要用于构造循环和分支结构以控制显示逻辑。

 

28、Servlet中如何获取用户提交的查询参数或表单数据?

    可以通过请求对象(HttpServletRequest)的getParameter()方法通过参数名获得参数值。如果有包含多个值的参数(例如复选框),可以通过请求对象的getParameterValues()方法获得。当然也可以通过请求对象的getParameterMap()获得一个参数名和参数值的映射(Map)。

   

29、WebService和SOA

    WebService是一个应用程序,它向外界暴露出一个能够通过Web进行调用的的API。

    SOA 面向服务的架构,SOA是一种思想,它将应用程序的不同功能单元通过中立的契约联系起来,独立于硬件平台,操作系统和编程语言,使得各种形式的功能单元能够更好的继承。

 

30、SOAP、WSDL、UDDI

    SOAP:简单对象访问协议(SimpleObject Access Protocol),是Web Service中交换数据的一种协议规范。

    WSDL:Web服务描述语言(Web Service Description Language),它描述了Web服务的公共接口。这是一个基于XML的关于如何与Web服务通讯和使用的服务描述;也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。

    UDDI:统一描述、发现和集成(UniversalDescription, Discovery and Integration),它是一个基于XML的跨平台的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务。

 

31、WebService的相关规范有哪些

    JAX-WS:它是基于SOAP的WebService规范。不提公共向下兼容性。

    JAX-RS:是java针对REST架构风格制定的一套WebService规范。REST是一种软件架构模式,是一种风格,不想SOAP那样本身承载着一种消息协议。

    两种风格的WebService均采用了HTTP做传输协议,因为HTTP协议能穿越防火墙,Java的远程方法调用(RMI)等是重量级协议,通常不能穿越防火墙

    HTTP协议中的URI可以完成资源定位,而GET、POST、OPTION、DELETE方法可以完成资源操作。因此REST完全依赖HTTP协议就可以完成Web Service,而不像SOAP协议那样只利用了HTTP的传输特性,定位和操作都是由SOAP协议自身完成的,也正是由于SOAP消息的存在使得基于SOAP的Web Service显得笨重而逐渐被淘汰。

 

32、四种会话跟踪技术

    由于HTTP协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单地说就是为了用户进行登记,为用户分配唯一的ID,下次用户在请求中包含此ID,服务器判断到底是哪个用户

    ①URL重写:在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话

    ②设置表单隐藏域:江河会话跟踪相关的字段添加到隐式表单域中,这些信息不会再浏览器中显示但是提交表单是会提交给服务器。

    ③cookie:cookie有两种,一种是基于窗口的,浏览器窗口关闭后,cookie就没有了;另一种是将信息存储在一个临时文件中,并设置存在的时间。当用户通过浏览器和服务器建立一次会话后,会话ID就会随响应信息返回存储在基于窗口的cookie中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个会话ID又会提交给服务器让服务器识别用户身份。

    ④HttpSession:在所有会话跟踪技术中,HttpSession对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建HttpSession,每个用户可以访问他自己的HttpSession。

 

33、如何实现JSP或Servlet的单线程模式?

答:对于JSP页面,可以通过page指令进行设置。

    <%@page isThreadSafe=”false”%>

    对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。

    这样做的话服务器的压力会特别大,性能会降低

 

34、pojo、EJB、JavaBean区别

    pojo简单java对象,有一些private的参数作为对象的属性,然后针对每个参数定义get和set方法访问的接口,没有从任何类继承、也没有实现任何接口,更没有被其他框架侵入的java对象

    JavaBean符合一定规范编写的java类,不是一种技术,而是一种规范。所有的属性为private,这个类必须有公共的缺省构造函数,,即提供无参数的构造器。这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。这个类是可序列化的。

    DAO数据访问对象,DAO一般有接口和该接口的实现类,接口用于规范实现类,实现类一般用于操作数据库。

    什么是DTO(datatransfer object)、什么是VO(value object)、什么是PO(persistent object)?我们通过DAO将POJO持久化为PO,用PO组装出来VO、DTO。

         BO: POJO在业务层的体现,对于业务操作来说,更多的是从业务上来包装对象,如一个User的BO,可能包括name, age, sex, privilege, group等,这些属性在数据库中可能会在多张表中,因为每一张表对应一个PO,而我们的BO需要这些PO组合起来(或说重新拼装)才能成为业务上的一个完整对象。

         EJB(Enterprise JavaBean): 我认为它是一组"功能"JavaBean的集合。上面说了JavaBean是实现了一种规范的Java对象。这里说EJB是一组JavaBean,的意思是这一组JavaBean组合起来实现了某个企业组的业务逻辑。这里的一组JavaBean不是乱组合的,它们要满足能实现某项业务功能的搭配。

 

35、同步和异步有和异同,在什么情况下分别使用他们?举例说明。

    如果数据在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取

    当应用程序在对象上调用一个需要花很多时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下才有异步更加有效率

    同步交互:指发送一个请求,需要等待返回,才能够发送下一个请求,有个等待过程;

    异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。

 

36、数据连接池的工作机制是什么?

    J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数量的池连接,客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙,如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定,当使用的池连接调用完成后,池驱动程序将此连接标记为空闲,其他调用就可以使用这个连接.

 

37、垃圾回收的优点和原理。并考虑2种回收机制。

         1、java语言最显著的特点就是引入了垃圾回收机制,它使Java程序亚UN在编写程序时不在考虑内存管理的问题

         2、由于有了这个垃圾回收机制,java中的对象不再有“作用域”的概念

         3、垃圾回收机制有效防止了内存泄漏,可以有效的使用可使用的内存

         4、垃圾回收期通常作为一个单独的低级别好的线程在运行,在不可预知的情况下对内存堆中已经死亡的或者很长时间没用过的对象进行清除和回收

         5、程序员不能实时的对某一个对象或者所有对象调用垃圾回收期进行垃圾回收

         垃圾回收机制有分代复制垃圾回收、标记垃圾回收、增量垃圾回收

 

38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

    对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。强制执行垃圾回收:System.gc()。Runtime.getRuntime().gc()

39、说说事务的概念,在JDBC编程中处理事务的步骤。

    事务时作为单个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有四个属性

    事物的处理步骤

        conn.setAutoComit(false);设置提交方式为手工提交

        conn.commit();提交事务

        出现异常,回滚conn.rollback();

 

40、AJAX应用和传统Web应用有什么不同?

    1、从同步和异步的通信方式中可以看出,异步数据所占的比例少于同步中数据所占比例,所以数据传输效率小于同步通信

    2、Ajax开发相比较于传统的Web开发,增添了一个Ajax引擎,这个模块主要是用于对服务器端传送过来的数据进行解析,这一过程中,数据量大大减少,因此开发效率高。

    Ajax的不足:

        破坏了浏览器的后退机制,Ajax实现了动态更新数据,只是局部的更新,因此用户无法直接通过back按钮恢复到上一个状态

        兼容想不强,对浏览器的的支持比较弱

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值