JSP复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP复习资料
一、填空:
1、 Tomcat服务器的默认端口是8080 。
2、 jsp主要内置对象有: application 、 config 、 exception 、out 、 page 、 pageContext 、 request 、response 、 session 。
3、application (application,session)对象是所有客户共同拥有,而session(application,session)对象则是每个客户专用的。
4、 JDBC的主要任务是:建立与数据库的连接、向数据库发起查询请求、处理数据库返回结果
5、一个Bean由三部分组成实现java,io.serializable接口、提供地参数的构造方法、提供getter()和setter()方法访问它的属性。
6、 Servlet的生命周期分三个时期:初使化、服务、销毁。
7、 JSP开发网站的两种模式分为JSP+JavaBean 和JSP+JavaBean+Servlet
8、对于同一用户,要想在不同的页面之间共享数据,可有以下几种方法:把数据保存的session 中, 通过Cookie ,通过隐含的表单把数据提交到下一页面,通过ServletContext对象,通过Application 对象,通过文件系统或数据库。
9、运行servlet需要在___ web.xml注册。
10、JSP是Html和Java 的结合。
11、JSP是运行在Web服务器上的JSP语言。
*
12、Web服务器是一个servlet容器,它的作用是发布网页。
13、JSP的内部对象可以直接使用,它是由servlet容器创建的。
14、获取表单<form>提交的参数,通常使用的内部对象是request,常用的方法是getParameter。
15、JavaBena是一个java 类,它必须有一个public且无参数方法。
16、在JSP中使用JavaBean的标签是<jsp:useBean id=Bean实例 class=BeanName> ,其中id的用途是实例化一个Bean对象。
17、加载数据库驱动的方法是Class.forName() ,连接数据源的方法是DriverManager.getConnection() 。
18、Statement对象的两个常用方法是executeUpdate()和executeQuery()。
19、JSP的全称是Java Server Pages,是由 Sun公司倡导、许多公司参与一起建立的一种动态(动态、静态)网页技术标准。
20、在传统的网页HTML文件(*.htm,*.html)中加入Java程序段(Scriptlet)和 JSP标记(tag) ,就构成了JSP网页。
21、JSP网页文件的扩展名是.jsp 。
22、所有的JSP程序操作是在服务器端执行。
23、三种常用的动态网页技术是ASP、PHP 、JSP。
24、Tomcat脚本Startup用于启动服务器;Shutdown用于关闭服务器。
25、Java中的Exception是当程序中出现不同寻常的情况时生成的一个对象。
26、解决汉字问题最简单的方法就是在文件头加入<%@page contentType ="text/html;charset=GBK"%>。
27、page指令的语法格式为<%@ page %>。
28、Include指令的语法格式为<%@include file=“relativeURL” %>,其中relativeURL 的意思为相对地址。
29、id和scope属性是每一个JSP动作都具有的属性,其中id表示一个动作的名称,
scope表示一个动作的作用域。
30、<jsp:setProperty>)动作用于向Bean的属性赋值。
31、request对象的方法getAttribute()返回请示的给出名字的属性值。
32、response对象的类型是javax.servlet.ServletResponse类的实例,JSP引擎会根据客户端的请求信息建立一个默认的response对象。
*
33、application 对象保存了一个应用系统中的一些公用数据。
34、Out 对象用于输出数据,其范围是Page。
35、out对象的方法close() 用于关闭流并输出;getBuffersize()方法用于获得缓冲区的大小。
36、JDBC为各种常用数据库提供了无缝连接的技术。
37、JavaBean是运行在服务器端,用来响应客户端请示的java代码模块。
*
38、当一个servlet接收来自客户端的调用请求,它接收两个对象ServletRequest、ServletResponse。
39、四个对象有效范围是pageContext:在一个页面设置的属性,在其他页面就不行了、request:在JSP跳转中有效,完成请求后此范围结束。
、session:在客户端同服务器相连接的时间,直到其连接中断为止、application:起始于服务器开始运行,终止于服务器关闭。
40、作用域最大的JSP内置对象是application。
41、注释是描述部分功能或整个程序一段文字说明,不会被解释器执行,而是直接跳过。
43、page指令通过ContentType属性指定当前页面的内容类型和字符集。
44、page指令的import属性为JSP页面引入java包中的类。
45、在JSP中,内置对象request封装了用户提交的信息,使用该对象可以获取用户提交的信息。
二、选择题:
1、下面哪一个不是JSP本身已加载的基本类?( B )
A、ng.*
B、java.io.*
C、javax.servlet.*
D、javax.servlet.jsp.*
2、对于预定义<%!预定义%>的说法错误的是:( C )
A、一次可声明多个变量和方法,只要以“;”结尾就行
B、一个声明仅在一个页面中有效
C、声明的变量将作为局部变量
D、在预定义中声明的变量将在JSP页面初始化时初始化
3、从“员工”表的“姓名”字段中找出名字包含“玛丽”的人,下面哪条select语句正确:(D)
A、Select * from员工where 姓名=’_玛丽_’
B 、Select * from员工where 姓名=’%玛丽_’
C、Select * from员工where 姓名like ‘_玛丽%’
D、Select * from员工where 姓名like ‘%玛丽%’
4、下述选项中不属于JDBC基本功能的是:(D)
A、与数据库建立连接
B、提交SQL语句
C、处理查询结果
D、数据库维护管理
5、在JSP中使用<jsp:getProperty>标记时,不会出现的属性是:(C)
A、name
B、property
C、value
D、以上皆不
会出现
6、 Page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:(D)
A、<%@ page %>作用于整个JSP页面
B、可以在一个页面中使用多个<%@ page %>指令
C、为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的
D、<%@ page %>指令中的属性只能出现一次
7、在JSP中调用JavaBean时不会用到的标记是:(A)
A、<javabean>
B、<jsp:useBean>
C、<jsp:setProperty>
D、<jsp:getProperty>
8、关于JavaBean正确的说法是:(A)
A、Java文件与Bean所定义的类名可以不同,但一定要注意区分字母的大小写
B、在JSP文件中引用Bean,其实就是用<jsp:useBean>语句
C、被引用的Bean文件的文件名后缀为.java
D、Bean文件放在任何目录下都可以被引用
9、 Servlet程序的入口点是(A )
A、init()
B、main()
C、service()
D、doGet()
10、不能在不同用户之间共享数据的方法是(A)
A、通过cookie
B、利用文件系统
C、利用数据库
D、通过ServletContext对象
11、cookie.setMaxAge(60*60)的意思是(B)。
A、将cookie的保存时间设置为一分钟
B、将cookie的保存时间设置为一小时
C、将cookie的保存时间设置为60小时
D、将cookie的保存时间设置为一天
12、page对象属于(C)类对象。
A、输入输出
B、作用域通信对象
C、Servlet
D、错误
13、在传统的HTML页面中加入(D)就构成了一个JSP页面文件。
A、JAVA程序片
B、JSP标签
C、用“<%”、“%>”标记符号括起来的程序
D、JAVA程序片和JSP标签
14、配置JSP运行环境,若WEB应用服务器选用TOMCAT,以下说法正确的是:(B)
A、先安装TOMCAT,再安装JDK
B、先安装JDK,再安装TOMCAT
C、不需安装JDK,安装TOMCAT就可以了
D、JDK和TOMCAT只要都安装就可以了,安装顺序没关系
15、下面哪项不是request对象的方法(D)。
A、getAttribute(String str)
B、getCookies()
C、getParameter(String str)
D、sendRedirect(String url)
16、下列不是JavaBeans编码约定的是(A)
A、所有属性都是私有的
B、属性值的获取采用get加上首字母大写的属性名来命名方法
C、默认构造函数可以是私有的
D、属性值的设置采用set加上首字母大字的属性名来命名方法
17、下列哪个方法不属于Servlet(B)。
A、init()
B、run()
C、service()
D、destroy()
18、下面(D)不是form的元素。
A、input
B、textarea
C、select
D、table
19、关于JavaBean的说法,正确是的(C)。
A、JavaBean的具体类可以不是public的
B、JavaBean可以只提供一个带参数的构造器
C、jsp:useBean可以向HTML标记一样不关闭
D、JavaBean可以保存状态
20、关于get和post两种请求,下列说法正确的是(A)。
A、get请示是默认的
B、get请示数据量大小不受到限制
C、post请求地址栏里是可以看到数据的
D、post请求可以由doGet方法处理
三、判断题:
1、JSP内置对象session用于存储一个用户的会话状态。
(对)
2、通过application对象,可以在不同应用间共享信息。
(对)
3、Servlet程序的入口点是service。
(对)
4、JSP技术是基于JAVA语言不区分大小写的。
(错)
5、JSP页面中一定要包含JSP代码。
(错)
6、JSP中包括两种指令:page指令和include指令。
(错)
7、每个子应用对应一个单独的RequestProcessor实例。
()
8、sendRedirect之后不可以使用原来的request对象,而且效率较低。
(错)
9、forward地址栏不变化,只能在Web应用程序内的页面间跳转。
(对)
10、Bean文件放任何目录下都可以使用。
(错)
11、可以在一个页面中使用多个<%@page%>指令。
(对)
12、JSP在第一次访问的时候很慢,但是再以后的访问却变得很快。
(错)
13、可能调用结果集对象的execute()方法来执行插入表格的sql语句。
(对)
四、问答题:
1、JSP中属性的生命期有哪几种范围?请详细论述。
答:
Page:当前页面有效
Request:在请求的连接页面间有效
Session:在会话内有效
Application:在整个tomcat启动内有效
2、简述Servlet与JSP的关系。
答:JSP是一种脚本语言,包装了Java Servlet系统的界面,简化了Java和Servlet的使用难度,同时通过扩展JSP标签(TAG)提供了网页动态执行的能力。
尽管如此,JSP仍没有超出Java和Servlet的范围,不仅JSP页面上可以直接写Java代码,而且JSP是先被译成Servlet之后才实际运行的。
JSP与Servlet之间的主要差异在于,JSP提供了一套简单的标签,和HTML融合的比较好,可以使不了解Servlet的人可以做出动态网页来。
JSP修改后可以立即看到结果,不需要手工编译,JSP引擎会来做这些工作;而Servelt缺需要编译,重新启动Servlet引擎等一系列动作。
3、试简述JSP中动态include和静态include的区别。
答:如果文件仅仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,但这个被包含文件不会被JSP编译器执行。
相反,如果这个被包含文件是动态的文件,那么他将被JSP编译器执行。
如果是动态文件还可以用<jsp:param>传递参数。
4、JSP有哪些动作?作用分别是什么?
答:<jsp:param>操作被用来以“名—值”队的形式为其他标签提供附加信息
<jsp:include>操作允许在请求是在现成的JSP页面里包含静态或者动态资源
<jsp:forward>操作允许将请求转发到另一个JSP、servlet或静态资源文件
<jsp:useBean>标签用来在JSP页面中创建一个JavaBean实例并指定他的名字以及作用范围
<jsp:setProperty>此操作和setBean一起协作,用来设置JavaBean的属性
<jsp:getProperty>操作是对<jsp:setProperty>操作的补充,用来访问一个Bean的属性
<jsp:plugin>用来产生客户端浏览器的特别标签,可以使用它来插入Applet和JavaBean
<jsp:fallback>
5、简要阐述Servlet运行的生命流程。
答:web容器加载servlet,生命周期开始。
通过调用servlet的init()方法进行servlet的初始化。
通过调用service()方法实现,根据请求的不同调用不同的doXX()方法,结束服务,Web容器调用servlet 的destroy()方法。
(1)Server创建一个Servlet的实例。
(2)Server调用Servlet中的init()方法。
(3)一个客户端的请求到达Servlet。
(4)Server创建一个请求对象。
(5)Server创建一个响应对象。
(6)Server激活Servlet中的service()方法,传递请求和响应对象作为参数;
(7)service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。
6、Servlet的特点是什么?
答:高效、方便、功能强大、可移植性好、节省投资。
7、简述forward和redirect的区别。
答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些浏览内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪里来的,所以她的地址栏还是原来的地址。
Redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说,浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
8、JDBC驱动有哪4种类型?这4种类型之间有什么区别?
答:1、jdbc-odbc桥2、本地API部分java驱动3、网络协议完全java驱动4、本地协议完全java驱动。
Jdbc-odbc桥由于它的执行效率不高,更适合做为开发应用时的一种过度方案,或着对于初学者了解jdbc编程也较适用. 对于那些需要大数据量操作的应用程序则应该考虑2,3,4型驱动.在intranet方面的应用可以考虑2型驱动,但是由于3,4型驱动在执行效率上比2型驱动有着明显的优势,而且目前开发的趋势是使用纯java.所以3,4型驱动也可以作为考虑对象. 至于基于internet方面的应用就只有考虑3,4型驱动了. 因为3型驱动可以把多种数据库驱动都配置在中间层服务器.所以3型驱动最适合那种需要同时连接多个不同种类的数据库, 并且对并发连接要求高的应用. 4型驱动则适合那些连接单一数据库的工作组应用。
9、如何注册servlet?
答:在c:\bea\wlserver6.0sp1\config\mydomain\applications\defaultWebapp_myserver\web-inf\目录下找到文件web.xml,用记事本打开。
将以下内容添加到该文件中保存即可完成注册。
<servlet>
<servlet-name>TestUseServlet</servlet-name>
<servlet-class>testservlet.TestUseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestUseServlet</servlet-name>
<url-pattern>DBTest</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Myservlet</servlet-name>
<servlet-class>mypackage.Myservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Myservlet</servlet-name>
<url-pattern>Myservlet</url-pattern>
</servlet-mapping>
10、JSP中的异常包括哪两种?
答:异常包括JspEorror和JspException两种。
11、HttpServletResponse类的sendRedirect方法和RequestDispatcher类的forward方法有何不同?
答:两者都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。
1.RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至可以使用绝对URL重定向到其他站点的资源。
2.调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
3.HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求。
RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
4.RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
5.无论是RequestDispatcher.forward方法,还是HttpServletResponse.sendRedirect方法,在调用它们之前,都不能有内容已经被实际输出到了客户端。
如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中清除。
12、怎样使用request、session和application对象进行参数存取?
答:
13、简述JSP的执行过程。
答:1.JSP文件首先要翻译成Java文件(Servlet),在Tomacat中翻译后的java文件在tomcat的work\Catalina\localhost中相应的名字的应用目录里。
2.编译Java文件
3.运行.class文件
14.两种跳转方式分别是什么?有什么区别?
答:<jsp:include page="included.jsp" flush="true">和
<jsp:forward page= "nextpage.jsp"/>
<jsp:include>操作允许在请求是在现成的JSP页面里包含静态或者动态资源。
<jsp:forward>操作允许将请求转发到另一个JSP、servlet或静态资源文件。
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。
执行完后还会回来,相当于函数调用。
并且可以带参数.后者完全转向新页面,不会再回来。
相当于go to 语句。
五、阅读与编程:
1、分析下面的代码,写出include.jsp的运行结果。
include.jsp代码:
<%@ page contentType="text/html;charset=GBK" %>
<html>
<body bgcolor="white" >
这里是显示结果:<br><hr>
<%@ include file="abc.html"%> <p>
<%@ include file="mytxt.txt"%> <p>
<%@ include file="mycode.cod"%> <p>
</body>
</html>
2、编写程序reg.htm和reg.jsp,做一用户注册界面,注册信息包括:用户名,年龄,性别。
然后提交到reg.jsp进行注册检验,若用户名为admin,就提示“欢迎你,管理员”,否则,显示“注册成功”并显示出注册信息。
reg.htm
<html>
<body>
<form action="reg.jsp" >
用户名:<input type='text" name="na"><br>
年龄:<input type='text" name="age"><br>
性别:<input type="radio" name="sex">男<input type="radio" name="sex">女<br>
<input type='submit" vlue="提交">
</form>
</body></html>
Reg.jsp
<%@page contentType="text/html;charset=GB2312" %>
<%
String name=request.getParameter("na");
if(name.equals("admin")){
out.println("欢迎你,管理员!");
}
else{ out.println("注册成功");
out.println("用户名"+name));
out.println("年龄"+request.getParameter("age"));
out.println("性别"+request.getParameter("sex"));
}
%>
3、编程:
(1)编写MyBean的源代码,其中有两个属性name、passwd。
Package bb;
public class MyBean{
String name,passwd;
public MyBean(){
name="";passwd="";}
public String getName(){
Return name;
}
public String getPasswd(){
Return passwd;
}
public void setName(String name){
=name;
}
public void setPasswd(String passwd){
This.passwd=passwd;
}
}
(2)编写简单的<form>提交name,passwd参数给get.jsp。
<form action="get.jsp">
NAME:<input type="text" name="na">
PASSWD:<input type="text" name="pw">
<input type=submit vlaue="提交">
</form>
(3)使用<jsp:useBean class=”bb.MyBean” id=”bean”/>编写get.jsp,获取并显示name、passwd参数。
<jsp:useBean class=”bb.MyBean” id=”bean”/>
<%
bean.setName(request.getParameter("na"));
bean.setPasswd(request.getParameter("pw"));
out,println("你输入的信息为:");
out,println("name:"+getName());
outpintln("passwd:"+getPasswd());
%>
3、数据库stu中有数据表student,包含三个字段:xm(姓名),xh(学号),xb(性别),zy(专业),共有五条记录。
请编程访问sqlserver并显示该表中数据。
//加载JDBC驱动器类
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
//建立到数据库的连接
con = DriverManager.getConnection(
“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stu”,”sa””sa”);
//在数据库中查询表
int selectTable = -1;
String strSelectTable = “SELECT xm,xh,xb,zy from sudent”;
Statement stmtCreate = con.createStatement();
ResultSet rs = stmtCreate.executeQuery(strSelectTable);
if(rs!=null)
{ while(rs.next())
{out.println(“姓名:”+rs.getString(“xm”)+”<br>”);
out.println(“学号:”+rs.getString(“xh”)+”<br>”);
out.println(“性别:”+rs.getString(“xb”)+”<br>”);
out.println(“专业:”+rs.getString(“zy”)+”<br>”);
}}
Else
Out.println(“未查到结果!<br>”); stmtCreate.close();。