1-2 JSP中可重复使用的组件有哪些?JavaBean/JSP标准标签/自定义标签1-3 什么是JSP的预编译特征?答:JSP页面在被服务器执行前,都是已经被编译好的,并且通常只进行一次编译,即在JSP 页面被第一次请求时进行编译,在后续的请求中如果JSP页面没有被修改过,服务器只需要直接调用这些已经被编译好的代码,这大大提高了访问速度。
1-8 开发JSP程序可采用哪几种开发模式?分别介绍他们的优缺点。
答:第一种:单纯的JSP页面编程优点是容易实现;缺点是程序结构混乱,维护不便。
第二种:JSP+JavaBean编程优点是结构比较清晰;缺点是将流程控制放到JSP中,JSP不能单纯作为显示功能第三种:JSP+JavaBean+Servlet编程优点是层次关系明显、组件分工明确;缺点是对开发人员能力要求较高,不适合JSP初学者。
2-2 什么是成员变量和局部变量?他们的区别是什么答:成员变量是在类体中变量定义部分所声明的变量;局部变量是在方法体重声明的变量和方法的参数两者的区别在于有效范围不同,成员变量在整个类内都有效,而局部变量只在定义他的成员方法内才有效。
2-3 如何创建、使用并销毁对象?答:创建对象的方法:类名对象名;对象名 = new 构造方法名([参数列表]);或者:类名对象名 = new 构造方法名([参数列表]);使用对象的方法:可以通过对象来引用其成员变量,并改变成员变量的值,而且还可以通过对象来调用其成员方法。
通过使用运算符“.”实现对成员变量的访问和成员方法的调用。
销毁对象的操作由Java提供的垃圾回收机制自动完成。
不需要手工完成销毁对象操作。
或者调用对象的finalize()方法。
3-1 JSP页面由哪些元素组成?<!-- JSP中的指令标识 --><%@ page language="java" contentType="text/html; charset=gb2312”%><%@ page import="java.util.Date" %><!-- HTML标记语言 --><html><head><title>JSP页面的基本构成</title></head><body><center><!-- 嵌入的Java代码 --><% String today=new Date().toLocaleString(); %><!-- JSP表达式 -->今天是:<%=today%><!-- HTML标记语言 --></center></body></html><%@ page contentType="text/html;charset=gbk" %>include 指令用于在当前的JSP 页面中使用该指令的位置嵌入其他的文件,如果被包含的文件中有可执行的代码,则显示代码执行后的结果。
<%@ include file="文件的绝对路径或相对路径" %>通过使用taglib 指令,开发者就可以在页面中使用标准标签或自定义标签来完成特殊的功能。
<%@ taglib {uri="URI" | tagdir="/WEB-INF/tags[/subdir]+"} prefix="tagPrefix" %> <%@taglib prefix="mytagf" tagdir="/WEB-INF/tags"%>3-6 有几种方法可实现在页面中来包含文件?如何实现?它们有什么区别?include 动作标识与include 指令之间的差异。
差异1:属性不同include 指令——通过file 属性指定被包含的页面,将file 值看作一个实际存在的文件的路径,不支持任何表达式。
include 动作——通过page 属性指定被包含的页面,该属性支持JSP 表达式。
JSP 语法总结JSP 构成 注释 指令 动作 脚本 HTML 注释: <!-- 注释 -->隐藏注释: <%-- --%>page : <%@page import=......%> include : <%@include file=......%> include : <jsp:include page=……/>forward : <jsp:forward page=……/>声明:<%! ......%>表达式:<%= ......%>脚本程序:<% ......%>taglib : <%@taglib uri=......%> Html带有JSP 表达式的注释: <!--注释<%=expression %>-->脚本程序中的注释: //、/* */、/** */useBean : <jsp:useBean name=……/>setProperty : <jsp:setProperty id=……/>getProperty : <jsp:getProperty id=……/>plugin : <jsp:plugin type=……/>fallback : <jsp:fallback/>差异2.处理方式不同include指令——被包含的文件的内容原封不动地插入到主页面中,JSP编译器对这个合成的文件进行翻译。
在一个JSP页面包含另外一个JSP页面,最终编译后的class文件只有一个。
include动作——主页面将请求转发到被包含的页面,并将执行结果输出到浏览器中,然后返回主页面继续执行后面的代码。
JSP编译器会分别对这两个文件进行编译。
差异3.包含方式不同include指令——静态包含。
被包含的文件发生改变,整个主页面文件就会重新被编译,最终服务器执行的是将两个文件合成后由JSP编译器编译成的一个class文件。
include动作——动态包含。
服务器执行的是两个文件,被包含文件的改动后不会对主页面文件重新编译,而只需重新编译被包含的文件。
当include动作标识被执行时,使用该识包含的目标文件才会被编译,否则被包含的文件不会被编译。
差异4.对被包含文件的约定不同使用include指令包含文件时,对被包含文件有约定。
主文件和包含文件的page 指令不应重复。
●4-5 如果用户长时间不操作session对象,用户的session对象会消失吗?为了弥补HTTP协议的“无状态”的这一缺点,JSP提供了一个session对象,这样服务器和客户端之间的连接就会一直保持下去,在一定时间内(系统默认在30分钟内),如果客户端不向服务器发出应答请求,session对象就会自动消失。
在编写程序时,可以修改这个时间限定值,使session对象在特定时间内保存信息。
●4-6 用户关闭浏览器后,用户的session会立即消失吗?从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
可以利用此特性来保存每个用户信息,当一个客户登录一个网站时,系统将为用户生成一个独一无二的会话对象,用以记录该用户的个人信息,一旦该用户退出网站,该会话对象将会被注销。
●4-8 session对象与application对象的区别有哪些?session对象和用户会话相关,不同用户的session是完全不同的对象;application对象都是相同的一个对象,即共享这个内置的application对象。
一、填空(共10分,每空1分)2. 在Tomcat服务器中部署Web应用程序时,可以直接将Web程序归档文件W AR存放到tomcat服务的_ webapps _目录中。
3. 在Servlet中用来接收客户表单数据的两个常用方法为__get __、__post____。
4. 在一个应用程序中不同的页面共享数据时,最好的JSP内置对象为__application /session __。
5. 假设有一个JavaScript函数为show() ,如果要求在页面加载时就执行,最好使用<body>标记的__event/onload _什么事件。
6. 在删除数据时要求用户确认是否真的删除数据,如果使用JavaScript实现,应用使用___onclick/confirm __对话框。
7. JDBC中___DriverManager/Connection _接口用于连接数据库。
8. Resulset接口的__next()/request _方法可以使结果集指针指向下行数据。
9. 如果要获取请求客户端的IP地址,应使用______象。
二、单选选择(60分,每题1.5分)1.在JSP中如果要导入java.io.* 包,应该使用__A__指令。
A. pageB. taglibC. includeD. forward2.如果当前JSP页面出现异常时需要转到一个异常页,需要设置page 指令的__D__属性A. Exception B. isErrorPage C. error D. errorPage3.在MVC模式中,核心内容为___C___。
A. viewB. controlC. modelD. 不确证4.在javaScrpt中window对象的___C___方法用于打开一个新窗口。
A. openWindow()B. window()C. open()D. close()5.在javaScrpt中window对象的___D____方法用于关闭当前窗口。
A. open()B. confirm()C. alert()D. close()6.java.io.File对象的_____B__方法可以新建一个文件。
A. delete()B. createFile()C. mkdir()D. createNewFile()7.在JSP应用程序中要求删除所有photo目录中的的文件,但是保留文件夹,下列代码中空缺位置最适合的选项为______A_____________。
String path=request.getRealPath("photo");File fp1=new File(path);File[] files=fp1.listFiles();for(int i=0;i<files.length;i++){if(__________________________){files[i].delete();}}A. files[i].isFile()B. files[i].isDirectory()C. !files[i].isFile()D. ! files[i].isDirectory() 8.sesson对象的_______D___方法用于判断是否为开始新会话。