目录
2.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
6.简述page指令、include指令和taglib指令的作用。
8. 简述out对象、request对象和response对象的作用。
13.Servlet什么情况下调用doGet(),什么情况下调用doPost()。
任务1 请同学们按照刚才演示的创建合同JavaBean的方式,创建合同信息管理功能中的合同JavaBean。
15. 简述<jsp:forward>动作和response.sendRedirect()的异同。
JavaBean可分为两种
一种是有界面的UI的JavaBean
一种是没有界面的UI主要负责处理事务的JavaBean
JavaBean是遵循特殊规范的Java类。按功能分,可以分为可视Bean和不可视两类。
1.可视Bean是在画面上可以显示的Bean,通过属性接口接收数据并显示在画面。
2.不可视Bean即JSP中时常使用的Bean,在程序的内部起作用,如用于求值、存储用户数据等。
2.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
servlet的生命周期分为四个阶段
实例化 初始化 处理请求服务 对象销毁
servlet在第一次被访问就会实例化一个servlet对象然后调用init方法初始化
对象,servlet对象会一直驻留在服务器内部为后续的请求提供服务只要有请求访问servlet用service方法处理请求直到服务器关闭或web项目被移除随着web应用的销毁service也就被销毁在销毁之前会调用destroy方法进行善后处理
Servlet是在服务器端运行的。Servlet是javax.servlet包中HttpServlet类的子类,由服务器完成该子类的创建和初始化。Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。Servlet的生命周期主要由3个过程组成
简述Servlet的生命周期。
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
(1)编程方式不同
Servlet是按照Java规范编写的Java程序,JSP是按照Web规范编写的脚本语言。
(2)编译方式不同
Servlet每次修改后需要重新编译后才能运行,JSP是被JSP Container编译为Servlet文件。
(3)运行速度不同
由于一个JSP页面在第一次被访问时要被编译成Servlet需要一段时间,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。总之,在运行速度上,Serlvet比JSP速度快。
(1)通过HTML标签定义样式表
(2)使用id定义样式表
(3)使用class定义样式表
6.简述page指令、include指令和taglib指令的作用。
include指令
在当前页面用于包含其他页面
page指令
告诉tomacat服务器如何翻译jsp文件
taglib指令
用于在jsp页面中导入标签库
正确答案:
page 指令用来定义JSP文件中的全局属性,它描述了与页面相关的一些信息,其作用域为它所在JSP页面和其包含的文件。
include指令用于在JSP编译时,为页面插入一个静态文件,如JSP页面、HTML页面、文本文件或是一段Java程序。
taglib指令用来指定页面中使用的标签库以及其自定义标签的前缀
model1:jsp页面独自响应请求并将处理结果返回客户,这里里面使用了表达与内容的分离,其中数据存取都是由bean来完成的。
model2: MVC标注模式,JSP用于view展示,Servlet用于control,M代表业务领域模型层
正确答案:
JSP规范中分别称作JSP Model 1 和JSP Model 2,它们的本质区别在于处理批量请求的位置不同。Model1,在Model1体系中,JSP页面独自响应请求并将处理结果返回客户。这里仍然存在显示与内容的分离,因为所有的数据存取都是由JavaBean来完成的。尽管Model1体系十分适合简单应用的需要,它却不能满足复杂的大型Web应用程序需要。不加选择地随意运用Model 1,会导致JSP页内被嵌入大量的脚本片段或Java代码。尽管这对于Java程序员来说可能不是什么大问题,但如果JSP页面是由网页设计人员开发并维护的这就确实是个问题了。从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。Model2体系结构,是一种把JSP与Servlet联合使用来实现动态内容服务的方法。它吸取了两种技术各自的优点,用JSP生成表示层的内容,让Servlet完成深层次的处理任务。Servlet充当控制者的角色,负责管理对请求的处理,创建JSP页面需要使用的Bean和对象,同时根据用户的动作决定把哪个JSP页面传给请求者。在JSP页面内没有处理逻辑,它仅负责检索原先由Servlet创建的对象或JavaBean,从Servlet中提取动态内容插入静态模板。分离了显示和内容,明确了角色的定义以及实现了开发者与网页设计者的分开。项目越复杂,使用Model 2体系结构的优势就越突出。
8.简述out对象、request对象和response对象的作用。
“request对象主要用于处理客户端请求。当浏览器请求一个网页,会发送大量信息到web服务器,这些信息不能直接读取,因为信息是作为HTTP请求头的一部分传输到服务器的,但是可以通过request对象提供的方法来获取客户端提交给服务器的信息。”
Request对象里面包含了所有你访问时发起的请求的所有参数,Response对象则包含了你请求之后服务器给你的所有的响应信息。通过这两个参数你可以获得很多HTTP访问中的参数信息。
request 请求对象Response 响应对象· Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的<FORM>段中的HTML控件的值。也提供使用Secure Socket Layer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。
正确答案:
out对象主要用来向客户输出各种数据类型的内容,并管理应用服务器上的输出缓冲区(buffer);request内置对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据;response对象包含了响应客户请求的有关信息,封装了JSP产生的响应,然后被发送到客户端以响应客户的请求。
JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
正确答案:
其中常用的动作有6种:<jsp:param>、<jsp:include>、<jsp:useBean>、 <jsp:setProperty> 、<jsp:getProperty>、<jsp:forward>。<jsp:param>动作可以用于<jsp:include>、< jsp:forward>和<jsp:plugin>动作体中,为其它动作提供附加信息;<jsp:include>动作用来把指定文件插入正在生成的页面中;<jsp:useBean>动作用来装载在JSP页面中使用的JavaBean。这个功能非常有用,能够实现JavaBean组件的重用;<jsp: setProperty>动作用来设置、修改已实例化Bean中的属性值;<jsp:getProperty>动作获取指定Bean属性的值,转换成字符串,然后输出;<jsp:forward>动作用于转发客户端请求到另一个页面或者是另一个Servlet文件。
10页面间对象传递的方法。
传递方法有:page,request,session,application,其中cookie是保存在客户端的,是用来解决HTTP无状态问题。
Cookie对象变量,cookie是保存在客户端的,是用来解决HTTP无状态问题。
Cookie对象变量和session一样,他们不同的是,session是存在服务器端,而cookie是存放在客户端的。
Application对象的作用范围是整个全局,他对所有用户都有效,session和cookie是对一个用户而言,所以我们可以用它统计登陆该网站的人数。Application变量不会自己消亡,会始终占据内存,创建过多的变量会降低响应速度,只有在服务被中止、Global.asa被改变或者该Application被卸载下才会被终止。
QuerySting在页面间传递值。这种方法的写法:在要传递值的页面,Response.Redirect(url),值包含在在url中。接收值得页面,Request.QueryString[“变量名”]。
正确答案:
request,session,application,cookie等
1.资源重用 由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性。
2.更快的系统反应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于连接池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而减少…
3.新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接池的配置,实现某一应用最大可用数据库连接数的限制,避免某一应用独占所有的数据库资源。
4.统一的连接管理,避免数据库连接泄漏 在较为完善的数据库连接池实现中,可根据预先的占用超时设定,强制回收被占用连接,从而避免了常规数据库连接操作中可能出现的资源泄露。
正确答案:
数据库连接池的基本思想就是为数据库连接建立一个”存储池”。数据库建立初期,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从”连接池”中申请一个,使用完毕之后再将该连接作为公共资源保存在”连接池”中,以供其他连接申请使用。在这种情况下,当需要连接时,就不用再需要重新建立连接,这样就在很大程度上提高了数据库连接处理的速度;同时,还可以通过设定连接池最大连接数来防止系统无控制的与数据库连接;更为重要的是可以通过连接池管理机制监视数据库的连接的数量以及各连接的使用情况,为系统开发﹑测试及性能调整提供依据。
(1)嵌入式样式表
(2)内联式样式表
(3)外联式样式表
13.Servlet什么情况下调用doGet(),什么情况下调用doPost()。
调用doGet():直接地址栏输入URL,或者超链接,或者form的method为默认或get。
调用doPost():Form的method为post时。
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
JDBC是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库。JDBC也是Java核心类库的一部分,由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、Java Web开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。主要实现:
(1)同一个数据库建立连接;
(2)向数据库发送SQL语句;
(3)处理数据库返回的结果。
15简述<jsp:forward>动作和response.sendRedirect()的异同。
1.<jsp:forward>属于服务器端跳转,response.sendRedirect()属于客户端跳转。
正确答案:
使用sendRedirect()方法,即向服务器发送一个重新定向的请求。当用它转到另外一个面页时,等于重新发出了一个请求,所以在原来页面的request参数转到新页面之后就失效了,因为它们的request不同。
该方法同使用<jsp:forward>的不同在于,使用<jsp:forward>,在转到新的页面后,原来页面的request参数是可用的。同时,使用<jsp:forward>,在转到新的页面后,新页面的地址不会在地址栏中显示出来。而使用sendRedirect方法,重定向后在浏览器地址栏上会出现重定向后页面的URL。
“Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容
正确答案:
Servlet是Java Web应用程序中的组件技术,是与JSP—样运行在服务器端的Java应用程序,实现与JSP类似的功能,Servlet本身是一个Java类,可以动态地扩展服务器的能力。所有的JSP文件要事先转换为一个Servlet才能运行,执行JSP文件的时候,首先JSP Container会将其转译为Servlet文件,并自动编译解释执行。JSP中使用到的所有对象都将被转换为Servlet,然后被执行。
1.客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。
2.服务器根据接收到的客户端的请求来加载相应的JSP文件。
3.Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet。
4.JSP引擎将生成的Servlet代码编译成Class文件。
正确答案:
所有的JSP应用程序在首次载入时都被翻译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成以下操作:
1. 将JSP文件翻译成Servlet文件,Servlet文件是Java应用程序。
2.JSP引擎调用Java编译器,编译Servlet文件得到可执行的代码文件(.class文件)。
3.JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器。
4. 服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。
由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。
1.第一种注释:
<!–注释内容–>
这是HTML/XML的原版注释,会老老实实的发到客户端的,有什么见不得人的就别用这个写了
2.第二种注释:
<%–注释内容–%>
有<% %>的东西都是写给JSP应用服务器看的,不会发到客户端的。编译器将其置之不理,html也无缘与其相见,被应用服务器打入冷宫了。这个注释感觉比较多余,不知道专门又搞一个这种注释干什么。
3.第三种注释:
<%
//当行注释
/**
多行注释
*/
%>
正确答案:
隐藏注释也是JSP的标准注释,写在JSP程序中,在发布网页时完全被忽略,不发给客户,当希望隐藏JSP程序的注释时是很有用的,其格式为:<%– comment –%>。
HTML注释,在发布网页时可以在浏览器源文件窗口中看到HTML注释,其格式为:<!– comment [ <%= expression %> ] –>。
在JSP程序中,也遵循Java语言本身的注释规则对代码进行注释,这样的注释和隐藏注释相似,在发布网页时完全忽略,在浏览器的源文件窗口中也看不到注释内容,其格式为:<%/*comment*/%>。
1.方便:Servlet提供了大量实用工具例程,如处理很难完成的html表单数据,读取和设置http头,处理Cookie和跟踪会话等;
2.跨平台:Servlet用Java类来编写,可以在不同操作系统平台下运行;
3.灵活性和可扩展性:采用Servlet开发的Web应用程序,由于Java类的继承性及构造方法等特点,使得应用灵活,可随意扩展;
4.功能强大,可在各个数据之间共享数据,安全性强。
正确答案:
(1)Servlet在服务器端的作用
在浏览器访问服务器时,所有的JSP文件都会转化为Servlet文件,Servlet文件负责在服务器端处理用户的数据。这部分功能在开发服务器时已经封装成底层的功能,我们可不用关心这部分功能,除非自己在开发一个服务器时才用到。
(2)Servlet在MVC设计模式中应用
MVC是一种目前广泛流行的软件设计模式,早在70年代,IBM就进行了MVC设计模式的研究。近来,随着JavaEE的成熟,它成为在JavaEE平台上推荐的一种设计模型,是广大Java开发者非常感兴趣的设计模型。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论选择哪种语言,无论应用多复杂,它都能为理解分析应用模型提供最基本的分析方法,为构造产品提供清晰的设计框架,为软件工程提供规范的依据。MVC 设计模式是目前用得比较多的一种设计模式,被广泛应用于Web 应用程序中。Model(模型)表示业务逻辑层,View(视图)代表表示层,Controller(控制器)代表控制层。其中,控制器部分由Servlet完成,这也是我们实际在项目开发中用到的Servlet。
(3)Servlet在Web框架中的应用
在Java Web项目开发中用到的主要组件技术有JSP、Servlet、JavaBean、JDBC、XML、Tomcat等技术。为了整合Java Web组件技术提高软件开发效率,近年来推出许多基于MVC模式的Web框架技术,如Struts、Maverick、WebWork 和Turbine 等。其中比较经典的框架技术是Struts。
在Struts框架技术中,实现了MVC模式,其中已封装好核心控制器,由Servlet实现;我们还需要实现Action来完成对数据流量的控制,Action在Struts1.X版本中由Servlet实现控制功能,在Struts2.X版本中Action是业务控制器,由Java类来实现。有关Servlet在Struts中的应用请参考Struts相关资料。
1.JSP的运行原理 当JSP页面被运行时,WEB容器会把请求交给JSP引擎处理,会将JSP翻译成一个_jspServlet,然后按照Servlet的调用方式来进行调用, 浏览器向服务器发请求,不管访问的是什么资源,其实都是…
2. Tomcat Tomcat在Web中的作用: Tomcat是Web中的容器, 当客户在Web服务器中输入请求的时候, 如果请求的动态页面, 那么Web服务器会创建一个Servlet来处理, Servlet就是Java代码…
正确答案:
JSP开发Web站点的主要方式有:
(1)直接使用JSP
(2)JSP+JavaBean
(3)JSP+JavaBean+Servlet
(4)J2EE/JavaEE开发模型
(5)SSH开发框架
1.方便 Servlet 提供了大量的实用工具例程,如处理很难完成的 HTML 表单数据、读取和设置 HTTP 头,以及处理 Cookie 和跟踪会话等。
2.跨平台 Servlet 使用 Java 类编写,可以在不同的操作系统平台和不同的应用服务器平台运行。
3.灵活性和可扩展性强 采用Servlet 开发的 Web 应用程序,由于 Java 类的继承性及构造函数等特点,使得应用灵活,可随意扩展。
正确答案:
(1)有效性
(2)方便性
(3)功能强大性
(4)可移植性
(5)安全性
(6)便宜
1.传递方法有:page,request,session,application,其中cookie是保存在客户端的,是用来解决HTTP无状态问题。
2.Cookie对象变量,cookie是保存在客户端的,是用来解决HTTP无状态问题。
3.Cookie对象变量和session一样,他们不同的是,session是存在服务器端,而cookie是存放在客户端的。
4.Application对象的作用范围是整个全局,他对所有用户都有效,session和cookie是对一个用户而言,所以我们可以用它统计登陆该网站的人数。Application变量不会自己消亡,会始终占据内存,创建过多的变…
正确答案:
request,session,application,cookie等
任务1 请同学们按照刚才演示的创建合同JavaBean的方式,创建合同信息管理功能中的合同JavaBean。
package entity;
public class Contact {
private String contactId;
private String clientName;
private String contactName;
private String contactContents;
private String contactStart;
private String contacEnd;
private String staffName;
public Contact(){}
public String getContactId() {
return contactId;
}
public void setContactId(String contactId) {
this.contactId = contactId;
}
public String getClientName() {
return clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
public String getContactContents() {
return contactContents;
}
public void setContactContents(String contactContents) {
this.contactContents = contactContents;
}
public String getContactStart() {
return contactStart;
}
public void setContactStart(String contactStart) {
this.contactStart = contactStart;
}
public String getContacEnd() {
return contacEnd;
}
public void setContacEnd(String contacEnd) {
this.contacEnd = contacEnd;
}
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
}
最新评论