文档库 最新最全的文档下载
当前位置:文档库 › JSP复习题-简答

JSP复习题-简答

JSP复习题-简答
JSP复习题-简答

1-1 JSP的全称是什么?JSP有什么优点?JSP与ASP、PHP的相同点是什么?答:全称Java Server Page优点:继承了Java 技术的简单、便利、面向对象,跨平台和安全可靠等优点,在JSP中利用了。JavaBean和JSP元素,可以有效的将静态的HTML代码和动态数据区分开来,给程序的修改和扩展带来了很大方便;与其他动态网页技术相同点,通过在页面中加入脚本代码来生成动态内容。1-2 JSP中可重复使用的组件有哪些?JavaBean/JSP标准标签/自定义标签1-3 什么是JSP的预编译特征?答:JSP页面在被服务器执行前,都是已经被编译好的,并且通常只进行一次编译,即在JSP页面被第一次请求时进行编译,在后续的请求中如果JSP页面没有被修改过,服务器只需要直接调用这些已经被编译好的代码,这大大提高了访问速度。1-4 开发JSP程序需要具备哪些开发环境?答:Web浏览器/Web服务器/JDK/数据库1-7 本章介绍的用来开发JSP程序的开发工具是什么?答:Eclipse+MyEclipse2-1 什么是类?如何定义类?类的成员一般由哪两部分组成?这两部分的区别是什么?答:类是用来创建对象的模板,它包含被创建的对象的状态描述和方法的定义。定义类的格式:[修饰符] class <类名> [extends 父类名] [implements 接口列表]{定义成员变量定义成员方法}类的成员由成员变量和成员方法组成,成员变量用来表示类的状态和属性,成员方法表示类的行为。2-2 什么是成员变量和局部变量?他们的区别是什么答:成员变量是在类体中变量定义部分所声明的变量;局部变量是在方法体重声明的变量和方法的参数两者的区别在于有效范围不同,成员变量在整个类内都有效,而局部变量只在定义他的成员方法内才有效。2-3 如何创建、使用并销毁对象?答:创建对象的方法:类名对象名; 对象名= new 构造方法名([参数列表]);或者:类名对象名= new 构造方法名([参数列表]);使用对象的方法:可以通过对象来引用其成员变量,并改变成员变量的值,而且还可以通过对象来调用其成员方法。通过使用运“.”实现对成员变量的访问和成员方法的调用。销毁对象的操作由Java提供的垃圾回收机制自动完成。不需要手工完成销毁对象操作。或者调用对象的finalize()方法。2-4 构造方法的概念及用途是什么?答:构造方法是一种特殊的方法,它的名字必须与它所在类的名字完全相同,并且没有返回值,也不需要使用关键字void进行标识。构造方法用于对对象中的所有成员变量进行初始化,在创建对象时立即被调用。2-6 在Java语言中,处理异常的语句有哪4种?答try …catch、finally 、throw、throws2-7 在JSP中引入JavaScript的方法有哪些?方法1.在页面中直接嵌入JavaScript方法2.链接外部JavaScript2-9 在JavaScript中如何定义并调用函数?function functionName([parameter1, parameter2,…]){statements[return expression] }如果要调用不带参数的函数,则使用函数名加上括号即可;如果要调用的函数带参数,则在括号中加上需要传递的参数,如果包含多个参数,各参数间用逗号分隔。如果函数有返回值,那么可以使用赋值语句将函数值赋给一个变量。3-1 JSP页面由哪些元素组成?<%@ page language="java" contentType="text/html; charset=gb2312”%><%@ page import="java.util.Date" %> JSP页面的基本构成

<% String today=new Date().toLocaleString(); %>今天是:<%=today%>
3-2 JSP中主要包含哪几种指令标识?它们的作用及语法格式是什么?page指令定义在整个JSP 页面范围内有效的属性。<%@ 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-3 JSP中的脚本标识包含哪些元素?它们的作用及语法格式是什么?声明(Declaration)表达式(Expression)脚本程序(Scriptlet)<%! 声明变量或方法的代码%>在页面中通过声明标识声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换为Java类后类成员变量和成员方法。并且它们会被多个线程即多个用户共享,其中的任何一个线程对声明的变量或方法的修改都会改变它们原来的状态。它们的生命周期从创建到服务器关闭后结束。表达式用于向页面中输出信息。<%= 变量或可以返回值的方法或Java表达式%>(1)向页面输出内容:<% String name="quchch"; %>用户名:<%=name%>(2)生成动态的链接地址:<% String path="welcome.jsp"; %>链接到welcom.jsp(3)动态指定Form表单处理页面:<% String name="logon.jsp";%>
(4)为通过循环语句生成的元素命名:<% for(int i=1;i<3;i++){ %> >:">
<% } %>在脚本程序中可以定义变量、调用方法和进行各种表达式运算。在脚本

程序中定义的变量在当前的整个页面内都有效,当前用户对该变量的操作不会影响到其他的用户。当变量所在的页面关闭后就会被销毁。<% Java程序片段%>注意:在声明中声明变量与在脚本标识中声明变量不同,前者是全局后者是局部3-4 在JSP中可以使用哪些释?它们的语法格式是什么?HTML中的注释带有JSP 表达式的隐藏注释<%-- 注释内容--%>脚本程序(Scriptlet)中

A 3-1 完成下面代码的空白部分。

<%@page import="java.util.*"%>

<%! Date theDate = new Date();

Date getDate(){

System.out.println("In getDate() method");

_______return theDate___________; }

%>

Hello! The time is now____<%=getDate()%>___

A 3-2 完成下面代码的空白部分。

<%@page contentType=“_text/html;charset=gbk___"%>

使用数组显示

<%

__int__ a[ ]={13,27,21,17,39};

for(int i=0;i<=4;i++){

out.print("第"+i+"个元素");

out.print("

");}

A3-3 完成下面代码的空白部分(输出156)

<%!

int caculate(int x,int n)

{int value = 0;

if(n >= 1)

{int a = 1;

for(int i=1;i<=n;i++)

a = a*x;

n = n - 1;

value = a + _____caculate(x,n)____;

}else

value = value + 1;

_______return value______;}%>

<%=caculate(5,3)%>

4-2 当表单提交信息中包括汉字时,在获取时应该做怎样的处理?当request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可。4-3如何实现禁用缓存功能?技巧:通过设置HTTP头可实现禁用缓存功能注意:下面的代码必须在没有任何输出发送到客户端之前使用response.setHeader("Cache-Control","no-store"); response.setDateHeader("Expires",0);4-5 如果用户长时间不操作session对象,用户的session对象会消失吗?为了弥补HTTP协议的“无状态”的这一缺点,JSP提供了一个session对象,这样服务器和客户端之间的连接就会一直保持下去,在一定时间内(系统默认在30分钟内),如果客户端不向服务器发出应答请求,session对象就会自动消失。在编写程序时,可以修改这个时间限定值,使session对象在特定时间内保存信息。4-6用户关闭浏览器后,用户的session会立即消失吗?从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。可以利用此特性来保存每个用户信息,当一个客户登录一个网站时,系统将为用户生成一个独一无二的会话对象,用以记录该用户的个人信息,一旦该用户退出网站,该会话对象将会被注销。4-8 session对象与application对象的区别有哪些?session对象和用户会话相关,不同用户的session是完全不同的对象;application 对象都是相同的一个对象,即共享这个内置的application对象。A4-5 分别阐述session及application的生命周期。session:从用户打开浏览器窗口连接到网站上的一个页面开始,到用户关闭所有与这个网站连接窗口为止。每个用户单独

一个该对象;application:从Web服务期启动开始,到Web服务器停止为止。所有用户共享该对象。A4-7要获得一个文本框表单控件传递的值,可以使用requeset对象的___getparameter()___法,要获得一组复选框表单控件传递的值,需要使用__ getparametervalues()__方法。5-1 什么是JavaBean?使用JavaBean的优点是什么?JavaBean组件就是利用Java 语言编写的组件,它好比一个封装好的容器,使用者并不知道其内部是如何构造的,但它却具有适应用户要求的功能,每个JavaBean都实现了一个特定的功能,通过合理地组织不同功能的JavaBean,可以快速生成一个全新的应用程序。JSP较其他同类语言最强有力的方面就是能够使用JavaBean组件1.一次性编写:JavaBean组件重用时不需要重新编写,只需要根据需求修改和升级代码即可2.任何地方执:JavaBean组件可以在任何平台上运行,可以轻易移植到各种运行平台上。3.任何地方重用:JavaBean组件能够被在多种方案中使用,包括应用程序、其他组件、Web应用等。5-3 在JSP 中一个标准的JavaBean需要具备哪些条件?通常一个标准的JavaBean需遵循以下规范:【1】实现java.io.Serializable 接口;【2】是一个公共类;【3】类中必须存在一个无参数的构造函数;【4】提供对应的setXxx()和getXxx()方法来存取类中的属性,方法中的“Xxx”为属性名称,属性的第一个字母应大写。若属性为布尔类型,则可使用isXxx()方法代替getXxx()方法。5-4 分别介绍值JavaBean与工具JavaBean的作用。值JavaBean严格遵循了JavaBean的命名规范,通常用来封装表单数据,作为信息的容器。工具JavaBean可以不遵循JavaBean规范,通常用于封装业务逻辑,数据操作等,例如连接数据库,对数据库进行增、删、改、查和解决中文乱码等操作。工具JavaBean可以实现业务逻辑与页面显示的分离,提高了代码的可读性与易维护性。本例中的JavaBean就是一个工具JavaBean,它用来转换字符串中的“<”与“>”字符。A5-5 为什么JavaBean必须遵守特定的规范,比如对于CounterBean 的count属性,必须提供getCount()和setCount()方法,而不能随心所欲的定义为getCOunt()、insertcount()等等其他名字?实现java.io.Serializable接口的类实例化的对象被JVM转化为一个字节序列,并且能够将这个字节序列完全恢复为原来的对象,序列化机制可以弥补网络传输中不同操作系统的差异问题。作为JavaBean,必须进行对象的序列化。使用一个JavaBean时,一般情况下是在设计阶段对它的状态信息进行配置,并在程序启动后期恢复,这种具体工作是由序列化完成的。6-1 什么是servlet?Servlet的技术特点是什么?Servlet与JSP有什么区别?技术简介是一种独立于平台和协议的服务器端的Java技术,可以用来生成动态的Web页面。是遵循Servlet API规范的Java程序。Java 语言能够实现的功能,Servlet基本上都能实现。

主要用于处理客户端传来的Http请求,并返回一个响应。直接继承javax.servlet.http.HttpServlet。

需要在web.xml中进行描述,例如,映射执行Servlet的名字,配置Servlet类、初始化参数,进行安全配置、URL 映射和设置启动的优先权等。6-2 创建一个Servlet通常分为哪几个步骤?继承HttpServlet抽象类。public class xxx extends HttpServlet{覆盖HttpServlet的部分方法,如覆盖service()或doGet()或doPost()方法重载。如果有HTTP 请求信息的话,获取该信息。可通过调用HttpServletRequest类对象的以下方法获取:getParameterNames()//获取请求中所有参数的名字getParameter()//获取请求中指定参数的值getParameterValues()//获取请求中所有参数的值生成HTTP响应。HttpServletResponse类对象生成响应,并将它返回到发出请求的客户机上。

编译servlet。javac -classpath .;servlet-api.jar x.java7-1 JSPSmartUpload、Java Mail、JFreeChart和iText组件的作用是什么?jspSmartUpload组件-上传&下载;JavaMail组件-Email发送接收;jFreeChart组件-图表;iText组件-PDF读写;jExcel组件-Excel读写7-2 怎么解决在实现文件下载时抛出getOutputStream() has already been called for this response异常的情况?下载文件原理:JSP内置对象response调用方法getOutputStream()可以获取一个指向客户输出流,服务器将文件写入这个流,客户就可以下载这个文件了。当JSP页面提供下载功能时,应当使用response 对象向客户发送HTTP头信息,说明文件的MIME类型,这样浏览器就会调用相应的外部程序打开下载的文件。7-3 在使用JFreeChart组件时,需要进行哪些准备工作?利用JFreeChart组件生成动态统计图表的基本步骤:(1)创建绘图数据集合;(2)创建JFreeChart实例;(3)自定义图表绘制属性,该步可选;(4)生成指定格式的图片,并返回图片名称;(5)组织图片浏览路径;(6)通过HTML中的标记显示图片。7-4 在使用iText组件时,如何将PDF文档设定成B5页面大小?利用iText组件生成PDF的基本步骤:(1)建立com.lowagie.text.Document对象的实例;Document document = new Document(); (2)建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中;PdfWriter.getInstance(document, new ("a.pdf")); (3)打开文档;document.open(); (4)向文档中添加内容;document.add(new Paragraph("Hello World")); (5)关闭文档;document.close();

8-1 在Windows2003Server操作系统中,通过JDBC连接SQL Server2000数据库需要进行什么操作?下载jar包,放在WEB-INF 下,ab夹下,使用JDBC-ODBC桥,创建数据源/直接连接数据。8-3 写出SQL Server2000数据库的驱动及连接本地机器上的数据库db_database的URL地址。String driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver";String url ="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=db_database08";8-4 执行动态SQL语句的接口是什么?通过Statement接口的executeUpdate()或executeQuery()方法,可以执行SQL语句,同时将返回执行结果。Prepared Statement8-5 Statement实例又可以分为哪3种类型?功能分别是什么?(1)Statement状态集:能用来执行静态的SQL 语句;(2)PreparedStatement预编译状态集:增加了执行动态SQL语句的功能;(3)CallableStatement存储过程状态集:增加了执行数据库存储过程的功能。8-6 JDBC中提供的两种实现数据查询的方法是什么?如果执行的是executeUpdate()方法,将返回一个int型数值,代表影响数据库记录的条数,即插入、修改或删除记录的条数;

如果执行的是executeQuery()方法,将返回一个ResultSet型的结果集,其中不仅包含所有满足查询条件的记录还包含相应数据表的相关信息,例如,列的名称、类型和列的数量等。8-7 简述数据库连接池的优缺点。使用连接池的优点:(1)节省时间:创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程,而采用数据库连接池后,数据库连接请求则可以直接通过连接池满足,而不需要为该请求重新连接、认证到数据库服务器,从而节省了时间;(2)提高了数据库连接的重复使用率;(3)解决了数据库对连接数量的限制。使用连接池的缺点:(1)连接池中可能存在多个与数据库保持连接但未被使用的连接,在一定程度上浪费了资源(2)要求开发人员和使用者准确估算系统需要提供的最大数据库连接的数量。

A8-2请为下面的代码片段增加注释

// ①(1)加载JDBC驱动程序

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// ②(2)创建Connection对象的实例

Connection conn = DriverManager.getConnection("jdbc:odbc:db","","");

// ③(3)创建状态集

Statement stmt = conn.createStatement();

// ④(4)执行SQL语句

ResultSet rs = stmt.executeQuery("select * from tabs");

// ⑤(5)获得查询结果

while(rs.next()){

System.out.println(rs.getString(1));

}rs.close();stmt.close();conn.close();

1.JDBC-ODBC Bridge通过本地的ODBC Driver连接到RDBMS上。这种连接方式必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上,因此,这种类型的驱动程序最适合于企业网,或者是利用Java编写的3层结构的应用程序服务器代码。2.JDBC-Native API Bridge

通过调用本地的程序实现数据库连接,这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其他DBMS的调用。需要注意的是,和JDBC-ODBC Bridge驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。3.JDBC-middleware是一种完全利用Java编写的JDBC驱动,将JDBC转换为与DBMS无关的网络协议,然后将这种协议通过网络服务器转换为DBMS协议,这种网络服务器中间件能够将纯Java客户机连接到多种不同的数据库上,使用的具体协议取决于提供者。通常情况下,这是最为灵活的JDBC驱动程序,有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。4.Pure JDBC Driver是一种完全利用Java编写的JDBC驱动,这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,而且主流的数据库目前基本都提供了针对自身数据库的这种驱动。A8-7 为什么传统的JDBC连接方式在连接过于频繁的情况下会造成数据库的不稳定?传统没有使用连接池,连接没有上下限控制连接数据库占用资源较高

补充程序

Xample5_2.jsp

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page import="java.sql.*" %>

<% Connection con;

Statement sql;

ResultSet rs;

try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }

catch(ClassNotFoundException e){}

try {con=DriverManager.getConnection("jdbc:odbc:sun","sa","");

sql=con.createStatement();

rs=sql.executeQuery("SELECT * FROM students WHERE 英语成绩>= 80 ");

out.print("

");

out.print("

");

out.print("

");

while(rs.next())

out.print("

");

out.print("

");

out.print("

") ; }out.print("
"+"姓名");

out.print("

"+"英语成绩");

out.print("

"+rs.getString(2)+""+rs.getInt("英语成绩")+"
");

con.close();}

catch(SQLException e1) {}%>

Xample5_1.jsp

<%@ page contentType="text/html;charset=GB2312" %>

<%@ page import="java.sql.*" %>

<% Connection con;

Statement sql;

ResultSet rs;

try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }

catch(ClassNotFoundException e){}

try { con=DriverManager.getConnection("jdbc:odbc:sun","sa",""); sql=con.createStatement();

rs=sql.executeQuery("SELECT * FROM students");

out.print("

");

out.print("

");

out.print("

");

while(rs.next())

{ out.print("

");

out.print("

");

out.print("

");

out.print("

");

out.print("

");

out.print("

");

out.print("

") ; }

out.print("

"+"学号");

out.print("

"+"数学成绩");

out.print("

"+"英语成绩");

out.print("

"+"物理成绩");

out.print("

"+rs.getString(1)+""+rs.getString(2)+""+rs.getInt("数学成绩")+""+rs.getInt("英语成绩")+""+rs.getInt("物理成绩")+"
");

con.close();}

catch(SQLException e1) {} %>

1.<%@pagecontentType="text/html;charset=gbk"%>

<%request.setCharacterEncoding("gbk";

String strUserName="";

String strUserPWD="";

strUserName=request.getParameter("UserID");

strUserPWD=request.getParameter("UserPWD");%>

姓名:<%=strUserName%>

密码:<%=strUserPWD%>

(2)

姓名:

name="UserID">

密码:

2、(1)<%@ page contentType="text/html;charset=gbk"%>

<%@ page import="java.util.*"%>

<%String current_param="";

request.setCharacterEncoding("gbk");

Enumeration params=request.getParameterNames();

while(params.hasMoreElements()){

current_param=(String)params.nextElement();

out.println("Name:"+current_param+"
");

out.println("Values:"+request.getParameter(current_param)+"
");}%> (2)

姓名:

name="UserID">

密码:

相关文档