六、Web部分:(共题:基础40道,基础37道,中等难度3道)
122、说出Servlet的生命周期,并说出Servlet和CGI的区别? 【基础】
答:Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init方法进行Servlet的初始化,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
123、Servlet的基本架构。【基础】
答:public class ServletName extends HttpServlet {
??????? public void doPost(HttpServletRequest request,
?????????????????????????? HttpServletResponse response)
?????????????????????????? throws ServletException, IOException {
??????? }
?????? ?public void doGet(HttpServletRequest request,
?????????????????????????? HttpServletResponse response)
?????????????????????????? throws ServletException, IOException {
??????? }
??? }
124、forward 和redirect的区别? 【基础】
答:forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
125、JSP中动态INCLUDE与静态INCLUDE的区别?【基础】
答:动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态INCLUDE用include伪码实现,它不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
126、说出数据连接池的工作机制是什么? 【基础】
答:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
127、JSP的内置对象及方法?【基础】
答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header和session数据的有用的方法。
??? response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)。
??? out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
??? pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
??? session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息。
? ? application 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。
? ? config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
? ? page表示从该页面产生的一个servlet实例。
128、JSP的常用指令?【基础】
答:<%@page language=”java” contenType=”text/html;charset=gb2312” session=”true” buffer=”64kb” autoFlush=”true” isThreadSafe=”true” info=”text” errorPage=”error.jsp” isErrorPage=”true” isELIgnored=”true” pageEncoding=”gb2312” import=”java.sql.*”%>
isErrorPage:是否能使用Exception对象;isELIgnored:是否忽略EL表达式;
<%@include file=”filename”%>
<%@taglib prefix=”c”uri=”http://……”%>
129、jsp有哪些动作?作用分别是什么? 【基础】
答:JSP共有以下6种基本动作:
??? jsp:include:在页面被请求的时候引入一个文件;
??? jsp:useBean:寻找或者实例化一个JavaBean。;
??? jsp:setProperty:设置JavaBean的属性。;
??? jsp:getProperty:输出某个JavaBean的属性;
??? jsp:forward:把请求转到一个新的页面;
??? jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
130、jsp有哪些内置对象?作用分别是什么? 【基础】
答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
? request:用户端请求,此请求会包含来自GET/POST请求的参数;
? response:网页传回用户端的回应;
? pageContext:网页的属性是在这里管理;
? session:与请求有关的会话期;
? application:servlet正在执行的内容;
? out:用来传送回应的输出;
? config:servlet的构架部件;
? page:JSP网页本身;
? exception:针对错误网页,未捕捉的例外。
131、get和post的区别?【基础】
答: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的默认方法。
132、什么情况下调用doGet()和doPost()?【基础】
答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
133、如何从form表单中得取checkbox的值;【基础】
答:可在页面把checkbox的name属性取同一个,value属性取每个条目的id,后台用getParamter(“name”)能取到checkbox的一组值。
134、页面中有一个命名为bank No的下拉列表,写脚本获取当前选项的索引值。【基础】
答:用java或javaScript的处理方式分别如下:
??? Java: request.getParameter(“bank No”);
??? javaScript:
??????? var selectItems = document.getElementsByName(“bank No”);
??????? selectItems[0].value;
135、javascript常用的方面;【基础】
答:常用于数据输入校验和页面特殊效果等。
136、常用的web容器和开发工具;【基础】
答:最常用的容器包括:tomcat、weblogic;
??? 开发工具有:eclipse,jbuilder。
137、请画出Servlet 2.2以上Web Application的基本目录结构(2分钟)【基础】
答:目录结构如下图所示:
??? ??? ??????????? ????webapps
???????????????????????? |
??????????????????? Applocation
???????????????????????? |
???????????????? __________________
???????????????? |???????????????? |
????????????? JSP页面?????????? WEB-INF
?????????????????????????????????? |
????????????????????????? ___________________
????????????????????????? |???????? |??????? |
????????????????????? classes????? lib??? web.xml
138、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?【基础】
答:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
139、jsp的四种范围?【基础】
答:a.page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
??? b.request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
??? c.session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
??? d.application是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。
140、Request对象的主要方法? 【基础】
答:setAttribute(String name,Object):设置名字为name的属性值
??? getAttribute(String name):返回由name指定的属性值
??? getAttributeNames():返回request对象所有属性的名字集合(枚举)
??? getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
??? 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():获取服务器的名字
??? getServletPath():获取客户端所请求的脚本文件的路径
??? getServerPort():获取服务器的端口号
??? removeAttribute(String name):删除请求中的一个属性
141、如何实现servlet的单线程模式?【基础】
答:<%@page isThreadSafe=”false”%>
142、页面间对象传递的方法。【基础】
答:request,session,application,cookie等。
143、详细描述MVC。【基础】
答:基于Java的Web应用系统采用MVC架构模式,即model(模型)、view(视图)、control(控制)分离设计;这是目前WEB应用服务系统的主流设计方向。
??? Model:即处理业务逻辑的模块,每一种处理一个模块;
?? ?View:负责页面显示,显示MODEL处理结果给用户,主要实现数据到页面转换过程;
??? Control:负责每个请求的分发,把FORM数据传递给MODEL处理,把处理结果的数据传递给VIEW显示。
144、MVC的各个部分都有那些技术来实现?如何实现? 【基础】
答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
145、应用服务器有那些?【基础】
答:BEA WebLogic Server, IBM WebSphere Application Server, Oracle9i Application Server, JBoss, Tomcat。
146、Servlet执行时一般实现哪几个方法?【基础】
答:public void init(ServletConfig config)
?? ?public ServletConfig getServletConfig()
??? public String getServletInfo()
??? public void service(ServletRequest request,ServletResponse response)
??? public void destroy()
147、struts的入口类?【基础】
答:是ActionServlet,所有的struts请求都经由该类转发处理。
148、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属性、国际化的提示和消息。
149、几种会话跟踪技术?【基础】
答:cookie、URL重写、设置表单隐藏域。
150、BS与CS的联系与区别?【基础】
答:C/S是Client/Server的缩写,是客户机与服务器结构的应用程序,服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server的缩写,是浏览器和服务器结构的应用程序,即Web应用程序,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。
C/S 与 B/S 区别:
1)硬件环境不同:
??? C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务;
??? B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 ;
2)对安全要求不同:
??? C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息;
??? B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户;
3)对程序架构不同:
??? C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑;
??? B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟;
4)软件重用不同:
??? C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好;
??? B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子;
5)系统维护不同:
??? C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统;
??? B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级;
6)处理问题不同:
??? C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统;
??? B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小;
7)用户接口不同:
??? C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高;
??? B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本;
8)信息流不同:
??? C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低;
??? B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。
151、过滤器有哪些作用?【基础】
答:可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等。
152、过滤器的用法?(对客户端的请求统一编码和对客户端进行认证)【基础】
答:首先要实现(implements)Filter接口,同时覆盖Filter接口的三个方法:
??? init(FilterConfig config) //用于获得FilterConfig对象;
??? doFilter(ServletRequest request, ServletResponse response,
??????????????? FilterChain chain) //进行过滤处理一些业务;
??? destroy() //销毁Filter。
153、简述HttpSession的作用、使用方法,可用代码说明。(3分钟)【基础】
答:HttpSession中可以跟踪并储存用户信息,把值设置到属性中,有2个方法:setAttribute(),getAttrribute();
例如:在一个方法中用session.setAttribute(“student”,student);在session中设置一个属性名为student,值为一个名为student的对象。而后可在同一session范围内用getAttribute(“student”)取出该属性,得到student对象。
154、介绍在JSP中如何使用JavaBeans?【基础】
答:在JSP中使用JavaBean常用的动作有:
??? 1)<jsp:useBean />:用来创建和查找bean对象;
??? 2)<jsp:setProperty />:用来设置bean的属性,即调用其setXxx()方法;
??? 3)<jsp:getProperty />:用来获得bean的属性,即调用其getXxx()方法。
155、JSP和Servlet中的请求转发分别如何实现?【基础】
答:JSP中的请求转发可利用forward动作实现:<jsp:forward />;
??? Serlvet中实现请求转发的方式为:
???? getServletContext().getRequestDispatcher(path).forward(req,res)。
156、Web.Xml的作用?【基础】
答:用于配置web应用的信息;如 listener、filter 及 servlet 的配置信息等。
157、写出熟悉的JSTL标签。【基础】
答:<c:if>、<c:choose>、<c: when>、<c: otherwise>、<c:forEach>、<c:set>。
158、说出struts中的标签。【基础】
答:<bean:message? />?????????? <html:errors />
??? <bean:include? />?????????? <html:messages />
??? <bean:define />???????????? <html:html>
??? <bean:write />????????????? <html:form>
??? <bean:resource />?????????? <html:link>
??? <bean:cokkie />???????????? <html:text>
??? <bean:heder />????????????? <logic:present />
??? <bean:parameter />????????? <logic:equal />
??? <bean:size />
159、JSP标签的作用?如何定义?【中等难度】
答:作用:分离jsp页面的内容和逻辑;
????????? 业务逻辑开发者可以创建自定义标签;
????????? 封装业务逻辑;
????????? 可重用并且易维护;
????????? 易于手工修改、易于工具维护;
????????? 提供简洁的语法;
??? 定义:
????????? 写标签处理器;
????????? 写tld文件;
????????? 讲标签处理器和tld文件放到同一个包里面;
????????? 把jsp页面和标签库配置部署在一起。
160、写一个自定义标签;【中等难度】
答:代码如下:
??? import javax.servlet.jsp.tagext.*;
??? import javax.servlet.jsp.*;
??? import java.io.*;
??? public class TimeTag extends SimpleTagSupport{
??????? private boolean isServer = true;
??????? public void setServer(boolean isServer){
??????????? this.isServer = isServer;
??????? }
??????? public void doTag() throws JspException, IOException{
?????? ?????JspWriter out = getJspContext().getOut();
??????????? if(isServer) {
??????????????? out.println(new java.util.Date());
??????????? }else{
??????????????? out.println("<script language=\"javascript\">");
??????????????? out.println("document.write(new Date());");
??????????????? out.println("</script>");
??????????? }
??????? }
??? }
161、javascript的优缺点和内置对象;【中等难度】
答:1)优点:简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标;
??? 2)缺点:不适合开发大型应用程序;
??? 3)Javascript有11种内置对象:
?????? Array、String、Date、Math、Boolean、Number、
?????? Function、Global、Error、RegExp、Object。