JSP知识点和复习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、填空题
1.在计算机上开发与运行Java程序,一定要安装 JDK ,即 Java开发工具包。而Java程序的运行只需要 JRE 的支持。
2.在MyEclipse上开发与运行JSP程序需要配置开发环境,主要需配置 环境变量和tomcat服务器。
3.Tomcat服务器的默认端口是8080 ;如果用Tomcat作为Web服务器,则应用程序需部署到Tomcat安装目录的 webapp 子目录中。
4.用Eclipse或MyEclipse开发工具创建一个Web项目时,Java类存放在 src 中,而JSP文件存放在webRoot。
5.如果将用户在某个JSP文件输入的数据传递到另一个JSP文件中,我们常用到application或request对象。
6.在Web项目中WEB-INF下必须有的配置文件是web.xml。
二、简答题
1.什么是Web应用程序?与传统的应用程序相比它有什么特征?
Web应用程序是基于超文本信息形式的网络应用程序,它是一个包含多个Web动态页面的网站。
Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。
2.简述Java程序的开发与运行环境。
JDK 是整个Java的核心,包括了Java运行环境,一堆Java工具和Java基础的类库(rt.jar)。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O.一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
3.请说说C/S方式的程序与B/S方式的程序的区别,动态网页与静态网页的区别。
C/S模式是一种两层结构的系统,第一层在客户机上安装了客户机应用程序,第二层在服务器上安装服务器管理程序.在C/S模式的工作过程中,客户机程序发出请求,服务器程序接收并且处理客户机程序提出的请求,然后返回结果. B/S模式即浏览器/服务器模式,是一种从传统的两层C/S模式发展起来的新的网络结构模式,其本质是三层结构的C/S模式。在用户的计算机上安装浏览器软件,在服务器上存放数据并且安装服务应用程序。用户通过浏览器访问服务器,进行信息浏览、文件传输和电子邮件等服务。
静态网页与动态网页的区别在于Web服务器对它们的处理方式不同。当Web服务器接收到对静态网页的请求时,服务器直接将该页发送给客户浏览器,不
进行任何处理。如果接收到对动态网页的请求,则从Web服务器中找到该文件,并将它传递给一个称为应用程序服务器的特殊软件扩展,由它负责解释和执行网页,将执行后的结果传递给客户浏览器。
4.如何解决JSP页面上汉字乱码问题?
JSP文件头部加一行<%@ page contentType="text/html; charset=UTF-8" %>然后用utf8编码保存JSP文件
5.如何将一个JSP网页上的数据传递到另外一个JSP网页进行显示?
一种是重定向跳转,用,在下一个页面用request.getParameter("参数名")得到值,另一种跳转是转发,这种跳转request对象就被传往下一个页面,可以用
5.如果有一段Java代码段,请问如何使它在JSP上运行,请回答操作步骤。
6.如何将一个JSP网页上的数据传递到另外一个JSP网页进行显示?
一种是重定向跳转,用,在下一个页面用request.getParameter("参数名")得到值,另一种跳转是转发,这种跳转request对象就被传往下一个页面,可以用
一、填空题
1.JSP页面中除了如HTML元素的静态部分外,还有进行 动态 部分,如以<% %>形式编写的Java代码段。
2.JSP网页中基本的动态元素包括: 指令 、 脚本、 动作 等。
3.如果在JSP页面中显示一个变量的值,需要用到 request.getParameter。
4.JSP中既然能编写Java代码则它具有Java程序的各种功能,但这些Java代码不是完整的Java程序,它们必须用scriptlet的形式书写。
5.JSP界面之间的跳转时,参数在这些页面之间的传递一般用到forward和sendRedirect等对象。
6.可以不加声明就可以在JSP页面中使用的对象称为 内置对象 。
7. JSP共有以下9种基本内置对象,它们分别是:request、response、session、pageContext、out、Application、Excepiton、Config和page。
二、简答题
1.JSP页面元素有哪些?分别有什么作用?
JSP 指令元素,JSP 脚本元素,JSP 动作元素和注释
<%--*****--%> 是不输出到客户端的注释符。
<%!--*****--%> 是输出到客户端的注释符。
指令元素
<%@ page contentType=”text/html” %> 设置指定页面内容类型
<%@ include ...%> 在翻译阶段引入一个文件
<%@ taglib ... %> 声明一个页面使用的,包含自定义行为的标记库。
行为元素
页面
脚本元素
<%this is a scriptlet%> 嵌入脚本代码
表达式元素
<%= this is an expression%> 嵌入java表达式
方法声明
<%! this is a declaration%> 用于在JSP页面的实现类中声明变量和方法
2.简述B/S的“请求/响应”的运行模式以及JSP运行机制。
B/S模式就是采用标准的TCP/IP协议和http协议,客户向服务器发出HTTP请求浏览器
响应客户的请求,将请求发给web服务器,并把反应反给客户。
1.用户(客户机)访问响应的JSP页面,如http://localhost:8080/Prj_test/ch02/HelloJSP.jsp。
2.服务器找到相应的JSP页面。
3.服务器将JSP转译成Servlet的源代码。
4.服务器将Servlet源代码编译为class文件。
5.服务器将class文件加载到内存并执行。
6.服务器讲class文件执行后生成HTML代码发送给客户机,客户机浏览器根据响应的HTML代码进行显示。
3.JSP网页之间的跳转有哪几种形式,各有什么特点,请举例说明。
1.RequestDispatcher.forward(), 2.response.sendRedirect();
1.RequestDispatcher.forward()
是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递.
但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面.
重定向后浏览器地址栏URL不变.
例:在servlet中进行重定向
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面
rd.forward(request, response);
}
通常在servlet中使用,不在jsp中使用。
2.response.sendRedirect()
是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.
重定向后在浏览器地址栏上会出现重定向页面的URL
例:在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
response.sendRedirect("/index.jsp");
}
由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。
4.请说说JSP内置对象的特点及类型。
内置对象特点:1.由JSP规范提供,不
用编写者实例化。 2. 通过Web容器实现和管理 3.所有JSP页面均可使用 4.只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)
类型:1. 输出输入对象:request对象、response对象、out对象 2.通信控制对象:pageContext对象、session对象、application对象 3.Servlet对象:page对象、config对象 4.错误处理对象:exception对象5.分别说说request与response内置对象的作用与用法。
5.分别说说request与response内置对象的作用与用法。
request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
6.作用域(scope)有四大类型:page scope、request scope、session scope、application scope,它们各有什么区别?
application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。
session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。
request:请求作用域,就是客户端的一次请求。
page:一个JSP页面。
一、填空题
1.在Java程序中进行数据库操作,需要加载数据库的 驱动 才能获取数据库连接,从而实现对数据库的操作。
2.在数据库操作时,Class.forName("com.mysql.jdbc.Driver")语句的作用是: 加载JDBC驱动 。
3.在Java程序中编写对数据库的操作程序,如果程序语法等等均没有错误,但可能是数据库本身的问题,则操作也不会成功。所以,在进行数据库操作时,一般需要用 try{} 语句将这些操作语句括起来。
4.Java程序中对数据库操作需要用import java.sql.*语句导入一些Java对数据库操作的sql类,如java.sql.Statement。
5.对数据库操作需要创建如Connection对象、Statement对象等,在操作完成后需要将其 关闭,以释放资源。
6.每次执行一次Sql语句对数据库操作,都要写创建数据库连接等代码,这些代码几乎相同,我们可以用一个Java类存放这些代码以便 调用。
二、简答题
1.说说在Web项目中加载MySQL数据库驱动程序的两种方法。
2.JDBC是什么?如何在Java程序或JSP程序中使用JDBC进行数据库操作?
jdbc是 java数据库连接(java DataBase Connectivity)技术的简称,由一组使用java语言编写的类与接口组成,可以为多种关系数据库提供统一访问。
3.在对数据库进行操作的Java程序中,常常出现如:“import java.sql.ResultSet;”的语
句,请问这些语句有什么作用?
4.在JSP文件中执行数据库连接与操作的代码,与在Java程序中相比需要做哪些改动?
5.请问,在对数据库操作时常用到传递sql语句的对象Statement和PreparedStatement,它们有什么区别?
(1、 PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。
(2、作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法
execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数
(3、在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement.
6.为什么常用一个Java类封装创建数据库连接等代码?这样做有什么好处?
一,安全性
二,面向对象
三,代码的复用
四,程序的简洁性和可读性
一、填空题
1.软件可以认为是由功能模块组成的,可以从模块的角度对软件进行 模块化处理,从而使软件开发者更容易把握软件的结构,从而利于软件的开发。
2.一个软件的功能模块,分别可以用JSP、Servlet、JavaBean技术开发其 视图 、控制器 和 模型
3.软件的各模块开发成功后,需要通过 封装 使得软件成为一个整体。
4.MVC模式的开发M、V、C分别表示:模型model 、视图view 和 控制器controller
二、简答题
1.基于MVC的软件开发有什么优点与不足?
优点:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。
概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。
缺点:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
2.一个软件是如何分解成一个个模块的?即如何获取或得到软件的功能模块?
3.用本书已介绍的软件开发技术,一个软件的功能模块的MVC各层是如何实现的?
A. 用一个或者多个javabean对象,用于存储数据通过提供setXxx方法和getXxx方法,不涉及对数据的具体处理细节,以增强模型的通用性
B. 一个或多个jsp
4.在一个软件模块的开发过程中,常用到实体类的创建。请问依据什么来创建
实体类,实体类在整个模块中有什么作用?软件各层是如何操作以实体类实例化的数据对象的?
答:依据实体类对象的属性
作用:实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。
模型层对数据对象进行存储,生成setXxx方法和getXxx方法,控制器对数据对象进行操作,视图以显示控制器对数据对象操作的结果。
一、填空题
1.JSP页面中不需要使用Java代码而能访问数据对象中的数据,则需要用 servlet实现。
2.userBean,setProperty,getProperty指令是指JSP执行的那些基础性功能的动作指令,如创建对象、给对象属性赋值、获取对象中的属性值等。
3.JSP标准动作、EL表达式不需要任何定义就可以直接在JSP文件中使用,而使用JSTL标准标签需要添加 .jar 并要定义JSTL标签的前缀。
4.将一个数据类实例化为一个对象,需要用 new ,访问该对象中的数据可以用 ,而循环调用该对象中的数据需要用到 ;上述面向对象的操作在JSP文件中完全可以不用 来实现。
二、简答题
1.JSP程序有什么优点与不足?
答:【优点】1.JSP代码跨平台, 即一次编写,处处运行
2.JSP组件跨平台
3.支持多种网页格式
4.JSP标签可扩充性
5.健壮性与安全性
【缺点】
1. JSP技术极大的增加了产品的复杂性..(部署有难度)
2.硬件要求高
2.JSP采取哪些措施简化界面代码的编写?
3.JSP标准动作与EL表达式有什么作用?它们各有什么优势?
答:JSP 6种标准动作作用 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
EL表达式作用:它简化了代码,书写简洁,方便
4.
.答:
5.JSTL是什么含义?请分别介绍JSTL标准标签的作用及用法。
答:JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库
6.封装数据的JavaBean与普通的封装数据的Java类相比有什么特点?
答:特点就是 普通类不能为空 比如int默认值是0, 而封装类 可以为空 也就是默认值是null。
一、填空题
1.Servlet被定义为是在 服务器上运行的Java小程序。Servlet负责接受客户的请求,在服务器上运行,并将运
行的结果返回到客户端 客户的请求。
2.Servlet的URL地址需要在 web.xml 文件中进行配置。
3.Servlet生命周期的四个阶段分别为:加载初始化servlet ,调用init()方法;响应客户请求阶段, 调用service()方法:终止阶段, 调用destroy()方法。
4.Servlet适合在MVC分层结构的程序中充当 控制层 。
5.Servlet编写业务处理层很好,而编写 表示层不方便。
二、简答题
1.请说说Servlet作为一种Java程序有什么特点?
高效、方便、 功能强大、可移植性好 、节省投资
:2.根据Servlet的特点与优势说明Servlet的用途。
答案1:Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。
答案2:Servlet是用Java编写的Server端程序,Java Servlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务
3.请介绍一下Servlet的工作原理与运行过程。
Servlet工作原理:①、首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet()、doPost()等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。②、每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。③、Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。
Servlet的运行过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
① Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
②装载并创建该Servlet的一个实例对象。 ③调用Servlet实例对象的init()方法。
④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
⑤WEB应用程序被停
止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
4.请介绍一个Servlet的创建与执行的步骤。
扩展 HttpServlet 抽象类。重载适当的方法。如覆盖(或称为重写)doGet() 或doPost()方法。 如果有 HTTP 请求信息的话,获取该信息。用HttpServletRequest对象来检索HTML表格所提交的数据或URL上的查询字符串。 "请求"对象含有特定的方法以检索客户机 提供的信息,有3个可用的方法: = getParameterNames(), = getParameter(), = getParameterValues()。生成 HTTP 响应。HttpServletResponse 对象生成响应,并将它返回到发出请 求的客户机上。它 的方法允许设置"请求" 标题和"响应"主体。 "响应"对象还含有 getWriter() 方法以返回一个 PrintWriter 对象。 使用 PrintWriter 的 print() 和 println() 方法以编写 Servlet 响应来返回给客户机。 或者,直接使用out对象输出有关HTML文档内容。
5.请说说Servlet与JSP的关系。
JSP是Servlet的扩展,J是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下
一、填空题
1.在Java程序中进行数据库操作,需要加载数据库的 驱动程序才能获取数据库连接,从而实现对数据库的操作。
2.在数据库操作时,Class.forName("com.mysql.jdbc.Driver")语句的作用是:加载jdbc的驱动。
3.在Java程序中编写对数据库的操作程序,如果程序语法等等均没有错误,但可能是数据库本身的问题,则操作也不会成功。所以,在进行数据库操作时,一般需要用try{
}语句将这些操作语句括起来。
4.Java程序中对数据库操作需要用import Java.* 语句导入一些Java对数据库操作的sql类,如java.sql.Statement。
5.对数据库操作需要创建如Connection对象、Statement对象等,在操作完成后需要将其 关闭,以释放资源。
6.每次执行一次Sql语句对数据库操作,都要写创建数据库连接等代码,这些代码几乎相同,我们可以用一个Java类存放这些代码以便简化代码 。
二、简答题
1.说说在Web项目中加载MySQL数据库驱动程序的两种方法。
jdbc-odbc桥接和加载java驱动程序.
2.JDBC是什么?如何在Java程序或JSP程序中使用JDBC进行数据库操作?
jdbc是 java数据库连接(java DataBase Connectivity)技术的简称,由一组使用java语言编写的类与接口组成,可以为多种关系数据库提供统一访问。
3.在对数据库进行操作的Java程序中,常常出现如:“import java.sql.
ResultSet;”的语句,请问这些语句有什么作用?
4.在JSP文件中执行数据库连接与操作的代码,与在Java程序中相比需要做哪些改动?
5.请问,在对数据库操作时常用到传递sql语句的对象Statement和PreparedStatement,它们有什么区别?
6.为什么常用一个Java类封装创建数据库连接等代码?这样做有什么好处?