jsp技术.docx
- 文档编号:27002566
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:16
- 大小:35.54KB
jsp技术.docx
《jsp技术.docx》由会员分享,可在线阅读,更多相关《jsp技术.docx(16页珍藏版)》请在冰豆网上搜索。
jsp技术
JSP技术
5.1JSP简介
5.2JSP示例
5.3JSP语法
5.4JSPAPI
5.1JSP简介
JSP(JavaServerPages)是一种基于Java的脚本技术。
在JSP的众多优点之中,其中之一是它能将HTML编码从Web页面的业务逻辑中有效地分离出来。
用JSP访问可重用的组件,如Servlet、JavaBean和基于Java的Web应用程序。
JSP还支持在Web页面中直接嵌入Java代码。
可用两种方法访问JSP文件:
浏览器发送JSP文件请求、发送至Servlet的请求。
1.JSP文件访问Bean或其它能将生成的动态内容发送到浏览器的组件。
图5-1说明了该JSP访问模型。
当Web服务器接收到一个JSP文件请求时,服务器将请求发送至WebSphere应用服务器。
WebSphere应用服务器对JSP文件进行语法分析并生成Java源文件(被编译和执行为Servlet)。
Java源文件的生成和编译仅在初次调用Servlet时发生,除非已经更新了原始的JSP文件。
在这种情况下,WebSphere应用服务器将检测所做的更新,并在执行它之前重新生成和编译Servlet。
图5-1:
浏览器发送JSP文件请求
2.发送至Servlet的请求生成动态内容,并调用JSP文件将内容发送到浏览器。
图5-2说明了该访问模型。
该访问模型使得将内容生成从内容显示中分离出来更为方便。
WebSphere应用服务器支持HttpServiceRequest对象和HttpServiceResponse对象的一套新方法。
这些方法允许调用的Servlet将一个对象放入(通常是一个Bean)请求对象中,并将该请求传递到另一个页面(通常是一个JSP文件)以供显示。
调用的页面从请求对象中检索Bean,并用JSP来生成客户机端的HTML。
图5-2:
发送至Servlet的请求
5.2JSP示例
浏览器通过一个Web页面中的HTML表单请求一个servlet(PopulateBeanServlet),该servlet创建一个名为dataBean的DataBean实例,并调用JSP文件将内容发送到浏览器。
Servlet示例和JSP文件示例说明了启用内容分离的JSP访问模型。
A.Servlet是由下列Web页面中的HTML表单来调用的。
运行PopulateBeanServlet
您是否希望运行PopulateBeanServlet?
B.被请求的servlet为PopulateBeanServlet,其源代码如下:
/******************************************************************
*Servlet示例:
PopulateBeanServlet.java
*这个servlet创建一个名为dataBean的DataBean实例,设置dataBean的若干个属性,
*将dataBean放置在当前“请求”对象中,
*调用JSP文件(DisplayData.jsp)来格式化并显示dataBean的数据
********************************************************************/
importjava.io.*;
importjava.beans.Beans;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjavax.ejb.CreateException;
publicclassPopulateBeanServletextendsHttpServlet{
publicvoidService(HttpServletRequestreq,HttpServletResponseres)
throwsServletException,IOException{
try{
dataBean=(DataBean)Beans.instantiate(this.getClass().getClassLoader(),"DataBean");
}
catch(Exceptionex){
thrownewServletException("Can'tcreateBEANofclassDataBean:
"
metaData.setSQL(getSQLString());
}
//SetsomeBeanproperties(contentgeneration)
dataBean.setProp1("Value1");
dataBean.setProp2("Value2");
dataBean.setProp3("Value3");
//TosendtheBeantoaJSPfileforcontentformattinganddisplay
//1)将dataBean放置在当前“请求”对象中,
((com.sun.server.http.HttpServiceRequest)req).setAttribute("dataBean",dataBean);
//2)使用callPage方法调用JSP文件,文件名为DisplayData.jsp,并把请求对象传递给JSP。
((com.sun.server.http.HttpServiceResponse)res).callPage("/DisplayData.jsp",req);
}//endofservicemehtod
}/*endofclassPopulateBeanServlet*/
C.被调用的JSP文件为DisplayData.jsp,其内容如下:
--该JSP文件获得在请求对象中传递的dataBean,并显示该Bean的属性。
-->
--GettheBeanusingtheBEANtag-->
--TherearethreewaystoaccessBeanproperties-->
--UsingaJSPscriptlet-->
<%out.println("ThevalueofBeanproperty1is"+dataBeans.getProp1());
%>
--UsingaJSPexpression-->
ThevalueofBeanproperty2is
<%=dataBean.getProp2()%>
--UsingtheINSERTtag-->
ThevalueofBeanproperty3is
5.3JSP语法
JSP文件(扩展名为.jsp)可以包含指令(或称为指示语句)、Class-wide变量和方法、直接插入的Java代码(scriptlet)、访问JavaBean、变量数据的HTML模型、变量数据的Java表达式的组合。
1.JSP指令
使用JSP指令(在<%@和%>内的)来指定所使用的脚本语言、Servlet实现的接口、Servlet扩展的类、Servlet导入的软件包。
JSP指令的一般语法形式为:
<%@指令名="值"%>。
其中有效的指令名为:
(1)language:
文件中所使用的脚本语言。
此时对于Java程序设计语言来说,仅java为有效值和缺省值。
该指令作用于整个文件。
当多次使用该指令时,只有第一次使用是有效的。
示例如下:
<%@language="java"%>。
(2)Method:
由嵌入的Java代码(scriptlet)生成的方法的名称。
生成的代码会成为指定方法名的主体。
缺省的方法是service。
当多次使用该指令时,只有第一次使用是有效的。
示例如下:
<%@method="doPost"%>。
(3)Import:
Servlet导入的Java语言软件包名或类名列表,该列表是用逗号分隔的。
在JSP文件中,可以多次指定该指令来导入不同的软件包。
示例如下:
<%@import="java.io.*,java.util.Hashtable"%>。
(4)content_type:
生成的响应的MIME类型。
缺省值为text/html。
当多次使用该指令时,只有第一次使用是有效的。
该指令可用以指定在其中对页面进行编码的字符集。
示例如下:
<%@content_type="text/html;charset=gb2312"%>。
(5)mplements:
用于生成Servlet实现的Java语言接口列表,该列表是用逗号分隔的。
可以在一个JSP文件中多次使用该命令,以实现不同的接口。
示例如下:
<%@implements="javax.servlet.http.HttpSessionContext"%>。
(6)extends:
Servlet扩展的Java语言类的名称。
该类必须是有效的,且不能是一个Servlet类。
该指令作用于整个JSP文件。
当多次使用该指令时,只有第一次使用是有效的。
示例如下:
<%@extends="javax.servlet.http.HttpServlet"%>。
2.class-wide变量和方法
使用标记来说明Servlet类的class-wide变量和class-wide方法。
一般语法如下:
//class-wide变量和方法的代码
属性runat=server是必需的,它表明该标记是用于服务器端处理的。
指定class-wide变量和方法的示例如下:
//class-wide变量
initi=0;
Stringfoo="Hello";
//class-wide方法
privatevoidfoo(){
//该方法的代码
}
3.访问JavaBean
JSP对JavaBean的支持使您能通过Web站点重复使用组件。
JavaBean可以是类文件或串行化Bean,也可由Servlet动态生成。
请使用
标记
type="class_or_interface_name"introspect="yes|no" beanName="ser_filename"create="yes|no" scope="request|session|userprofile"> 其中的属性及其含义如下: (1)name: 用于在相应的范围(由scope属性指定)内查找Bean的名称。 例如,这可能是用于存储Bean的会话(session)关键值。 该值是分大小写的。 (2)varname: 用于在JSP文件中的任何地方引用Bean的名称。 该属性是可选的。 缺省值为name属性值。 该值是分大小写的。 (3)type: Bean的类文件名。 该名称用于以代码说明Bean实例。 缺省值为Object类型。 该值是分大小写的。 (4)Introspect: 当该值为真时,JSP处理器检查将所有的请求属性,并调用与请求属性匹配的set属性方法集(该属性是在BeanInfo中传递的)。 该属性的缺省值为是。 (5)BeanName: Bean的.class文件名、Bean软件包名或包含Bean的串行化文件(.ser文件)的文件名。 (该名称是给Bean实例程序的)。 仅当Bean不在指定的范围中,且创建属性被设置成是时,才使用该属性。 该值是分大小写的。 文件路径必须在应用服务器的Java类路径中指定,除非文件在applicationserver_root\servlets目录下。 (6)Create: 当该值为真时,如果处理器在指定的范围内没有找到Bean,则JSP将创建一个Bean实例。 缺省值为真。 (7)Scope: Bean的生命期。 该属性是可选的,其缺省值为request。 有效值为: request-由Servlet将Bean设置成请求的上下文,该Servlet使用JSPAPI中描述的API调 用JSP文件。 如果Bean不是请求上下文的一部分,则将创建该Bean,并将其存储在请求上下文中,除非创建属性已设置为否。 session-如果当前对话中存在Bean,则Bean已被重用。 如果不存在Bean,且创建属性设置 为是,则它已被创建并作为会话的一部分存储起来。 userprofile-由Servlet请求对象检索、造型成指定的类型,并进行内省的用户简要表文件。 (在 IBMWebShere应用服务器中,缺省类型为com.ibm.servlet.personalization.userprofile.UserProfile)。 (8)param: 属性和值配对的列表。 属性是在Bean中用内省自动设置的。 只在实例化Bean时,才对属性进行设置。 除了使用属性来设置Bean属性外,还可以使用其它三种方法: 第一,在请求包含Bean的Web页面(JSP文件)的URL时,指定查询参数。 必须将内省属性设置成“是”。 其示例如下: Bean属性名将设置为jones。 第二种方法,将属性指定成由HTML 必须将mothod属性设置成post。 将action属性设置成调用Bean的JSP文件的URL。 必须将introspect属性设置成“是”。 其示例如下: "> 第三中方法是使用JSP语法设置Bean属性。 在指定了 这里有三种访问Bean属性的方法: 使用JSPscriptlet、使用JSP表达式、使用 请参阅JSP示例(DisplayData.jsp文件)以获取三个访问Bean方法的每个方法示例。 4.直接插入的Java代码(scriptlet) 可以在JSP文件的<%和%>标记间直接嵌入任何有效的Java语言代码。 这样嵌入的代码称为scriptlet。 如果没有指定method指令,则生成的代码将成为service方法的主体。 用于Servlet的scriptlet可以使用一个预定义的变量集,该变量集符合基本的Servlet、输出和输入类: (1)request: 由javax.servlet.http.HttpServletRequest定义的Servlet请求类 (2)responses: 由javax.servlet.http.HttpServletRequest定义的Servlet响应类 (3)out: 由java.io.PrintWriter定义的输出转录程序类 (4)in: 由java.io.BufferedReader定义的输入阅读程序类 其示例如下: <% foo=request.getParameter("Name"); out.println(foo); %> 5.变量数据的HTML模板语法 当页面被返回给浏览器时,应用服务器HTML模板语法使您能将变量字段放在HTML页面上,并使Servlet和JavaBean可利用数据库的值动态地替换变量。 该功能是JSP的一个IBM扩展,它使引用变量数据变得十分容易。 该语法只能用于JSP文件中。 HTML模板语法包括: 基本HTML模板语法; 替代HTML模板语法; 这些标记通过HTML编写工具被设计成传递交互操作的标记。 每一个标记有一个相应的结束标记。 每一个标记是分大小写的,它们的一些属性也是分大小写的。 IBMWebSphereStudio使开发JSP文件以包含HTML模板语法变得更为容易。 (1)基本HTML模板语法 一般的语法为: property=property_name(optional_index).subproperty_name(optional_index) default=value_when_null> 其中的属性及其含义如下: requestparm: 要在请求对象内进行访问的参数。 该属性是分大小写的,并且不能与Bean和property属性一起使用。 Requestattr: 要在请求对象内进行访问的属性。 属性应使用setAttribute方法设置。 该属性是分大小写的,并且不能与Bean和property属性一起使用。 Bean: 由 请参阅访问JavaBean以获得 该属性的值是分大小写的。 当指定了Bean属性,但未指定property属性时,在替换中将使用完整的Bean。 例如,如果Bean是类型String且未指定属性,则将替代string的值。 Property: 访问替换的Bean的属性。 该属性的值是分大小写的,并且是属性的独立场所名。 该属性不能与requestparm属性一起使用。 Default: 当Bean属性值为空时,显示可选的字符串。 如果字符串包含多个字,则该字符串必须包含在一对双引号中(例如"HelpDesknumber")。 该属性的值是分大小写的。 如果未指定值,则当属性值为空时,用空字符串替代。 基本语法的示例如下: 在大多数情况下,property属性的值就是属性名。 但是,可以通过指定property属性的全格式来访问属性的某一属性(子属性)。 这个全格式也提供选择项给您来指定索引属性的一个索引。 该可选的索引可以是一个常数(例如2)或如重复设置HTML标记中描述的索引。 使用属性标记的全格式示例如下: (2).bat(3).boo.far> (2)替代HTML模板语法 HTML标准不允许在HTML标记中嵌入HTML标记。 因而,就无法在另一个HTML标记中嵌入 作为代替,请使用HTML模板替代语法。 要使用替代语法: 请使用 指定Bean和property属性: 要指定Bean和属性特性,请使用下列格式: $(bean=bproperty=pdefault=d),其中b、p和d 作为描述基本语法的值。 要指定requestparm属性,请使用下列格式: $(requestparm=rd
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsp 技术