《基于JAVA技术的Web应用开发》试题简答.docx
《《基于JAVA技术的Web应用开发》试题简答.docx》由会员分享,可在线阅读,更多相关《《基于JAVA技术的Web应用开发》试题简答.docx(26页珍藏版)》请在冰豆网上搜索。
《基于JAVA技术的Web应用开发》试题简答
Unit1Web应用体系架构简介
1.简述Web应用模型的B/S结构。
答:
Web应用是基于B/S结构的,也就是浏览器/服务器结构。
最早的应用程序,无论表示层逻辑、业务逻辑和数据库都集中在一台计算机上,各部分之间是紧密耦合的。
随着技术的发展,出现C/S结构,即客户端/服务器结构。
在这种结构中,有了专门的数据库服务器,但客户端还要运行客户端应用程序,这时是胖客户端。
在B/S结构中,客户端在浏览器中只负责表示层逻辑的实现,业务逻辑和数据库都在服务器端运行。
也就是说,应用程序部署在服务器端,客户端通过浏览器访问应用程序。
通常,客户端发送HTTP请求消息传给服务器,服务器将请求传递给Web应用程序,Web应用程序处理请求,并把响应的HTML页面传给客户端。
2.描述HTTP请求响应模型。
答:
HTTP协议基于请求/响应模型。
存在两种HTTP消息:
请求消息和响应消息。
一个完整的HTTP会话过程包括:
首先,客户端与Web服务器建立连接,通常通过默认的80端口。
建立连接后,客户端向Web服务器发送HTTP请求消息,Web服务器处理请求,并将响应消息传送给客户端,这样一个来回后,这个连接就关闭了。
2.以下HTTP消息的题头域的含义是什么?
Accept、Accept-Language、Content-Type、Host和User-Agent。
答:
名称
目的
举例
Accept
指示响应可以接受的媒体类型。
如果没有Accept题头域,则服务器可以安全的假设客户端接受所有的媒介类型。
accept:
image/gif
accept:
image/jpeg
Accept-Language
指示客户端希望响应优先使用的语言。
Accept-Language:
en-us
Content-Type
指示发送到接受者的消息体的媒介类型。
Content-type:
text/html
Host
指示所请求的资源的主机名称和端口号。
Host:
172.23.77.94
User-Agent
包含发出请求消息的客户端的信息。
User-Agent:
Mozilla/4.0
4.以下HTTP响应状态码的含义是什么?
200、400、401、404和500。
答:
响应状态码
文本描述
含义
200
OK
请求成功
400
不良请求
由于语法错误而导致服务器无法理解请求信息
401
未授权
请求要求身份验证和/或授权
404
未发现
服务器未发现与请求URI匹配的内容
500
内部服务器错误
服务器出错,无法处理请求
5.简述两大Web服务器端技术ASP.NET和JSP的特性。
答:
ASP.NET是建立在微软.NET平台上的网络技术。
它的特性有以下几点:
Ø页面表现与代码的分离——ASP.NET将页面表现和程序代码分离,在ASPX页面中只有负责页面显示的HTML标记、Web控件标记等。
而随后绑定的aspx.cs或aspx.vb页面包含了页面的程序代码。
Ø能够使用多种语言——页面表现与代码的分离使得程序员可以在代码页面使用多种语言,如VB.NET、C#等。
Ø编译执行——ASP.NET程序是编译执行的。
JSP 是使用Java语言的Web服务器端技术。
它也提供了在 HTML 代码中混合程序代码、由语言引擎执行程序代码的能力。
它的特性包括:
Ø使用 Java语言;
Ø在 HTML 代码中混合程序代码、由语言引擎执行程序代码;
ØJSP被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生;
Unit2J2EE简介
1.MVC设计模式包含哪些组件,其作用各是什么?
答:
MVC设计模式是软件设计中的典型结构之一。
MVC是Model/View/Control的缩写。
在这种设计结构下,应用程序分为三个组成部分:
Model模型、View视图和Controller控制器,每个部分负责不同的功能。
Model提供应用业务逻辑,是指对业务数据、业务信息的处理模块,包括对业务数据的存取、加工、综合等;
View是指用户界面,也就是用户与应用程序交互的接口。
用户可以通过view输入信息,另一方面应用程序通过view将数据结果以某种形式显示给用户。
Controller则负责View和Model之间的流程控制。
2.MVC模式的优势有哪些?
答:
MVC模式使应用程序的结构更加清晰,通过将代码按照层次划分为业务逻辑/数据层、用户界面和应用流程控制这三个层次,能够增强代码的稳定性。
对于Model、View、Controller这三部分功能来讲,View的实现一般是由界面设计人员和界面程序员来完成,Model则是由业务逻辑程序员来完成,Controller则一般由负责整体控制的程序员来完成。
对于项目开发而言,三层的分离有利于在项目小组内按照小组成员各自的擅长进行分工,有利于三个部分并行开发、加快项目进度。
另一方面,Controller部分的代码比较稳定,一般会实现一个通用的架构;而Model则跟随商务流程的变化而变化;View的更改则是随着用户需求的更改而更改。
这种模块功能的划分有利于在代码修改过程中进行模块的隔离,而不需要把具有不同功能的代码混杂在一起造成混乱。
3.J2EE架构分为几层?
各层的组件包括哪些?
答:
J2EE架构分为三层:
客户层、中间层及企业信息系统层(EnterpriseInformationSystem)。
其中中间层又分为Web层和业务层。
Applets和ApplicationClient是客户层中包含的组件,Web组件放置在Web层,还有EnterpriseJavaBean放置在业务层。
4.J2EE容器包括哪些?
容器的作用是什么?
答:
J2EE容器包括四个:
Applet容器和ApplicationClient容器,这些是客户端容器;Web组件容器和EJB容器,这些是服务器端容器;
通常,容器提供了运行于其中的组件的控制环境。
容器提供了其中的组件可以使用的通用服务,这样组件开发人员无须自己编写这些服务。
5.简述J2EE组件和MVC架构的对应。
答:
J2EE在Web容器中的Servlet提供了业务流程控制,实现了MVC中的Controller。
Bean实现了业务逻辑,也就是Model。
三而J2EE在客户层中的Applet以及Web层中的JSP实现了面向浏览器的数据表现,ApplicationClient实现了面向桌面应用的数据表现。
这是MVC架构中的View部分。
6.J2EE的标准服务和API有哪些?
答:
J2EE的标准服务和API包括:
ØHTTP:
超文本传输协议
ØRMI-IIOP:
允许J2EE应用中的组件通过IIOP协议调用外部CORBA对象
ØJavaIDL:
Java接口定义语言
ØJDBC:
Java数据库连接
ØJNDI:
Java命名和目录接口
ØJMS:
Java消息服务
ØJavaMail:
在应用程序中加入邮件和通讯支持的支持。
并使用JAF来处理Email中数据。
ØJTA:
提供了J2EE中处理事务的标准接口。
ØJCA:
用于连接各种企业信息系统
ØJAAS:
实现认证授权的访问
ØJAXP:
提供统一访问XML文档的接口
7.J2EE的优势体现在哪?
答:
Ø首先,J2EE是一系列标准,它提供了标准的服务、组件、客户端和工具,这使应用程序开发和移植非常方便,比如,我们在WebShpere平台开发的J2EE项目可以很容易的移植到WebLogic平台上。
ØJ2EE提供的组件模型很好的实现了MVC设计模式。
从而实现了逻辑和显示的分离,以及代码重用。
Ø另外,J2EE机构提供了很强的可扩展性,可伸缩性,当应用程序规模较大,有较多的访问请求,这时候我们可以将应用程序部署在不止一台服务器上,而通过路由器等实现负载平衡,从而提供更好的访问性能。
ØJ2EE还提供了对现有的企业信息系统很好的兼容性,我们可以通过标准的协议集成已有的ERP等遗留系统。
Ø在安全方面,J2EE也集成了对遗留系统安全设置的支持。
8.简述J2EE打包与部署的标准。
答:
J2EE规范描述四种类型的模块:
Web模块、EJB模块、应用程序客户端模块和资源适配器模块。
当部署到J2EE应用程序服务器时,通常会将所有这些模块都压缩到单个J2EE应用程序EAR文件中。
EAR是Enterprise Application Archive的缩写,EAR文件用来把一个或者多个J2EE组件封装到单个模块里面,以便一起部署并装入到服务器上。
每个模块都有响应的部署描述符。
部署描述符是一个XML格式的文件,它描述了响应模块部署时的配置信息。
整个J2EE程序的EAR文件也有一个部署描述符:
application.xml。
Unit3基于Servlet和JSP的Web应用
1.什么是JavaServlet?
答:
Servlet是一个标准的服务器端的Java应用程序,可以生成动态的Web页面。
它被装载到Web服务器或应用服务器的Java虚拟机内运行。
一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。
这个请求被运行在Web服务器上的Servlet引擎处理,并传递给响应的Servlet。
Servlet通过HTTP将这个响应转发到客户端。
2.简述Servlet的任务。
答:
Servlet能够做到:
Ø读取客户端发送的所有数据
这些数据通常是在Web页面的表单中输入的,但也可能来自Javaapplet或HTTP客户端程序。
Ø读取浏览器发送的HTTP请求数据
这些信息包括有关浏览器功能、Cookie、发出请求的客户端的主机名等详细信息。
Ø生成结果
此过程可能需要与数据库通信、调用RMI或CORBA,调用遗留系统或直接计算得出响应。
Ø在文档内设置结果的格式
在多数情况下,这种情况是将信息嵌入到HTML页面中。
Ø设置合适的HTTP响应参数
这意味着告诉浏览器返回的文档类型(例如HTML)、设置Cookie和缓存参数以及其他类似任务。
Ø将文档返回给客户端
可能以文本格式(HTML)、二进制格式(GIF图像)等发送该文档。
3.简述Servlet局限性。
答:
在Servlet中使用硬编码的HTML输出作为请求的响应具有一些严重缺陷。
首先,也是最重要的缺点是,很难对HTML做出修改,因为每次修改都必须重新编译Servlet。
其次,由于HTML是硬编码的,所以维护不同的语言很困难。
判断用户的语言、所处的地区以及其他变化情况,然后再显示输出非常困难。
最后一点,因为HTML嵌入在Servlet中,因此还存在职责问题。
Web设计人员构建HTML页面;通常他们并不熟悉Java编程,更不要说熟练掌握面向对象设计和编程了。
当在Servlet中混合使用HTML和Java代码时,就很难分清页面设计和编程的职责。
4.JSP执行过程中和Servlet的关系是怎样的?
答:
JSP页面的处理过程是先将JSP页面编译预处理成JavaServlet后,再执行生成的Servlet并产生结果的。
三.jsp文件经预处理后转换为.java文件。
此后,Java编译器编译源代码,并生成可由Servlet容器执行的.class文件。
5.JSP和Servlet都用在哪些场景?
答:
Servlet也可以返回HTML页面,用于显示,但在Servlet中手动书写HTML代码非常繁琐,所以,通常来讲,Servlet主要用于Web应用程序的流程控制,验证用户输入合法性以及调用其他业务逻辑对象来访问数据等,而JSP主要用于页面显示。
Unit4运行环境设置
1.常用的Web服务器包括哪些?
答:
目前常用的一些免费Web服务器包括以下几种:
ØApacheTomcat
ØAllaireJRun
ØNewAtlanta的ServletExec
ØGefionSoftware的LiteWebServer(LWS)
2.如何安装设置TomcatWeb服务器?
答:
Ø下载并安装Java2SDK
Ø下载并安装Tomcat
Ø设置端口号
Ø设置环境变量JAVA_HOME、CLASSPATH和PATH。
Ø测试Tomcat
Unit5简单Web应用的开发样例
1.编写一个简单的HTML页面,并部署在Tomcat服务器上。
答:
略。
2.编写一个简单的JSP页面,并部署在Tomcat服务器上。
答:
略。
3.编写一个简单的JavaServlet,并部署在Tomcat服务器上。
答:
略。
Unit6Servlet简介
1.Servlet相比于CGI的优点有哪些?
答:
Servlet和传统的CGI程序相比有以下优点:
在可移植性和与平台无关性方面:
Servlet能够跨平台和不同的Web服务器交互。
几乎所有的主流服务器都直接或通过插件支持Servlet。
从持久性和性能上讲,传统的CGI对于每个HTTP请求都要启动一个新进程。
而Servlet只要被Web服务器装载一次,就能被每一个客户请求调用。
因此Servlet比CGI性能更高。
最后,Servlet是用java编写的,它继承了Java语言的所有优点。
所以,在未来的技术发展过程中,Servlet有可能彻底取代CGI。
2.简述Servlet的处理流程。
答:
Servlet的处理流程:
Ø客户端发送一个请求至服务器端;
Ø服务器将请求信息发给Servlet;
ØServlet引擎,也就是Web容器会调用Servlet的service方法;
ØServlet构建一个响应,并将其传给服务器。
这个响应是动态构建的,相应的内容通常取决于客户端的请求,这个过程中也可以使用外部资源。
Ø服务器将响应返回给客户端。
3.参照下图,简述客户端与Servlet的交互:
答:
首先,Web容器装载Servlet1。
初识化Servlet的实例变量,并且在Servlet生命周期内保持激活状态,也就是持久状态。
两个客户浏览器请求了Servlet1的服务。
Web容器为每个请求生成一个新的线程。
每一个线程都能访问最初装载的实例变量,每一个线程处理它自己的请求,并把响应返回给请求客户。
4.创建一个生成简单HTML代码的Servlet。
答:
代码如下:
packagemyServlet;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassMyHTMLServletextendsHttpServlet{
protectedvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType(“text/html”);
PrintWriterout=response.getWriter();
out.println(“
Myservlet”);
out.println(“
Thisismysimpleservlet.
”);
out.println(“”);
}
}
5.简述HttpServletRequest对象和HttpServletResponse对象的作用:
答:
HttpServletRequest对象封装客户的请求信息,这些信息包括客户的环境信息和从客户端送到服务器端的数据。
HttpServletRequest类包含了从请求对象中抽取信息的一系列方法。
HttpServletResponse对象封装了动态产生的响应。
例如,一个返回给客户端的HTML页面,这个HTML页面一般是由来自HttpServletResquest对象的数据构成的。
除了HTML页面外,一个响应对象还可以是一个HTTP错误响应、指向另一个URL的重定向或者一个Servlet。
Unit7Servlet的生命周期
1.简述Servlet生命周期。
答:
每一个Servlet都有一个生命周期,它定义了一个Servlet如何被加载和被初始化,它怎样接收请求、响应请求、怎样提供服务。
Servlet的生命周期从它被装入到Web应用服务器的内存开始,在终止或重新装入Servlet时结束。
Servlet生命周期由接口javax.servlet.Servlet定义。
所有的JavaServlet都必须直接或间接地实现这个接口。
javax.servlet.Servlet接口定义了一些方法,如init()方法,service()方法,destroy()方法等。
在Servlet的生命同期中,这些方法会在特定时间按照一定的顺序被调用。
2.根据下面这张图,简述Servlet生命周期顺序。
答:
首先创建Servlet,当请求Servlet的服务时,Web应用服务器动态的装载和实例化Servlet。
服务器会创建Servlet的一个实例,并调用Servlet的init()方法初始化。
一旦初始化了Servlet,Servlet就能随时等候处理请求。
这时Servlet处于“可用服务”的状态。
每当有一个客户请求Servlet,WebContainer都会为这个请求创建一个新的Servlet线程。
对于每一个请求,通常调用service方法。
service方法会根据所接收到的HTTP请求的类型调用doGet、doPost或别的doXxx方法。
当web服务器卸载Servlet时,调用destroy方法。
Servlet会释放它使用的任何资源。
3.什么情况下初始化Servlet?
答:
初始化方法在下列情况下发生:
第一种情况:
如果已经配置了自动装入选项,那么在启动服务器时自动装入Servlet,并初始化。
第二种情况是,没有配置自动装入选项,那么在服务器启动后,当客户端首次向Servlet发出请求时,初始化Servlet。
另外,重新装入Servlet时也会初始化Servlet。
4.简述下列web.xml文件中关于Servlet的元素的含义。
WelcometoTomcat
WelcometoTomcat
FirstSimpleServlet
FirstSimpleServlet
parameter1
Thevalueoftheparameter1
…
答:
此XML文件web-app元素中的Servlet元素包含三个子元素,分别是servlet-name、servlet-class和init-param。
servlet-name元素是你想要用来访问该Servlet的名称,servlet-class元素给出此servlet的class类名,init-param给出初始化参数的名称和值。
5.SingleThreadModel接口的作用是什么?
答:
一般来说,在多个并发线程正在执行的时候,如果有一个新的请求到来,Servlet容器将构造Servlet的一个实例,为每个用户请求建立一个新进程,这意味着,多个线程可能同时访问一些共享数据。
如果要阻止这种多线程的访问,可以使Servlet实现SingleThreadModel接口。
Unit8表单处理
1.解释下列请求头方法的功能:
getCookies()、getHeaderNames()、getMethod()和getProtocol()。
答:
getCookies方法会返回Cookie头的内容,解析后会存放在Cookie对象的数组中;
getHeaderNames方法返回当前请求的所有头的名称的Enumeration。
getMethod方法返回请求方法,通常是GET或者POST;
getProtocol返回HTTP版本号;
2.解释下列Servlet常用的请求头的含义:
Accept、Accept-Language、Content-Length、Host和User-Agent。
答:
Accept头指出浏览器能够处理的MIME模型。
Accept-Language头指出客户端倾向的语言。
如en。
Content-Length头以字节为单位给出POST数据的长度。
Host表明了主机和端口。
User-Agent头表明了发出请求的浏览器的信息。
3.简述下列设置常见HTTP头的方法的功能:
setContentType、setContentLength和addCookie。
答:
setContentType方法用来设置响应头的Content-Type。
setContentLength方法用来设置响应头的Content-Length。
addCookie方法用来将cookie插入Set-Cookie头。
4.HTTP1.1中定义的状态码的主要含义是什么?
答:
HTTP1.1中定义的状态码有以下几种:
Ø100~199:
这一类代码是提示性的,表示初始的请求已经接受,客户应当继续发送请求的其余部分。
Ø200~299:
表示响应成功。
比如200 OK表示一切正常,对GET和POST请求的应答文档会跟在后面。
Ø300~399:
表示重定向。
Ø400~499:
表示客户端错误。
比如:
404 NotFound 表示无法找到指定位置的资源。
Ø500~599:
表示服务器端错误。
Unit9Servlet相关的接口和类
1.简述JavaServletAPI。
答:
JavaServletAPI是一组Java类,它定义了Web客户端和WebServlet之间的标准接口。
客户的请求发给Web应用服务器,Web应用服务器通过这组API接口调用Servlet为这个请求服务。
这组API有两个包组成:
javax.servlet和javax.servlet.http。
Javax.servlet包中所包含的是编写Servlet所需的最基本的类和接口。
这些类是独立于协议的。
Javax.servlet.http包扩展了上述基础包的功能,对http协议提供了特别的支持。
2.ServletConfig接口的用法?
答:
ServletConfig接口用于存取Servlet实例的初始化参数,这些参数以名称/数值对的形式存在ServletConfig中