- 浏览: 731416 次
- 性别:
- 来自: 嘉兴
文章分类
- 全部博客 (386)
- Struts1.1 (2)
- Database (18)
- Core Java (15)
- Log4j (4)
- SSH (0)
- Dao (1)
- Architecture Design (1)
- References (2)
- Eclipse&MyEclipse (10)
- Hibernate (7)
- Spring (8)
- JavaMail (1)
- Data Structure And Algorithm (48)
- Struts 2 (2)
- SSI (1)
- SSL (2)
- JSTL (1)
- EJB3 (2)
- NET (2)
- XML (2)
- Components (2)
- Ant (3)
- Multi Thread (1)
- Performance Monitoring (1)
- Web Server (17)
- Oracle (1)
- jQuery (8)
- Regular Expression (1)
- Weblogic (1)
- Exception (1)
- Security (2)
- File Manipulation (1)
- JavaScript (12)
- JVM (2)
- HTML&DIV&CSS (4)
- Android (10)
- Beyond GFW (0)
- Business (0)
- SVN (6)
- 虚拟主机 (1)
- Virtual Host (3)
- My mentality (5)
- OS (15)
- ISPMP (3)
- Magento (5)
- Jsoup&HttpClient (7)
- LINUX (9)
- Database Design (0)
- Power Designer (1)
- TaobaoOpenPlatform (2)
- C/C++ (3)
- Maven (11)
- Quartz (1)
- Load Balance (1)
- Zabbix (4)
- Product&Business (1)
- Pay Interface (1)
- Tomcat (2)
- Redis (1)
- 集群 (1)
- Session (1)
- 共享Session (1)
- Jedis (1)
- jenkins (1)
- 持续集成 (1)
- Web前端 (1)
最新评论
-
aqq331325797:
特意注册账号上来说一句。牛逼!
swagger2.2.2 与 spring cloud feign冲突 -
KitGavinx:
跨顶级域名怎么保持sessionid一致?
Tomcat7集群共享Session 基于redis进行统一管理 -
jaychang:
dujianqiao 写道HI ,能否给一个完整的demo 啊 ...
淘宝订单同步方案 - 丢单终结者 -
GGGGeek:
找了一会儿,感觉mybatis应该没有这种操作,直到发现博主的 ...
mybatis collection list string -
dujianqiao:
HI ,能否给一个完整的demo 啊 ?
淘宝订单同步方案 - 丢单终结者
原文引自:http://www-128.ibm.com/developerworks/cn/java/j-jstl0520/index.html
Web 应用程序的标志是多个子系统的集成。SQL和XML是在这类子系统之间交换数据的两种最通用的机制。在本文中,Mark Kolb介绍访问JSP页面数据库和XML内容的sql和xml库并对JSTL进行了总结。<!-- START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!-- END RESERVED FOR FUTURE USE INCLUDE FILES-->
Web 应用程序的模板式(stereotypical)架构分为三层:处理请求的Web服务器、实施业务逻辑的应用程序服务器以及管理永久性数据的数据库。应用 程序和数据库层之间的联接通常采用关系数据库中的SQL调用格式。当业务逻辑被写入到Java语言中时,JDBC用于实现这些调用。
如果 应用程序调用与其它服务器(本地或远程)的集成,我们将需要用于在不同子系统之间交换数据的更深层次的机制。在Web应用程序内部和应用程序之间传送数据 采用的越来越普遍的一种方法是XML文件的交换。
迄今为止,在我们的JSTL之旅中,我们讨论了JSTL 表达式语言(expression language ,EL)和 core 和 fmt 标记库。在最后一部分,我们将考虑sql和xml库--正如它们的名字表示的一样 -- 提供定制标记来接入和管理从SQL数据库和XML文件检索到的数据。
|
根 据设计,XML提供灵活的方式来表示结构化数据,这些数据同时准备进行验证,因此它尤其适应于在松散联合的系统之间交换数据。这反过来使其成为Web应用 程序极具吸引力的集成技术。
与使用XML表示的数据进行交互的第一步是把数据作为一个XML文件,对其进行检索并进行分解,以创建数据结 构来接入该文件中的内容。在分解文件后,您可以有选择的对其进行转换以创建新的XML文件,您可以对新的XML文件进行相同的操作。最终,文件中的数据可 以被提取,然后显示或使用作为输入数据来运行其它操作。
这些步骤都在用于控制XML的JSTL标记中反映出。根据我们在第2部分 探讨核心 中所讨论的,我们使用core库中的<c:import>标记来检索XML 文件。然后使用<x:parse>标记来分解该文件,支持标准的XML分解技术,如文件对象模式(Document Object Model,DOM)和简单XML API(Simple API for XML,SAX)。<x:transform>标记可用于转换XML文件并依赖标准技术来转换XML数据:扩展样式表语言( Extensible Stylesheet Language, XSL)。最后,我们提供多个标记来接入和控制分解后的XML数据,但是所有这一切都依赖于另一种标 准- XML路径语言(XML Path Language, XPath),以引用分解后的XML文件中的内容。
<x:parse> 标记有多种格式,取决于用户希望的分解类型。这一项操作最基本的格式使用以下语法:
|
在这五种属性中,只有xml 属性是需要的,其值应该是包含要分解的XML文件的字符串,或者是java.io.Reader实例,通过它可以读取要被分解的文件。此外,您可以使用以 下语法,根据<x:parse>标记的主体内容来规定要被分解的文件:
|
var和scope属性规定 存储分解后的文件的scoped变量。然后xml库中的其它标记可以使用这一变量来运行其它操作。注意,当var和 scope 属性存在时,JSTL用于表示分解后的文件的数据结构类型以实施为导向,从而厂商可以对其进行优化。
如果应用程序需要对JSTL提供的分 解后的文件进行处理,它可以使用另一种格式的<x:parse>,它要求分解后的文件坚持使用一个标准接口。在这种情况下,该标记的语法如 下:
|
当您使 用<x:parse>的这一版本时,表示分解后的XML文件的对象必须使用org.w3c.dom.Document接口。当根 据<x:parse>中的主体内容来规定XML文件时,您还可以使用varDom和scopeDom属性来代替var 和 scope属性,语法如下:
|
其它两个属性filter 和 systemId 可以实现对分解流程的精确控制。filter 属性规定org.xml.sax.XMLFilter类的一个实例,以在分解之前对文件进行过滤。如果要被分解的文件非常大,但目前的工作只需要处理一小 部分内容时这一属性尤其有用。systemId属性表示要被分解的文件的URI并解析文件中出现的任何相关的路径。当被分解的XML文件使用相关的URL 来引用分解流程中需要接入的其它文件或资源时需要这种属性
清单1展示了<x:parse> 标记的使用,包括与 <c:import>的交互。此处<c:import> 标记用于检索众所周知的Slashdot Web 网站的RDF Site Summary (RSS)反馈,然后使用<x:parse>分解表示RSS 反馈的XML文件,表示分解后的文件的以实施为导向的数据结构被保存到名为rss的变量(带有page 范围)中。
|
XML 通过XSL样式表来转换。JSTL使用<x:transform>标记来支持这一操作。与<x:parse>的情况一 样,<x:transform> 标记支持多种不同的格式。<x:transform> 最基本的格式的语法是:
|
|
此 处,xml 属性规定要被转换的文件,xslt 属性规定定义这次转换的样式表。这两种属性是必要的,其它属性为可选。
与<x:parse> 的xml属性一样,<x:transform>的xml 属性值可以是包含XML文件的字符串,或者是接入这类文件的Reader。此外,它还可以采用 org.w3c.dom.Document 类或javax.xml.transform.Source 类的实例格式。最后,它还可以是使用<x:parse> 操作的var或varDom属性分配的变量值。
而且,您可以根据<x:transform> 操作的主体内容来包含要被转换的XML文件。在这种情况下,<x:transform> 的语法是:
|
在这两种情况下,规定XSL 样式表的xslt 属性应是字符串、Reader或javax.xml.transform.Source实例。
如果var 属性存在,转换后的XML文件将分配给相应的scoped变量,作为org.w3c.dom.Document 类的一个实例。通常,scope属性规定这类变量分配的范围。
<x:transform> 标记还支持将转换结果存储到javax.xml.transform.Result 类的一个实例中,而不是作为org.w3c.dom.Document的一个实例。如果var 和 scope 属性被省略,result对象规定作为result属性的值,<x:transform>标记将使用该对象来保存应用该样式表的结果。清单2 中介绍了使用<x:transform> 的result属性的这两种语法的变化:
清
单2:使用result属性来提供javax.xml.transform.Result实例时,<x:transform>操作的语法变化
|
无论您采用这两 种<x:transform>格式中的那一种,您都必须从定制标记单独创建javax.xml.transform.Result对象。该对 象自身作为result属性的值提供。
如果既不存在var 属性,也不存在result属性,转换的结果将简单地插入到JSP页面,作为处理<x:transform> 操作的结果。当样式表用于将数据从XML转换成HTML时尤其有用,如清单3所示:
|
在本例中,使用 <c:import> 标记来读取RSS反馈和适当的样式表。样式表的输出结果是HTML,通过忽略<x:transform>的var和result 属性来直接显示。图1显示了实例结果:
与<x:parse>的systemId 属性一样,<x:transform>的xmlSystemId 和 xsltSystemId 属性用于解析XML文件中相关的路径。在这种情况下,xmlSystemId 属性应用于根据标记的 xml属性值提供的文件,而xsltSystemId 属性用于解析根据标记的xslt属性规定的样式表中的相关路径。
如果正在推动文件 转换的样式表使用了参数,我们使用<x:param> 标记来规定这些参数。如果参数存在,那么这些标记必须在<x:transform> 标记主体内显示。如果根据主体内容规定了要被转换的XML文件,那么它必须先于任何 <x:param> 标记。
<x:param> 标记有两种必要的属性 -- name 和 value -- 就象本系列 第2部分 和 第3部分 中讨论的<c:param> 和 <fmt:param> 标记一样。
XML文件的分解和转换操作都是基于整 个文件来进行。但是,在您将文件转换成一种可用的格式之后,一项应用程序通常只对文件中包含的一部分数据感兴趣。鉴于这一原因,xml 库包括多个标记来接入和控制XML文件内容的各个部分。
如果您已经阅读了本系列第2部分( 探讨核心 ),您将对这些xml 标记的名字非常熟悉。它们都基于JSTL core 库相应的标记。但是,这些core 库标记使用EL表达式,通过它们的value属性来接入JSP容器中的数据,而它们在xml 库中的副本使用XPath表达式,通过select属性接入XML文件中的数据。
XPath是引用XML文件中元素及它们的属性值和主体 内容的标准化符号。正如其名字代表的一样,这种符号与文件系统路径的表示方法类似,使用短斜线来分开XPath语句的组分。这些组分对映于XML文件的节 点,连续的组分匹配嵌套的Element。此外,星号可以用于作为通配符来匹配多个节点,括号内的表达式可以用于匹配属性值和规定索引。有多种在线参考资 料介绍XPath和它的使用(见 参考资料 )。
要显示XML文件的数据的一个Element,使 用<x:out> 操作,它与core 库的<c:out> 标记类似。 但是,<c:out> 使用名为value 和escapeXml的属性,<x:out> 的属性为select 和escapeXml:
|
当然,两者的区别在 于<x:out> 的select 属性值必须是XPath表达式,而<c:out> 的value 属性必须是EL表达式。两种标记的escapeXml 属性的意义是相同的。
清单4显示了<x:out> 操作的使用。注意,规定用于select 属性的XPath表达式由一个EL表达式规定为scoped变量,尤其是$rss。这一EL表达式根据将被求值的XPath语句来识别分解后的XML文 件。该语句在此处查找名为title且父节点名为channel的Element,从而选择它找到的第一个Element(根据表达式尾部[1]索引规 定)。这一<x:out> 操作的结果是显示这一Element的主体内容,关闭正在转义(Escaping)的XML字符。
清单4:使用<x:out>操作来显示XML Element的主体内容
|
除了<x:out>之 外,JSTL xml 库包括以下控制XML数据的标记:
- <x:set> ,向JSTL scoped 变量分配XPath表达式的值
- <x:if> ,根据XPath表达式的布尔值来条件化内容
- <x:choose>、<x:when>和<x:otherwise>,根据XPath表达式来 实施互斥的条件化
- <x:forEach> ,迭代根据XPath表达式匹配的多个Elements
每个这些标 记的操作与core库中相应的标记类似。例如,清单5中显示的<x:forEach>的使用, <x:forEach> 操作用于迭代XML文件中表示RSS反馈的所有名为item 的Element。注意,<x:forEach>主体内容中嵌套的两个<x:out> 操作中的XPath表达式与<x:forEach>标记正在迭代的节点相关。它们用于检索每个item element的子节点link 和 title。
清单5:使用<x:out>
和<x:forEach>操作来选择和显示XML数据
|
清单5中JSP程序代码的输出结果与 清单3 类似,它在 图1 中显示。xml 库以XPath为导向的标记提供备选的样式表来转换XML内容,尤其是当最后的输出结果是HTML的情况。
|
|
JSTL 第4个也是最后一个操作是sql定制标记库。正如其名字代表的一样,该库提供与关系数据库交互的标记。尤其是sql 库定义规定数据源、发布查询和更新以及将查询和更新编组到事务处理中的标记。
Datasource
Datasource是获得
数据库连接的工厂。它们经常实施某些格式的连接库来最大限度地降低与创建和初始化连接相关的开销。Java 2 Enterprise Edition
(J2EE)应用程序服务器通常内置了Datasource支持,通过 Java命名和目录接口( Java Naming and Directory
Interface,JNDI)它可用于J2EE应用程序。
JSTL的sql 标记依赖于Datasource来获得连接。实际上包括可选的dataSource 属性以明确规定它们的连接工厂作为 javax.sql.DataSource 接口实例,或作为JNDI名。
您可以使 用<sql:setDataSource> 标记来获得javax.sql.DataSource 实例,它采用以下两种格式:
|
第一种格式只需要 dataSource 属性,而第二种格式只需要url 属性。
通过提供JNDI名作为dataSource属性值,您可以使用第一种格 式来接入与JNDI名相关的datasource。第二种格式将创建新的datasource,使用作为url属性值提供的JDBC URL。可选的driver 属性规定实施数据库driver的类的名称,同时需要时user 和 password 属性提供接入数据库的登录证书。
对 于<sql:setDataSource>的任何一种格式而言,可选的var 和 scope 属性向scoped变量分配特定的datasource。如果var属性不存在,那么 <sql:setDataSource> 操作设置供sql 标记使用的缺省 datasource,它们没有规定明确的datasource。
您还可以使用 javax.servlet.jsp.jstl.sql.dataSource 参数来配置sql 库的缺省datasource。在实践中,在应用程序的Web.xml文件中添加与清单6中显示的类似的程序代码是规定缺省datasource最方便的 方式。使用<sql:setDataSource> 来完成这一操作要求使用JSP页面来初始化该应用程序,因此可以以某种方式自动运行这一页面。
清
单6:使用JNDI名来设置JSTL在web.xml部署描述符中的缺省datasource
|
在 建立了datasource接入之后,您可以使用<sql:query> 操作来执行查询,同时使用<sql:update> 操作来执行数据库更新。查询和更新使用SQL语句来规定,它可以是使用基于JDBC的java.sql.PreparedStatement 接口的方法来实现参数化。参数值使用嵌套的<sql:param> 和 <sql:dateParam> 标记来规定。
支 持以下三种<sql:query> 操作:
|
前两种格式只要求sql 和 var 属性,第三种格式只要求var 属性。
var 和 scope 属性规定存储查询结果的scoped 变量。maxRows 属性可以用于限制查询返回的行数,startRow 属性允许忽略一些最开始的行数(如当结果集(Result set)由数据库来构建时忽略)。
在 执行了查询之后,结果集被分配给scoped变量,作为javax.servlet.jsp.jstl.sql.Result 接口的一个实例。这一对象提供接入行、列名称和查询的结果集大小的属性,如表1所示:
表 1:javax.servlet.jsp.jstl.sql.Result 接口定义的属性
属 性 | 说明 |
rows | 一排SortedMap 对象,每个对象对映列名和结果集中的单行 |
rowsByIndex | 一排数组,每个对应于结果集中的 单行 |
columnNames | 一排对结果集中的列命名的字符串,采用与rowsByIndex属性 相同的顺序 |
rowCount | 查询结果中总行数 |
limitedByMaxRows | 如 果查询受限于maxRows 属性值为真 |
在这些属性中,rows 尤其方便,因为您可以使用它来在整个结果集中进行迭代和根据名字访问列数据。我们在 清单7 中阐述了这一操作,查询的结果被分配到名为queryResults的scoped变量 中,然后使用core 库中的<c:forEach>标记来迭代那些行。嵌套的<c:out> 标记利用EL内置的Map 收集支持来查找与列名称相对应的行数据。(记得在 第1部分 ,${row.title}和${row["title"]} 是相等的表达式。)
清 单7还展示了使用<sql:setDataSource> 来关联datasource 和scoped变量,它由<sql:query> 操作通过其dataSource 属性随后接入。
清单7:使用<sql:query>来查询数据库,使用<c:forEach>来迭代整
个结果集
|
图2显示了清单7中JSTL程序代码的实 例页面输出结果。注意:清单7中<sql:query>操作主体中出现的SQL语句为参数化语句。
在<sql:query> 操作中,SQL语句根据主体内容来规定,或者使用?字符,通过sql 属性实现参数化。对于SQL语句中每个这样的参数来说,应有相应的<sql:param> 或 <sql:dateParam> 操作嵌套到<sql:query> 标记的主体中。<sql:param> 标记只采用一种属性 -- value --来规定参数值。此外,当参数值为字符串时,您可以忽略value 属性并根据<sql:param> 标记的主体内容来提供参数值。
表 示日期、时间或时间戳的参数值使用<sql:dateParam> 标记来规定,使用以下语法:
|
对 于<sql:dateParam>来说,value 属性的表达式必须求 java.util.Date 类实例的值,同时type 属性值必须是date、time或timestamp,由SQL语句需要那类与时间相关的值来决定。
与<sql:query> 一样,<sql:update> 操作支持三种格式:
|
sql 和dataSource 属性有与<sql:query>相同的<sql:update> 语义。同样,var 和 scope 属性可以用于规定scoped变量,但在这种情况下,分配给scoped变量的值将是java.lang.Integer 的一个实例,显示作为数据库更新结果而更改的行数。
事 务处理用于保护作为一个组必须成功或失败的一系列数据库操作。事务处理支持已经嵌入到JSTL的sql 库中,通过将相应的<sql:query>和<sql:update>操作嵌套 到<sql:transaction>标记的主体内容中,从而将一系列查询和更新操作打包到一个事务处理中也就显得微不足道了。
<sql:transaction> 语法如下:
|
<sql:transaction> 操作没有必需的属性。如果您忽略了dataSource 属性,那么使用JSTL的缺省datasource。isolation 属性用于规定事务处理的隔离级别,它可以是read_committed、read_uncommitted、repeatable_read或 serializable。如果您未规定这一属性,事务处理将使用datasource的缺省隔离级别。
您可能希望所有嵌套的查询和更新 必须使用与事务处理相同的datasource。实际上,嵌套到<sql:transaction>操作中 的<sql:query> 或 <sql:update> 不能用于规定dataSource 属性。它将自动使用与周围的<sql:transaction>标记相关的datasource (显性或隐性)。
清单8显 示了如何使用<sql:transaction> 的一个实例:
清单:使
用<sql:transaction>来将数据库更新联合到事务处理中
|
|
|
JSTL 的xml 和 sql 库使用定制标记,从而能够在JSP页面上实施复杂的功能,但是在您的表示层实施这类功能可能不是最好的方法。
对于 多位开发人员长期编写的大型应用程序来说,实践证明,用户接口、基本的业务逻辑和数据仓库之间的严格分离能够长期简化软件维护。广泛流行的模式/视图/控 制器( Model-View-Controller,MVC)设计模板是这一“最佳实践”的公式化。在J2EE Web应用程序领域中,模式是应用程序的业务逻辑,视图是包含表示层的JSP页面。(控制器是form handlers和其它服务器端机制,使浏览器操作能够开始更改模式并随后更新视图。) MVC规定应用程序的三个主要elements--模式、视图和控制器 --相互之间有最小的相关性,从而限制相互之间的交互到统一、精心定义的接口。
应 用程序依赖XML文件来进行数据交换以及关系数据库来提供数据永久性都是应用程序业务逻辑(也就是其模式)的特征。因此,使用MVC设计模板建议无需在应 用程序的表示层(也就是其视图)反映这些实施细节。如果JSP用于实施表示层,那么使用 xml 和 sql 库将违反MVC,因为它们的使用将意味着在表示层内暴露基本业务逻辑的elements。
鉴于这一原因,xml 和 sql 库最适用于小型项目和原型工作。应用程序服务器对JSP页面的动态编译也使得这些库中的定制标记可以用于作为调试工具。
|
|
在 本系列中,我们讨论了4个JSTL定制标记库的功能及它们的使用。在 第1部分 和 第2部分 ,我们讨论通过El和core 库标记的使用,您如何在许多常见情况下避免JSP脚本程序。 第3部分 关注使用fmt 库来本地化Web内容。
在最后一部分,我们讨论了 xml 和 sql 库的功能。如果您愿意接受将业务逻辑包含到表示层的结果,这两个库中的标记都使其能够非常轻松地将XML文件和关系数据库中的内容结合到JSP页面。这两 个库还展示了当集成<sql:query> 和<c:forEach>时,JSTL库如何构建和集成,以及xml 库利用<c:import> 操作的能力。
|
|
- 您
可以参阅本文在 developerWorks 全球站点上的 英文原文
.
- 下载Weblog实例应用程序的 源代码
。
-
JSTL Web site
是深入了解JSTL不错的起点。
-
JSTL 1.0 Specification
是EL和四个JSTL标记库最权威的参考资料。
-
Jakarta Taglibs
项目是JSTL 1.0参考实现的主页。
- Shawn
Bayern 撰写的 JSTL in Action
Manning,2002
年)出色地讨论了由参考实现领导编写的全部 JSTL 功能。
- David Geary 是一位很受欢迎的
Java 编程方面的作者,他还著有一部关于 JSTL 的书籍,名为 Core JSTL
(Prentice-Hall and Sun
Microsystems Press, 2002)。
-
JSPTags.com
是一个 JSP 参考资料目录,它尤其着重于定制标记库方面的内容。
- Sun的 Java Web Services Tutorial
的一部分也涉及到了对 JSTL
的讨论。
- 阅读James Lewin的“ RSS新闻反馈简介
”( developerWorks
,
2000年11月)以了解更多关于RSS的信息。
- Mark Colan 在“ Putting XSL transformations to work
” ( developerWorks
,
2001年10月)提供了XSL的介绍性概述。
- 参阅Parand Tony Darugar撰写的“ Effective XML processing with DOM and XPath in Java
”(
developerWorks
, 2002年5月)以更好地了解XPath及其与文件对象模式( Document Object
Model,DOM)的关系.
- 通过动手实践指南“ 使用 JDBC 构建基于 Web 的应用程序
”( developerWorks
,
2001年12月)来全面了解JDBC。
- 通过学习“ Using JSPs and custom tags within VisualAge for Java
and WebSphere Studio
” ( WebSphere
Developer Domain
) ,动手实践 WBOnline,这篇文章演示了如何使用 servlet、JSP
页面及定制标记库
- 通过Jeff Wilson的优秀文章“ 使用定制标记控制 JSP 页面
” ( developerWorks
,2002
年 1 月)来学习关于定制标记库的全部内容。
- Noel Bergman 的文章“ JSP 标记库:着意设计的更好的可用性
”( developerWorks
,2001
年 12 月)向您显示了声明性标记是如何帮助改善 JSP 页面的可用性。
- 在 developerWorks
Java 技术专区
可以找到数百篇有关
Java 技术的参考资料。
|
|
Mark Kolb 是一位在德克萨斯州奥斯汀市(Austin)工作的软件工程师。他常就服务器端 Java 这一主题在业界演讲,而且还是 Web Development with JavaServer Pages, 第二版 一书的合著者。可以通过 mak@taglib.com 与 Mark联系。 |
相关推荐
### JSTL入门第四部分:访问SQL和XML内容 #### 一、引言 随着互联网技术的发展,Web应用程序越来越依赖于多个子系统的集成。在这个过程中,数据交换成为了至关重要的环节。其中,SQL 和 XML 是两种最常用的数据交换...
- **第四部分:面向程序员的JSTL**(第14章及以后) - **第14章:配置与集成** - 讲解如何在项目中正确配置JSTL环境。 - 介绍如何将自定义Java代码与JSTL标签库结合使用。 - **后续章节** - 进一步探讨高级主题...
#### 第4章 四个作用域 - **作用域概念**:介绍PageScope、RequestScope、SessionScope和ApplicationScope四种作用域的区别。 - **例子:在线列表**:通过一个具体的应用案例来展示不同作用域的应用场景。 #### 第5...
#### 第四讲:Java Web 开发环境配置 ##### 1. 开发工具 - **Tomcat**:一个开源的 Java Web 容器,支持 JSP 和 Servlet。 - **集成开发环境**:Eclipse、NetBeans、IntelliJ IDEA 等。 ##### 2. Tomcat 配置 - **...
本资源包含"JAVA WEB从入门到精通"这本书随书附带的第2到第10章的源代码,这些章节通常涵盖了Web开发的基础到进阶内容。 1. **基础概念**:Java Web开发首先涉及Servlet和JSP(JavaServer Pages),它们是构建动态...
2. **第4章**:这个章节可能深入到HTTP协议的理解,讲解如何使用Servlet处理HTTP请求和响应。可能会涉及请求方法(GET、POST等)、请求头、请求参数以及响应状态码等概念。 3. **第5章**:这一章可能涵盖了JSP的...
3. **JSP动作标签**:了解如何使用JSTL(JavaServer Pages Standard Tag Library)和其他第三方标签库,如Struts Taglib,提高代码可读性和复用性。 4. **EL(Expression Language)**:EL是一种简洁的表达式语言,...
### JSP快速入门教程知识点详解 #### 一、JSP与Java的关系 JSP(Java Server Pages)是一种基于Java技术的动态网页...以上内容概述了JSP快速入门所需的基础知识和技术要点,对于初学者来说是非常有价值的参考资料。
2. **AJAX与JSP**:通过异步JavaScript和XML技术,可以实现页面部分刷新,提升用户体验。 3. **MVC框架**:如Spring MVC、Struts2等,基于JSP构建更复杂的Web应用。 通过“jsp动态网站技术入门与提高2”的学习,你...
- **JSTL核心标签**:学习fmt、sql、function、xml和core等不同标签库的使用方法。 ### 第七课:JSP自定义标签 - **自定义标签的创建**:通过定义Taglib和Tag类,了解如何创建自己的JSP标签。 - **自定义标签的使用...
这一章会介绍JSTL的core、fmt、sql、xml等核心标签库,以及如何在项目中引入和使用它们。 5. **第7章:Servlet与JSP的关系** JSP的本质是Servlet,本章会深入讲解JSP到Servlet的转换过程,以及Servlet在JSP中的...
第四章:Servlet与JSP概述 Servlet是Java Web的核心组件,用于处理HTTP请求。JSP(Java Server Pages)则提供了更便捷的视图层开发方式。本章会介绍两者的概念、生命周期以及如何编写简单的Servlet和JSP页面。 第五...
在"ch16"这个文件中,很可能是第16章的内容,可能涉及进阶话题,如AJAX(Asynchronous JavaScript and XML)技术的整合,或者安全性的最佳实践,如防止SQL注入和跨站脚本攻击。 总的来说,通过这个教程,你将能够...
- 运行:安装完成后,通过桌面快捷方式启动MyEclipse,创建第一个"HelloWorld"项目,理解基本的项目结构和工作流程。 2. **Servlet入门**: - Servlet是Java Web应用程序的核心组件,用于处理HTTP请求。 - 在...
4. **安全控制**:JSP可以配合过滤器(Filter)和Servlet进行权限验证,确保只有授权用户才能访问特定资源,如管理后台或付款页面。 5. **支付集成**:电子商务系统通常需要集成第三方支付网关,如PayPal或Stripe。...
主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...
4. **第四章:JSP技术基础知识** - 介绍JSP的基本语法、指令、内置对象、表达式和脚本元素,以及如何将动态内容与HTML结合。 5. **第五章:Servlet技术基础知识** - 详细讲解Servlet的工作原理、生命周期、API以及...