广东海洋大学JSP程序设计期末复习总结及模拟试题.docx
《广东海洋大学JSP程序设计期末复习总结及模拟试题.docx》由会员分享,可在线阅读,更多相关《广东海洋大学JSP程序设计期末复习总结及模拟试题.docx(18页珍藏版)》请在冰豆网上搜索。
广东海洋大学JSP程序设计期末复习总结及模拟试题
广东海洋大学jsp复习资料
JSP运行原理
当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个java文件,再将这个java文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求,而当这个JSP页面再次被请求执行时,JSP引擎将直接执行这个字节码文件来响应客户,这也是JSP比ASP速度快的一个原因。
而JSP页面的首次执行往往由服务器管理者来执行。
这个字节码文件的主要工作是:
1、把JSP页面中普通的HTML标记符号(页面的静态部分)交给用户的浏览器负责显示。
2、负责处理JSP标记,并将有关的处理结果发送到用户的浏览器.
3、执行“<%”和“%>”之间的java程序片(JSP页面中的动态部分),并把执行结果交给用户的浏览器显示。
4、当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程而不是启动一个进程,这些线程由Tomcat服务器来管理,与传统的CGI为每个客户启动一个进程相比较,效率要高的多。
注意:
如果对JSP页面进行了修改、保存,那么服务器会生成新的字节码。
我们可以在服务器下的\work\Catalina\localhost\_\org\apache\jsp目录下找到服务器生成的JSP页面对应的JAVA文件,以及编译JAVA文件得到的字节码文件。
JSP指令标记
<%@pagecontentType=”text/html;charset=GB2312”%>
<%@pageimport= “java.util.*”,“java.io.*”%>
如果需要在JSP页面的某处整体插入一个文件,可以使用include指令标记,其标记语法为:
<%@includefile=”文件的URL”%>
该指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件。
include动作标签格式为:
includepage="文件的名字"/>
或
includepage="文件的名字">
param子标记
include>
该动作标签告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。
与静态插入文件的include指令标签不同;当JSP引擎把JSP页面转译成Java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并成一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(Java文件的字节码文件被加载执行)才包含进来。
一个JSP页面可由5种元素组成普通的HTML标记、JSP标记(如指令标记、动作标记)、变量和方法的声明、Java程序片、Java表达式。
Tag标记
<%@taglibtagdir=”/WEB-INF/tags”prefix=”show”%>
<%@tagpageEncoding=”utf-8”%>
<%@attributename=”result”required=”true”type=”java.lang.Double”%>
<%@variablename-given=”time”variable-class=”java.util.Date”scope=”AT_END”%>
JSP内置对象
pageContext.setAttribute(“page”,”hello”);
getParameter(Strings)方法获取表单提交过来的信息。
request.setCharacterEncoding(“utf-8”);
response.setContentType(“utf-8”);
request对象获取请求所提交的各类信息。
getMethod():
获取用户提交信息的方式。
例如post或get.
getSchema():
获得当前页面使用的协议:
例如http.
getRemoteHost():
获取用户机的名称(如果获取不到,就获取IP地址)。
getParameterNames():
获取用户提交的信息体部分中name参数值的一个枚举。
标记
复选框checkbox
隐藏hidden
response对象的sendRedirect(URLurl)方法实现用户的重定向。
response对象调用encodeURL()或encodeRedirectURL()方法实现URL重写。
使用Java数据库驱动程序
1.加载Java数据库驱动程序
try{Class.forName(“com.microsoft.sqlserver.jdb-
c.SQLServerDriver”);
}catch(Exccptione){
System.out.println(e);
}
2.建立连接
try{Stringuri=“jdbc:
sqlserver:
//192.168.100.1:
1433;Database-Name=Warehouser”;
Stringuser=””;
Stringpassword=”sa”;
con=DriverManager.getConnection(uri,user,passw-
ord);
}catch(Exccptione){
System.out.println(e);
}
随机查询
Statementstmt=con.createStatement(inttype,intconcurrency);
ResultSetre=stmt.executeQuery(SQL语句);
type的取值决定滚动方式,取值可以是:
ResultSet.TYPE_FORWORD_ONLY;
ResultSet.TYPE_SCROLL_INSENSITIVE;
ResultSet.TYPE_SCROLL_SENSITIVE;
concurrency取值决定是否可以用结果集更新数据库,取值可以是:
ResultSet.CONCUR_READ_ONLY;
ResultSet.CONCUR_UPDATABLE;
获取和修改bean的属性
useBeanid=”apple”class=”tom.jia-
fei.Circle”scope=”page”/>
getPropertyname=“aplle”property=“radius”/>
setPropertyname=”zhang”property=”number”value=”1999001”/>
通过HTTP表单的参数的值来设置bean的相应属性的值
setPropertyname=”zhang”property=”*”/>
setPropertyname=”zhang”property=”name”param=”xingming”/>
编写web.xml
hello
china.dalian.Hello
hello
/lookHello
getInitParameter(“”);获得配置文件web.xml中的参数.
重定向与转发
重定向方法:
voidsendRedirect(Stringlocation),对于浏览器来说是将不同的请求。
RequestDispatcher对象
RequestDispatcherdispatcher=request.getRequesDispatcher(“a.jsp”);
dispatcher.forward(request,response);
HttpSessionsession=request.getSession(true);
MVC模式
模型:
一个或多个Javabean对象,用于存储数据。
视图:
一个或多个JSP页面,其作用是向控制器提交必要的数据和为模型提供数据显示,JSP页面使用HTML标记和Javabean标记来显示数据。
控制器:
一个或多个servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到Javabean中,然后servlet使用转发的方式请求视图中的某个JSP页面更新显示。
一、选择题
1.在JSP中如果要导入java.io.*包,应该使用(A)指令。
A.page B.taglib
C.include D.forward
2.下面哪一个不是JSP本身已加载的基本类?
(B)
A.java.lang.*B.java.io.*
C.javax.servlet.*D.javax.servlet.jsp.*
3.如果当前JSP页面出现异常时需要转到一个异常页,需要设置page指令的(B)属性。
A.Exception B.isErrorPage
C.error D.errorPage
4.对于预定义<%!
预定义%>的说法错误的是:
(C)
A、一次可声明多个变量和方法,只要以“;”结尾就行
B、一个声明仅在一个页面中有效
C、声明的变量将作为局部变量
D、在预定义中声明的变量将在JSP页面初始化时初始化
5.Page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:
(D)
A.<%@page%>作用于整个JSP页面。
B.可以在一个页面中使用多个<%@page%>指令。
C.为增强程序的可读性,建议将<%@page%>指令放在JSP文件的开头,但不是必须的。
D.<%@page%>指令中的属性只能出现一次。
6.JSP中的隐式注释为(C)。
A.//注释内容 B.
—注释内容-->C.<%--注释内容--%> D./*注释内容*/
7.在JSP中,(A)动作用于将请求转发给其他JSP页面。
A.forwardB.includeC.useBeanD.setProperty
8.使用response对象进行重定向时使用的方法为(B)。
A.getAttribute() B.sendRedirect()
C.setContentType() D.setAttribute()
9.如果把用户名变量UserName放在session对象中,下面语句正确的是()
A.session.setName(UserName) B.session.setName(“name”,UserName)
C.session.setAttribute(UserName) D.session.setAttribute(“name”,UserName)
10.在JSP中,test.jsp文件中有如下一行代码:
useBeanid=”user”scope=”_____”type=”com.UserBean”/>
要使user对象中一直存在于对话中,直至其终止或被删除为止,下划线中应填入(C)。
A.pageB.requestC.sessionD.application
11.下述选项中不属于JDBC基本功能的是:
(D)。
A.与数据库建立连接B.提交SQL语句
C.处理查询结果D.数据库维护管理
12.在JSP中,使用useBean>动作可以将javaBean嵌入JSP页面,对JavaBean的访问范围不能是(C)。
A.pageB.requestC.responseD.application
13.在JSP中调用JavaBean时不会用到的标记是(A)。
A.B.useBean>
C.setProperty>D.getProperty>
14.关于JavaBean正确的说法是:
(A)
A.Java文件与Bean所定义的类名可以不同,但一定要注意区分字母的大小写
B.在JSP文件中引用Bean,其实就是用useBean>语句
C.被引用的Bean文件的文件名后缀为.java
D.Bean文件放在任何目录下都可以被引用
15.JSP中使用getProperty>标记时,不会出现的属性是:
(C)。
A.nameB.propertyC.valueD.以上皆不会出现
16.在choose>标记中包含哪个标记(D)?
A.caseB.chooseC.checkD.when
17.下面哪个标记产生的结果同<%=var%>(C)。
A.setvalue=var>B.varout=${var}>
C.outvalue=${var}>D.outvar="var">
18.每次传递请求或响应时调用Filter的(B)方法。
A.init()B.doFilter()C.destroy()D.getInitParameter
19.StrutsBean的(C)标记从已定义的资源包中检索某键的值。
A.defineB.parameterC.messageD.write
20.Servlet程序的入口点是:
(A )
A.init() B.main() C.service() D.doGet()
30.不能在不同用户之间共享数据的方法是(A)
A.通过cookieB.利用文件系统
C.利用数据库D.通过ServletContext对象
二、填空题
1.Tomcat服务器的默认端口是 8080 。
2.Servlet的生命周期分三个时期:
装载Servlet 、 创建一个Servlet实例 、 销毁 。
3.在JSP中,当执行了查询操作时,一般将查询结果保存在ResultSet对象中。
4.在JSP内置对象中,与请求相关的对象是Request对象。
5.在JSP中,可以使用SetProperty>操作来设置Bean的属性,也可以使用GetProperty>操作来获取Bean的值。
6.异常的处理,可在该方法的代码段中包含3类代码:
try、catch和finally代码块。
7.在JSP中,连接数据库的方式通常有两种:
一种是通过JDBC-ODBC桥连接;另一种是通过JDBC驱动程序连接。
8.JDBC中为Statement接口提供了3种执行方法,它们是:
executeUpdate方法、executeQuery方法、execute方法。
9.取表单(
10.JSP内置对象共有四种Scope,它们是page、request、session、application。
11.事务处理技术包括数据查询和数据更新。
12.在JSP中使用Javabean可以通过usebean>动作元素。
13.如果你只希望你的Javabean在当前页面有效,应该设置scope=”page”。
14.如果你想使用Javabean设计一个网站计数器,那么该bean的scope应当设为application。
15.从本质上讲,Servlet是Java类。
16.JavaBean一般将属性设置成私有的,通过使用getXXX()方法和setXXX()方法来进行属性的取得和设置。
17.可以通过response对象的sendRedirect方法设置页面重定向,实现页面跳转,
18.JavaBean的应用语言是Java。
三、简答题
1.JSP有哪些内置对象?
作用分别是什么?
答:
JSP共有以下9种基本内置组件:
1.request用户端请求,此请求会包含来自GET/POST请求的参数
2.response网页传回用户端的回应
3.pageContext网页的属性是在这里管理
4.session与请求有关的会话期
5.Applicationservlet正在执行的内容
6.out用来传送回应的输出
7.configservlet的构架部件
8.pageJSP网页本身
9.exception针对错误网页,未捕捉的例外
2.说明MVC设计模式中,M、V、C分别代表什么,有什么作用。
答案:
M代表Model(模型),该组件是对软件所处理问题逻辑的一种抽象,封装了问题的核心数据,逻辑和功能实现,独立于具体的界面显示以及I/O操作。
V代表View(视图),该组件将表示模型数据,逻辑关系以及状态信息,以某种形式展现给用户。
视图组件从模型组件获得显示信息,并且对于相同的显示信息可以通过不同的显示形式或视图展现给用户。
C代表Controller(控制器),该组件主要负责用户与软件之间的交互操作,控制模型状态变化的传播,以确保用户界面与模型状态的统一。
5.JavaBean的主要规范是什么?
3.如何连接数据库?
答案:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Stringurl="jdbc:
odbc:
数据源名称";
DriverManager.getConnection(url,"sa","");
4.简述使用JDBC技术的主要步骤?
答案:
1.注册和加载驱动器;
2.与数据库建立连接;
3.发送SQL语句;
4.处理结果;
5.关闭连接;
5.简述JavaBean的书写规范。
答案:
(1)JavaBean是一个public的类。
(2)类要实现Serializable接口
(3)要有一个默认构造函数,以便任何一个容器都可以创建JavaBean的实例。
(4)存放属性的变量为protected或private特性。
(5)设置和获取属性时,使用setXXX()和getXXX()方法。
56、读下列程序并写出程序的结果
<%@pagelanguage="java"autoFlush="false"%>
out对象print/println方法应用案例
print/println方法应用
<%
out.println("你好!
");
out.clear();
out.println("afterclear:
");
chara='h';
intm=8;
doublef=3.1415926;
out.print("a="+a+"");
out.print("m="+m+"");
out.print("f="+f+"
");
out.print("BufferSize:
"+out.getBufferSize()+"
");
out.print("Remaining:
"+out.getRemaining()+"
");
%>
结果为:
afterclear:
a=hm=8f=3.1415926
BufferSize:
8192
Remaining:
8131
1.本程序段完成每隔5秒刷新一下页面,并在页面上显示系统当前时间。
<%@pagecontentType="text/html;charset=GB2312"%>
<%@pageimport="java.util.Date"%>
本页用来说明response对象
当前时间为:
<%response.setHeader("Refresh","5");%>
<%
out.println(""+newDate());
%>