java面试题第II季基础javaJEE1.简述JavaServerPage和Servlet的联系和区别?答:Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑2.jsp有哪些内置对象?作用分别是什么?答:1.request用户端请求,此请求会包含来自GET/POST请求的参数。2.response网页传回用户端的回应。3.pageContext网页的属性是在这里管理。4.session与请求有关的会话期。5.applicationservlet正在执行的内容。6.out用来传送回应的输出。7.configservlet的构架部件。8.pageJSP网页本身。9.exception针对错误网页,未捕捉的例外。3.jsp有哪些动作?作用分别是什么?答:JSP共有以下6种基本动作jsp:include:在页面被请求的时候引入一个文件。jsp:useBean:寻找或者实例化一个JavaBean。jsp:setProperty:设置JavaBean的属性。jsp:getProperty:输出某个JavaBean的属性。jsp:forward:把请求转到一个新的页面。jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。4.在jsp页面间传递值可用哪些方法?答1.直接在Url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用&隔开2还有jsp:include3.还有jsp:forward4.设置session和request5.说一说Servlet的生命周期?有哪些方法?各在什么是否被调用和其含义?1.发送请求2.解释请求3.创建一个Sverlt实例4.调用init()方法5.调用Service()方法6.输出响应信息7.返回响应8.调用destroy()消毁的方法,结束服务Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。6.JAVASERVLETAPI中forward()与redirect()的区别,在JSP开发中优先采用哪种方式?答:使用forward的时候浏览器不知道它所请求的具体资源来源,所以地址栏不会变;使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。forward,转发页面和转发到的页面可以共享request里面的数据.redirect,不能共享数据.从效率来说,forward()的效率比redirect()要高,所以开发中优先采用forward()7.说出数据连接池的工作机制是什么?答:程序和数据库建立连接,发送数据操作的指令,完成后断开连接。等下一次请求的时候重复这个过程,即每个请求都需要和数据库建立连接和断开连接,这样当数据量大的时候系统的消耗是很大的。连接池就是为了解决这个问题:在一个空间中预先建立好一定数量的连接,当程序请求数据时直接使用池中的现存的连接,不需要重复建立连接和断开的过程,节省了时间提高了性能8.什么是JNDI,tomcat的JNDI接口与标准的java应用服务器有何区别?是一个通用、统一的接口答:是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用,统一的接口,类似JDBC都是构建在抽象层上。9.请简要叙述Session工作原理?答:session是记录在服务器端的(一般在内存中,也有在文件中或数据库中)当一个新连接请求时,一个新的session诞生,客户用SessionID请求调用,直到该连接断开并经过session保留时间后消失,它的生存时间是可以设置的10.JSP的会话默认维持多少时间?如想修改,有些什么手段修改?答:30分钟,1.在Tomcat的sever文件改,2.用编程式来改,11.Cookie的工作原理和种类,怎么进行转换,怎样通过cookie实现各浏览器面间的session共享:12.MVC架构中的M、V、C代表什么?答:M即Model(模型层),主要负责出来业务逻辑以及数据库的交互V即View(视图层),主要用于显示数据和提交数据C即Controller(控制层),主要是用作捕获请求并控制请求转发,13.列出Jsp中包含外部文件的方式,两者有何区别?答:动态INCLUDE用jsp:include动作实现jsp:includepage=included.jspflush=true/它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面%@includefile=included.htm%14.EL是什么,它的隐式对象有哪些?答:EL提供了JSP脚本编制元素范围外使用运行时表达式的功能PageContext,param,paramValues,header,headerValues,pageScope,requestScope,sessionScope,applicationScope.15.JSTL是什么,它的最新版本号是多少?答:是标准标签库,最新版本号是1.116.jsp的标准标签库分几类,其中核心标签又分几种?答:17.你了解WEBSERVICE吗,如果了解请介绍你对WEBSERVICE的理解?答:Webservice让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。18.简单介绍你用什么实现组件开发WEBSERVICE?19.什么是SOAP、WSDL、UDDI、ESB、BPEL?答:SOAPA是WebServices的通信协议,是一个简单的,轻量级的基于XML机制WSDL文件一个XML文档,用于说明一组SOAP消息以及如何交换这些消息。UDDI提供一种发布和查找服务描述的方法。ESB是企业服务总线ESB,是SOA架构的一个支柱技术。BPEL是一门用于自动化业务流程的形式规约语言。20.SOA是一门语言吗?它与OOP是什么关系?答:SOA是一个架构理念—OOP是一个编程理念SOA是面向服务----OOP是面向对象SOA不是语言,是一种架构分类,这种架构是面向服务的。以一项项服务为单位来进行扩展,一项服务有自己的一套API方法,就像OOP是以Object为单位,每一个类都有自己的属性和方法。SOA是抽象概念,具体实施可以用各种语言来实现。21.CGI是什么?它与servlet有什么关系?答:CGI是通用网关接口关系:servlet是从CGI廷生出来的22.在JavaWeb开发过程中经常会遇到乱码问题,一般你是如何解决的?答:用request和response设置编码为“UTF-8”23.Tomcat6.0中能配多少个数据库连接池?答:可以有多个,最多配523个。24.怎样把web工程部署到Tomcat中,在你以前的项目中一般是怎样处理的?答:点击快捷工具栏中的DeployMyEclipseprojects...按钮,选择工程点击Add,选择tomcat服务就完成了就部署成功了选择工具栏中的Run/Stop/Restart按钮,可以选择启动或停止服务25.request对象getAttribute(Stringname)和getParamater(Stringname)的区别是什么?答:getParameter得到的都是String类型的。或者是某个表单提交过去的数据。getAttribute则可以是对象getParameter返回的是String类型的getAttribute返回的是Object类型26.JavaWeb开发中,你是怎样处理分页的,效率考虑?简要说明一下你分页处理的思路?答:根据数据库的需要查询的数据量的多少来分页,如果数据库的数据不是很多的话,就一次性查询出来,然后按每页显示多少而分页。如果数据库需要查询的数据很多,就按每页存放多少数据每次就查询多少条数据27.请你说说Struts的体系结构和处理请求的工作流程?答:Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,如JDBC/EJB,struts工作流程:1:客户端填写完jsp页面的数据之后单击提交按钮向服务器发出http请求,客户端所有的请求都被ActionSerlvet拦截。2:ActionServlet根据用户的请求在struts-conifg.xml配置文件中查找与之对应的Action,同时把用户的数据填充给对应的ActionForm,然后把ActionForm一起分发给Action进行处理。3:Action会自动调用excute方法,在该方法里面Action将从ActionForm里面获取用户填写的数据,并调用模型(javaBean)进行相应的处理,然后把处理的结果显示在其它的视图(jsp页面)28.你是怎样整合SSH的?有几种方式?答:1.使用向导添加struts2的组件;2.使用向导添加spring2.5的组件3使用向导添加hibernate的组件4.在web.xml文件中指定Spring容器5.指定Struts2的Action由Spring容器管理6.在spring的applicationcontext.xml配置文件的action的作用域是原型29.请你说说Struts2的体系结构和OGNL?答:为了解决数据从View层传递到Controller层时的不匹配性,Struts2采纳了XWork的OGNL方案。并且在OGNL的基础上,构建了OGNLValueStack的机制,从而比较完美的解决了数据流转中的不匹配性。OGNL(ObjectGraphNavigationLanguage),是一种表达式语言。使用这种表达式语言,你可以通过某种表达式语法,存取Java对象树中的任意属性、调用Java对象树的方法、同时能够自动实现必要的类型转化。如果我们把表达式看做是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。30.struts与struts2有什么异同?答:struts配置文件中的redirect视图的url不能接受参数,而struts2配置文件中的redirect视图可以接受参数。31.请简述Struts2与Strut1的异同?答:Struts1支持手动验证凭借ActionForm的validate方法,或者通过扩展的公用验证器。类可以有不同的验证上下文未相同的类,但是不能不能包括验证子对象。Struts2支持手动验证凭借validate方法和XWork验证框架。Xwork验证框架支持一连串的验证子属性使用的验证了属性类的类型和严正上下文而定义。一、struts1要求Action类继承一个抽象基类,而不是接口。struts2的action类可以实现一个action接口,也可以实现其他接口。二、sturts1action是单例模式,线程是不安全的。struts2action线程是安全的,action为每一个请求都生成了一个实例。三、sturts1过去依赖serletAPI,不容易测试。struts2不依赖于容器,允许Action脱离容器单独被测试。四、Struts1使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。1.在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO。2.线程模型方面:Strut