javaweb面试题01
1 Servlet 的生命周期
答:Web 容器加载Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其init 方法进行Servlet 的初始化,请求到达时运行其service 方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。
2 forward 和redirect 的区别
答:forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。
前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
3 JSP 的内置对象及方法
request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息
response 表示HttpServletResponse 对象,网页传回用户端的回应;并提供了几个用于设置送回浏览器的响应的方法
out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext 表示一个javax.servlet.jsp.PageContext 对象。网页的属性,它是用于方便存取各种范围的名字空间、servlet 相关的对象的API
session 表示一个请求的javax.servlet.http.HttpSession 对象。与请求有关的会话期。Session可以存贮用户的状态信息。
application 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎和servlet 环境的信息。
config 表示一个javax.servlet.ServletConfig 对象。servlet 的构架部件,该对象用于存取servlet 实例的初始化参数。
page 表示从该页面产生的一个servlet 实例。JSP 网页本身
exception:针对错误网页,未捕捉的例外。
4 Form 中get 和post 请求的区别
答:在数据传输过程中分别对应了HTTP 协议中的GET 和POST 方法。二者主要区别如下:
1)Get 是用来从服务器上获得数据,而Post 是用来向服务器上传递数据;
2)Get 将表单中数据按照variable=value 的形式,添加到action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL;
3)Get 是不安全的,因为在传输过程,数据被放在请求的URL 中;Post 的所有操作对用户来说都是不可见的;
4)Get 传输的数据量小,这主要是因为受URL 长度限制;而Post 可以传输大量的数据,所以在上传文件只能使用Post;
5)Get 限制Form 表单的数据集必须为ASCII 字符,而Post 支持整个ISO10646字符集;
6)Get 是Form 的默认方法。
5 JSP 和Servlet 有哪些相同点和不同点,他们之间的联系是什么
答:JSP 是Servlet 技术的扩展,本质上是Servlet 的简易方式,更强调应用的页面表达。Servlet 和JSP 最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是Java 和HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。
6 什么是Servlet,作用
答:servlet是一个基于java技术的WEB组件,运行在服务器端,我们利用 sevlet可以很轻松的扩展WEB服务器的功能,使它满足特定的应用需要。servlet由servlet容器管理,servlet容器也叫 servlet引擎,是servlet的运行环境,给发送的请求和响应之上提供网络服务.
7 jsp 的四种范围
答:page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的include 指令,但是没有include 动作)表示。这既包括servlet 又包括被编译成servlet 的JSP页面
request 是代表与Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web 组件(由于forward 指令和include 动作的关系)
session 是代表与用于某个Web 客户机的一个用户体验相关的对象和属性。一个Web 会话可以也经常会跨越多个客户机请求
application 是代表与整个Web 应用程序相关的对象和属性。这实质上是跨越整个Web 应用程序,包括多个页面、请求和会话的一个全局作用域。
8 详细描述MVC
答:基于Java 的Web 应用系统采用MVC 架构模式,即model(模型)、view(视图)、control(控制)分离设计;这是目前WEB 应用服务系统的主流设计方向。
Model:即处理业务逻辑的模块,每一种处理一个模块;
View:负责页面显示,显示MODEL 处理结果给用户,主要实现数据到页面转换过程;
Control:负责每个请求的分发,把FORM 数据传递给MODEL 处理,把处理结果的数据传递给VIEW 显示。
9 STRUTS 的应用(如STRUTS 架构)
答:Struts 是采用Java Servlet/JavaServer Pages 技术开发Web 应用程序的开放源码的framework。采用Struts 能开发出基于MVC(Model-View-Controller)设计模式的应用构架。Struts 有如下的主要功能:
1)包含一个controller servlet,能将用户的请求发送到相应的Action 对象;
2)JSP 自由tag 库,并且在controller servlet 中提供关联支持,帮助开发人员创建交互式表单应用;
3)提供了一系列实用对象:XML 处理、通过Java reflection APIs 自动处理JavaBeans 属性、国际化的提示和消息。
10 javascript 的优缺点和内置对象;【中等难度】
答:1)优点:简单易用,与Java 有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标;
2)缺点:不适合开发大型应用程序;
3)Javascript 有11 种内置对象:Array、String、Date、Math、Boolean、Number、Function、Global、Error、RegExp、Object。