jsp技术.docx

上传人:b****5 文档编号:14614290 上传时间:2023-06-25 格式:DOCX 页数:16 大小:35.54KB
下载 相关 举报
jsp技术.docx_第1页
第1页 / 共16页
jsp技术.docx_第2页
第2页 / 共16页
jsp技术.docx_第3页
第3页 / 共16页
jsp技术.docx_第4页
第4页 / 共16页
jsp技术.docx_第5页
第5页 / 共16页
jsp技术.docx_第6页
第6页 / 共16页
jsp技术.docx_第7页
第7页 / 共16页
jsp技术.docx_第8页
第8页 / 共16页
jsp技术.docx_第9页
第9页 / 共16页
jsp技术.docx_第10页
第10页 / 共16页
jsp技术.docx_第11页
第11页 / 共16页
jsp技术.docx_第12页
第12页 / 共16页
jsp技术.docx_第13页
第13页 / 共16页
jsp技术.docx_第14页
第14页 / 共16页
jsp技术.docx_第15页
第15页 / 共16页
jsp技术.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

jsp技术.docx

《jsp技术.docx》由会员分享,可在线阅读,更多相关《jsp技术.docx(16页珍藏版)》请在冰点文库上搜索。

jsp技术.docx

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的属性。

-->

  

  

  BeanDataDisplay

  

  

  

--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动态生成。

请使用标记来创建一个Bean实例,以使从JSP文件的任何地方都可对该实例进行访问。

标记的语法为:

  

  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属性。

  在指定了标记后,就可以从JSP文件中的任何地方访问Bean。

这里有三种访问Bean属性的方法:

使用JSPscriptlet、使用JSP表达式、使用标记(如同变量数据的HTML模板语法中所说明的)。

请参阅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:

标记在JSP文件中说明的JavaBean名。

请参阅访问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模板替代语法。

要使用替代语法:

 请使用来包含HTML标记,在该标记中指出替代内容。

 指定Bean和property属性:

 要指定Bean和属性特性,请使用下列格式:

$(bean=bproperty=pdefault=d),其中b、p和d

作为描述基本语法的值。

 要指定requestparm属性,请使用下列格式:

$(requestparm=rd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2