第二个灵魂 发表于 2015-1-18 11:28:03

JAVA网站制作之用JSTL完成JSP使用程序疾速开辟

还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。js|程序在这篇文章中,我将为人人先容一种基于JSP且天真风趣的手艺,那就是JSTL.JSTL全称为JavaServerPagesStandardTagLibrary.固然JSP已变的十分盛行,但JSTL在基于SQL数据库的复杂、疾速的前背景开辟中仍是没有被普遍的使用。一旦你懂得了JSTL,你就会懂得到它的长处,并发明在你作为程序员的一样平常事情中,它已被使用到了良多方面。我这里假定你已熟习HTML,能了解基础的SQL语句,和Jsp的基本常识。由于上面的内容要触及到这些常识。

  JSTL是一个已被尺度化的标志库汇合,她撑持迭代、前提、XML文档的剖析,国际化,和使用SQL与数据库交互的功效。后来,JSTL标准一向由JCP(JavaCommunityprocessprogram)构造下的JSR#52开展完美,"JCP负担着Java手艺开展的重担"--官方网站如许评价。JCP作为一个开放性的构造,他同时吸取正式的会员和非正式会员.JCP关于Java手艺标准的构成与开展发扬了主要的主导感化。JSTL次要包含四个基础部分的标志库:Core,XML,国际化,和对SQL的撑持。因为这篇文章的次要是以个中的SQL部分的使用来疾速懂得JSTL,以是我们这篇文章只先容了Core和SQl标签库的一些基础功效。

  这项手艺复杂并且功效壮大,足以和PHP、ColdFusion一较高低.他在拓展Java的使用范畴方面有充足的才能,这些范畴不但包含年夜型的可再晋级的Web使用程序,关于仅具有复杂主页的Web程序一样没成绩。这同意你在创建站点的时分能够制止那些常常思索的XML的集成和与数据库的毗连。正如我方才提到的一样,JSTL的关头点就是复杂易用。另有,那就是JSTL是基于JSP构建的,他同意我们利用一切的Java手艺,这一点我们有需要记着。

  入手下手之前,我们必要弄分明如何才干运转JSTL.因为是基于JSP手艺的,以是我们运转它就必要一个可以编译JSP的容器,这里我们利用收费的JSP容器:TOMCAT(http://jakarta.apache.org/tomcat/index.html).至于怎样安装这个产物已超越了本文所报告的局限。毫无疑问,这个软件产物如今已很提高了,并且关于怎样安装的文档材料也是良多。这里假定您已安装并乐成设置了这个容器,你只需再安装JSTL运转所需文件便可,它能够从这里下载http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html你不必要真实的安装它,只必要将个中的.JAR文件包括到你的使用程序的WEB-INF/lib目次下便可,稍后我会详细说到该怎样做.

  由于我们要在一个撑持尺度SQL的数据库上运转程序,你必要在你的电脑上安装有一个数据库。数据库的范例有很多种,这里我选择了MySql。我之以是选择他的缘故原由在于起首,我们必要展现JSTL关于机关复杂疾速的使用程序范畴所起的感化,同时能和一向在这个范畴处于主导位置的PHP+MySql有所对照;第二点那就是MySql是能够收费下载并包括有一个针对JAVA的JDBC驱动.总之,为了利用上面的例子,你必要下载一个MYSQL服务器(http://www.mysql.com/products/mysql/index.html;MySqlConnector/JJDBC驱动程序http://www.mysql.com/products/connector-j/index.html;另有就是MySqlcontrolcenterhttp://www.mysql.com/products/connector-j/index.html),这个产物可让你十分简单的操纵办理Mysql数据库文件。全体下载完成后,你必要安装mysql和mysqlControlCenter。别的另有就是mysql的JDBC驱动必要放到你的web使用程序中的/Web-INF/lib目次中。

  在创立程序代码之前,你必要创立并填写数据库表。关于这方面的主题文章也相称普遍,详细怎样操纵超越了本文的局限。这里我保举给你我们下面说起的一个可视化的办理工具MySQLControlCenter.你能够用他来创立一个用来运转程序的测试用户,数据库和创立一个测试表,并填写多少纪录。关于上岸名及暗码数据库称号这些设置情况参数,你应当记着他们,稍后必要使用到我们的代码中。

  如今,你就能够筹办创立本人的第一个JSTL使用程序了它必要我们做上面一些事变:

  全部实例程序代码包含两个文件Hello.jsp和Continue.jsp

  Hello.jsp文件同意你输出数据库称号、上岸称号、上岸暗码、数据库表名。Continue.jsp:承受Hello.jsp中的数据信息而且毗连数据库,并对数据库中的表实行一个Select哀求.

  上面是这个体系一切的代码文件,我将一一举行注释。这些代码相称复杂,关于代码的布局,我信任你即便没有我的注释你也能了解的.

1:<!--Hello.jsp-->
2:<html>
3:<head>
4:<title>Hello</title>
5:</head>
6:<bodybgcolor="#ffffff">
7:<h1>Please,enterallnecessaryinformationandclickOK.</h1>
8:<formmethod="post"action="Continue.jsp">
9:<br>Yourlogintodatabase:
<inputtype="text"name="login"size="15">
10:<br>Yourpasswordtodatabase:
<inputtype="password"name="password"size="15">
11:<br>Yourdatabasename:
<inputtype="text"name="database"size="15">
12:<br>Yourdatabasetable:
<inputtype="text"name="table"size="15">
13:<br><br><inputtype="submit"name="submit"value="OK">
14:</form>
15:</body>
16:</html>

  (请注重文本左边的数字只是为你供应一些标志信息,你不必要将他们输出到你的代码文件中。)

  下面就是一切Hello.jsp的源代码,很惊异吧,他仅仅是地道的HTML代码,就这么复杂,我想应当没有正文的需要了.我之以是将这些代码片断包括进文章中就是为了展现一下JSTL集成到那些必要疾速扩大分外功效的HTML站点中是何等的复杂.让我再为你展现一下Continue.jsp的全体代码,看过以后,你就会对JSTL有些懂得了。

1:<!--Continue.jsp-->
2:<%@taglibprefix="c"uri="http://java.sun.com/jstl/core"%>
3:<@taglibprefix="sql"uri="http://java.sun.com/jstl/sql"%>
4:<c:setvar="h"value="localhost"/>
5:<c:setvar="l"value="${param.login}"/>
6:<c:setvar="p"value="${param.password}"/>
7:<c:setvar="d"value="${param.database}"/>
8:<c:setvar="t"value="${param.table}"/>
9:<html>
10:<head>
11:<title>Continue</title>
12:</head>
13:<bodybgcolor="#ffffff">
14:<sql:setDataSourcedriver="com.mysql.jdbc.Driver"
url="jdbc:mysql://${l}/${d}?user=${u}&password=${p}"/>
15:<sql:queryvar="result">
16:SELECT*FROM<c:outvalue="${t}"/>
17:</sql:query>
18:<c:forEachvar="row"items="${result.rowsByIndex}">
19:<c:outvalue="${row}"/><br>
20:</c:forEach>
21:</body>
22:</html>

(请注重文本左边的数字只是为你供应一些标志信息,你不必要将他们输出到你的代码文件中。)

  这就是我们一切的代码了,是否是十分不错?如今我门来注释一下下面这些代码的感化。

  行1是HTML的正文申明。

  行2--3这些JSP标签是为了援用内部的标签库,更切实的说这里是援用了JSTL库中的Core和SQL标签库部分。我们为他们都设置了前缀称号,以便于我们经由过程这些前缀称号会见被引进的标签库中的功效办法。

  行4---8正如Hello.jsp真正运转的模样,他将哀求continue.jsp,Continue.jsp取得哀求后就必要失掉并剖析来自Hello.jsp的多少变量,我们利用了如许的体例${param.YOUR_VAR}。在第4行<c:set标签,将变量${h}设置为"localhost",第五行变量${l}将猎取我们在Hello.jsp中的login文本域中输出的信息,第6,7,8行的变量将分离取得来自Hello.jsp顶用户所输出的暗码,数据库称号,数据表称号。

  行9--13是一些我常常用来罕见HTML网页头的复杂的HTML标签,即刻,主要的功效即刻要到了。

  行14,我们试图用我们先前取得的mysql驱动程序(com.mysql.jdbc.Driver)创建数据库毗连,在URL中,我们指明数据库毗连所必要的参数,象数据库称号,主机称号,上岸名及上岸暗码。依此,我们能够用别的任何的JDBC驱动程序毗连其绝对的数据库。假如我们必要毗连其他的SQL数据库,只需变动这个URL就够了。

  行15--17这里我们实行了一个Select查询,请出格注重第16行,我们利用了另外一个JSTL功效函数<c:out用来输入我们所猎取的数据表称号,这里我们一样可使用其他的SQL命令,好比说INSERT,DELETE,等等。要实行这些没有前往值的查询哀求,你就必要利用<sql:updateJSTL功效函数了。他能够间接实行他们就象<SQL:query一样,只是实行它是不必要出格指定了局变量来存储语句实行前往的了局。

  行18--20既然我们实行了下面的SELECT查询语句,我们就应当把他的前往了局显现出来。<c:forEach就是JSTL中一个具有迭代功效的函数,实行它时,我们经由过程${result.rowsByIndex}将前往的每个数据行信息前往给变量${row},紧接着在第19行,我们经由过程<c:outvalue="${row}"/>显现前往的每一个数据行的第一个数据列中的值。只需你的数据表中包括的字段,你都能够经由过程改动变量${row}中的数字巨细来对哀求表中的恣意一个字段中的值对他们举行会见。

  行21--22是HTML页脚

  在你亲身创立JSTL使用程序过程当中,大概你还没有发明它有何等的壮大,但你应当可以意想到JSTL的功效函数的复杂和高效性,试想有了JSTL,整合出一个基于SQL的旧事专栏是多么的疾速,集成你现有的web站点是多么的简单。

  很好,我们的代码很简单了解的,即便一个非专业程序员的话,打个例如就算是一个计划师也可以读懂它,了解它,还大概举行部分的修正,最少是页面结构上的修正。

  正如我们入手下手的时分所提到的,为了使我们的JSTL代码一般的运转,我们必要安装MysqlConnector/J中的JAR文件,固然另有JSTL。由于我们利用了Tomcat这个JSp容器,你必要在Tomcat的文件目次Webapps下创立你本人的文件夹,将你的Hello.jsp、Continue.jsp文件放在你创立的文件目次中,在你创立的目次中你还要创立一个叫做WEB-INF的文件夹,将你的设置文件Web.xml放在内里,web.xml文件以下:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEweb-app
PUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app/>

  接上去我们还必要在WEB-INF下创立一个叫做lib的子目,并将以下文件放出来:

jstl.jar
saxpath.jar
standard.jar
mysql-connector-java-3.0.9-stable-bin.jar(注重,这个称号根据你的MysqlConnector/J版本分歧大概会有所变更)

  一切的这些信息您可以在JSTL或Tomcat手册中查阅的到,假如你想了解他们详细是怎样运转而又为何这么运转你就应当研读一下这些手册。不外为了匡助你疾速的把握JSTL的基础操纵,相干的常识我已作了先容。

  假如你利用的是其他的Jsp容器,那末就必要你浏览他们相干的手册材料。

  罗罗索索这么多,我还想再申明一点,这篇文章只是对JSTL手艺的基础的先容,并非完整手册。JSTL中包括有很多功效丰厚的函数用法来匡助你以简便疾速的体例完成你的Jsp开辟,我倡议人人读一些有关JSTL功效和它怎样与JavaBeans协同事情的更具体的文档材料,到终极你大概会发明他就是你等候已久的开辟平台。经由过程浏览本篇文章,你应当已可以创立一些复杂的基于SQL数据库的前背景使用了。


再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。

admin 发表于 2015-1-21 07:36:47

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

柔情似水 发表于 2015-1-30 11:10:55

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

若天明 发表于 2015-2-6 10:29:01

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

小魔女 发表于 2015-2-14 05:43:52

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

变相怪杰 发表于 2015-3-4 04:58:31

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

透明 发表于 2015-3-8 11:05:00

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

飘飘悠悠 发表于 2015-3-11 05:22:21

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

不帅 发表于 2015-3-17 21:09:34

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

再见西城 发表于 2015-3-25 02:39:16

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
页: [1]
查看完整版本: JAVA网站制作之用JSTL完成JSP使用程序疾速开辟