java笔试面试题(五)

每日一句: 你未必出类拔萃,但一定与众不同。

1. 说说你使用过哪些ajax技术和框架,说它们的区别
AJAX(Asynchronous JavaScript And XML,异步JavaScript和XML),是创建交互式Web应用程序主要开发技术之一,互联网中也有大量的关于AJAX的矿建,本次汇总了常用的11个:
(1)jQuery
jQuery是一个轻量级的JavaScript库,兼容CSS3,还兼容各种浏览器。jQuery使用户能方便地处理HTML document、events、实现动画效果,并且方便的为网站提供AJAX交互。
(2)MooTools
MooTools是一个简洁、模块化、面向对象的JavaScript库。它能够帮助你更快、更简单的编写可扩展和兼容性较强的JavaScript代码。MooTools跟prototypejs相类似,语法几乎一样。但它提供的功能要比prototypejs多,而且更强大。比如增加了动画特效、拖拽效果等。
(3)Prototypejs
Prototypejs是Sam Stephenson写的一个非常优雅的JavaScript基础类库,对JavaScript做了大量的扩展,旨在简化动态Web应用程序的开发,Prototypejs很好的支持了AJAX,国内外有多个基于此类库实现的效果库,也做的很好。
(4)ASP.NET AJAX
ASP.NET AJAX是一个完整的开发框架,容易与现有的ASP.NET程序相结合,通常实现复杂的功能只需要在页面中拖几个控件,而不必了解深层次的工作原理,初次之外服务器端编程的ASP.NET AJAX Control Toolkit含有大量的独立AJAX控件和对ASP.NET原有服务器控件的AJAX功能扩展,实现起来也非常方便。
(5)Apache Wicket
是一个针对于java的web开发框架,与Struts、WebWork、Typestry类似。其特点在于对HTML和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发方式与C/S相似),更加易于调试(错误类型比较少,而且容易定位)。
(6)Dojo Tookit
Dojo是一个强大的面向对象的JavaScript框架。主要由三大模块构成:Core、Dijit、DojoX。Core提供AJAX、events、packaging、CSS-based querying、animations、JSON等相关操作API,Dijit是一个可更换皮肤、基于模板的webUI控件库,DojoX包括一些创新/新颖的代码和控件:DateGrid、charts、离线应用、跨浏览器矢量绘图等。
(7)DWR(Direct Web Remoting)
是一个java库,可以帮助开发者轻松实现服务器端的java和客户端的JavaScript相互操作、彼此调用。
(8)Spry Framework
Adobe Spry是一个面向Web设计人员而不是开发人员的AJAX框架,它使得设计人员不需要了解复杂的AJAX技巧也能设计一个HTML页面中创建丰富体验成为可能。

(9)YUI(Yahoo User Interface)
是由雅虎开发的一个开源的JavaScript函数库,它采用了AJAX、DHTML和DOM等诸多技术,YUI包含多种程序工具、函数库以及网页操作界面,能够更快速的开发互动性高并且丰富的网站应用程序。
(10)GWT(Google Web Toolkit)
是一个开源的java开发框架,可以使得不会使用第二种浏览器语言的开发人员编写Google地图和Gmail等AJAX应用程序是更加轻松。
(11)ZK Framework
ZK是一套开源、兼容XUL/HEML标准、使用该框架,你无需编写JavaScript代码就可以创建一个支持Web2.0的富有互联网应用程序(RIA)。其最大的好处是在设计ajax网络应用程序时,轻松简便的操作就像设计桌面应用程序一样。ZK包含了一个一AJAX为基础、事件驱动、高互动性的引擎,同时还提供了多样丰富、可重复使用的XUL与HTML组件,以及以XML为基础的使用接口设计语言。
2. Tomcat的优化经验
去掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大Tomcat使用的jvm的内存。
3. HTTP请求的GET和POST方式的区别
(1)传输数据格式
GET请求,请求的数据参数会附加在URL之后,以?分隔URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是Unicode,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。因此GET请求的传输数据会暴露在地址栏中,而POST不会。
(2)传输数据大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受到限制的,但是实际上各个服务器会规定对POST提交的数据大小进行限制,Apache、IIS都有各自的配置。
(3)安全性
POST的安全性比GET 的高。
(4)HTTP中的get、POST、soap协议都是在HTTP上运行的。
4. Servlet的生存周期?
Servlet是有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init、service和destroy方法表达。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候用destroy方法。
5.Servlet的基本架构

public class ServletName extend HttpServlet{
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

    }
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

    }
}

6. Servlet中forward()和redirect()的区别
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接,这样在浏览器的地址栏中可以看到跳转后的链接地址。所以前者更加高效,在前者可以满足需要时,尽量使用forward方法,并且,这样也有助于隐藏实际的链接。在有些情况下需要跳转到一个其他的服务器上的资源,则比徐荣sendRedirect()方法。
7. 什么情况下调用doGet()和doPost()?
jsp页面中的from标签里的method属性为get时调用doGet(),是post则调用doPost().
8. Request对象的主要方法:
setAttribute(String name, Object obj):设置名字为name的request的参数值;
getAttribute(String name):返回由name指定的属性值;
getAttributeNames():返回request对象所有属性的名字的集合,结果是一个枚举的实例;
getCookies():返回客户端的所有cookies对象,结果是一个cookies数组;
getCharacterEncoding():返回请求中的字符编码方式;
getContentLength():返回请求body的长度;
getHeader(String name):获得HTTP协议定义的文件头信息;
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举实例;
getHeaderNames():返回所有request Header的名字,结果是枚举实例;
getInputStream():返回请求的输入流,用于获得请求中的数据;
getMethod():获得客户端向服务器传送数据的方法;
getParameter(String name):获得客户端传送给服务器端由name指定的参数值;
getParameterNames() : 获得客户端传送给服务器端的所有参数的名字,结果是枚举实例;
getParameterValues(String name):获得由name指定参数的所有值;
getProtocol():获得协议名称;
getQueryString():获得查询字符串;
getRequestURI():获得发送请求字符串的客户端地址;
getRemoteAddr():获得客户端的IP地址;
getRemoteHost():获得客户端的名字;
getSession([Boolean create]):返回和请求相关的session;
getServerName():获得服务器的名字;
getServletParh():获得客户端所请求的脚本文件的路径;
getServerPort():获得服务器的端口号;
removeAttribute(String name):删除请求中的一个属性。
9. jsp有哪些内置对象?
request:客户端请求,此请求包含来自GET/POST请求的参数;
response:网页传回客户端的响应;
pageContext:网页属性管理;
session:与请求有关的会话期;
application:servlet正在执行的内容;
out:用来传送回应的输出;
config:servlet的架构部件;
page:jsp网页本身;
exception: 针对网页错误,未捕获的例外。
10. 页面间对象传递的方法
request,session,application,cookie等。
11. jsp和servlet有哪些相同点和不同点,有什么联系
JSP是servlet技术的扩展,本质上是servlet的简易方式,jsp更强调应用的外表表达,编译后是“类servlet”。servlet和jsp最主要的不同点在于,servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离开来,而jsp的情况是java和HTML可以组合成一个扩展名为.jsp的文件。jsp侧重于视图,servlet主要用于控制逻辑。

猜你喜欢

转载自blog.51cto.com/13003060/2151686