JAVA教程之JAVA新手艺-JSP
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。js 作者:神仙掌事情室在Sun正式公布JSP(JavaServerPages)以后,这类新的Web使用开辟手艺很快引发了人们的存眷。JSP为创立高度静态的Web使用供应了一个共同的开辟情况。
依照Sun的说法,JSP可以顺应市场上包含ApacheWebServer、IIS4.0在内的85%的服务器产物。即便您对ASP“一往情深”,我们以为,存眷JSP的开展仍然很有需要。
㈠JSP与ASP的复杂对照
JSP与Microsoft的ASP手艺十分类似。二者都供应在HTML代码中夹杂某种程序代码、由言语引擎注释实行程序代码的才能。在ASP或JSP情况下,HTML代码次要卖力形貌信息的显现款式,而程序代码则用来形貌处置逻辑。一般的HTML页面只依附于Web服务器,而ASP和JSP页面必要附加的言语引擎剖析和实行程序代码。程序代码的实行了局被从头嵌进到HTML代码中,然后一同发送给扫瞄器。ASP和JSP都是面向Web服务器的手艺,客户端扫瞄器不必要任何附加的软件撑持。
ASP的编程言语是VBScript之类的剧本言语,JSP利用的是Java,这是二者最分明的区分。别的,ASP与JSP另有一个更加实质的区分:两种言语引擎用完整分歧的体例处置页面中嵌进的程序代码。在ASP下,VBScript代码被ASP引擎注释实行;在JSP下,代码被编译成Servlet并由Java假造机实行,这类编译操纵仅在对JSP页面的第一次哀求时产生。
㈡运转情况
Sun公司的JSP主页在http://www.javasoft.com/products/jsp/index.html,从这里还能够下载JSP标准,这些标准界说了供给商在创立JSP引擎时所必需服从的
一些划定规矩。
实行JSP代码必要在服务器上安装JSP引擎。此处我们利用的是Sun的JavaServerWebDevelopmentKit(JSWDK)。为便于进修,这个软件包供应了大批可供修正的示例。安装JSWDK以后,只需实行startserver命令便可启动服务器。在默许设置下服务器在端口8080监听,利用http://localhost:8080便可翻开缺省页面。
在运转JSP示例页面之前,请注重一下安装JSWDK的目次,出格是“work”子目次下的内容。实行示例页面时,能够在这里看到JSP页面怎样被转换成Java源文件,然后又被编译成class文件(即Servlet)。JSWDK软件包中的示例页面分为两类,它们大概是JSP文件,大概是包括一个表单的HTML文件,这些表单均由JSP代码处置。与ASP一样,JSP中的Java代码均在服务器端实行。因而,在扫瞄器中利用“检察源文件”菜单是没法看到JSP源代码的,只能看到了局HTML代码。一切示例的源代码均经由过程一个独自的“examples”页面供应。
㈢JSP页面示例
上面我们剖析一个复杂的JSP页面。您能够在JSWDK的examples目次下创立别的一个目次寄存此文件,文件名字能够恣意,但扩大名必需为.jsp。从上面的代码清单中能够看到,JSP页面除比一般HTML页面多一些Java代码外,二者具有基础不异的布局。Java代码是经由过程<%和%>标记到场到HTML代码两头的,它的次要功效是天生并显现一个从0到9的字符串。在这 个字符串的后面和前面都是一些经由过程HTML代码输入的文本。
<HTML>
<HEAD><TITLE>JSP页面</TITLE></HEAD>
<BODY>
<%@pagelanguage="java"%>
<%!Stringstr="0";%>
<%for(inti=1;i<10;i++){
str=str+i;
}%>
JSP输入之前。
<P>
<%=str%>
<P>
JSP输入以后。
</BODY>
</HTML>
这个JSP页面能够分红几个部分来剖析。
起首是JSP指令。它形貌的是页面的基础信息,如所利用的言语、是不是保持会话形态、是不是利用缓冲等。JSP指令由<%@入手下手,%>停止。在本例中,指令“<%@pagelanguage="java"%>”只复杂地界说了本例利用的是Java言语(以后,在JSP标准中Java是独一被撑持的言语)。
接上去的是JSP声明。JSP声明能够当作是界说类这一条理的变量和办法的中央。J
SP声明由<%!入手下手,%>停止。如本例中的“<%!Stringstr="0";%>”界说了一个字符串变量。在每项声明的前面都必需有一个分号,就象在一般Java类中声明成员变量一样。
位于<%和%>之间的代码块是形貌JSP页面处置逻辑的Java代码,如本例中的for轮回所示。
最初,位于<%=和%>之间的代码称为JSP表达式,如本例中的“<%=str%>”所示。JSP表达式供应了一种将JSP天生的数值嵌进HTML页面的复杂办法。
2、会话形态办理
会话形态保持是Web使用开辟者必需面临的成绩。有多种办法能够用来办理这个成绩,如利用Cookies、埋没的表单输出域,或间接将形态信息附加到URL中。JavaServlet供应了一个在多个哀求之间延续无效的会话对象,该对象同意用户存储和提取会话形态信息。JSP也一样撑持Servlet中的这个观点。
在Sun的JSP指南中能够看到很多有关隐含对象的申明(隐含的寄义是,这些对象能够间接援用,不必要显式地声明,也不必要专门的代码创立实在例)。比方request对象,它是HttpServletRequest的一个子类。该对象包括了一切有关以后扫瞄器哀求的信息,包含Cookies,HTML表单变量等等。session对象也是如许一个隐含对象。这个对象在第一个JSP页面被装载时主动创立,并被联系关系到request对象上。与ASP中的会话对象类似,JSP中的session对象关于那些但愿经由过程多个页面完成一个事件的使用长短常有效的。
为申明session对象的详细使用,接上去我们用三个页面摹拟一个多页面的Web使用。第一个页面(q1.html)仅包括一个请求输出用户名字的HTML表单,代码以下:
<HTML>
<BODY>
<FORMMETHOD=POSTACTION="q2.jsp">
请输出您的姓名:
<INPUTTYPE=TEXTNAME="thename">
<INPUTTYPE=SUBMITVALUE="SUBMIT">
</FORM>
</BODY>
</HTML>
第二个页面是一个JSP页面(q2.jsp),它经由过程request对象提取q1.html表单中的thename值,将它存储为name变量,然后将这个name值保留到session对象中。session对象是一个名字/值对的汇合,在这里,名字/值对中的名字为“
thename”,值即为name变量的值。因为session对象在会话时代是一向无效的,因而这里保留的变量对后继的页面也无效。q2.jsp的别的一个义务是扣问第二个成绩。上面是它的代码:
<HTML>
<BODY>
<%@pagelanguage="java"%>
<%!Stringname="";%>
<%
name=request.getParameter("thename");
session.putValue("thename",name);
%>
您的姓名是:<%=name%>
<p>
<FORMMETHOD=POSTACTION="q3.jsp">
您喜好吃甚么?
<INPUTTYPE=TEXTNAME="food">
<P>
<INPUTTYPE=SUBMITVALUE="SUBMIT">
</FORM>
</BODY>
</HTML>
第三个页面也是一个JSP页面(q3.jsp),次要义务是显现问答了局。它从session对象提取thename的值并显现它,以此证实固然该值在第一个页面输出,但经由过程session对象得以保存。q3.jsp的别的一个义务是提取在第二个页面中的用户输出并显现它:
<HTML>
<BODY>
<%@pagelanguage="java"%>
<%!Stringfood="";%>
<%
food=request.getParameter("food");
Stringname=(String)session.getValue("thename");
%>
您的姓名是:<%=name%>
<P>
您喜好吃:<%=food%>
</BODY>
</HTML>
3、援用JavaBean组件
JavaBean是一种基于Java的软件组件。JSP关于在Web使用中集成JavaBean组件供应了完美的撑持。这类撑持不但能延长开辟工夫(能够间接使用经测试和可托任的已有组件,制止了反复开辟),也为JSP使用带来了更多的可伸缩性。JavaBean组件能够用来实行庞大的盘算义务,或卖力与数据库的交互和数据提取等。假如我们有三个JavaBean,它们分离具有显现旧事、股票代价、天色情形的功效,则创立包括一切这三种功效的Web页面只必要实例化这三个Bean,利用HTML表格将它们顺次定位就能够了。
为申明在JSP情况下JavaBean的使用,我们创立了一个名为TaxRate的Bean。它有两个属性,即Product(产物)和Rate(税率)。两个set办法分离用来设置这两个属性,两个get办法则用于提取这两个属性。在实践使用中,这类Bean一样平常应该从数据库提取税率值,此处我们简化了这个历程,同意恣意设定税率。上面是这个Bean的代码清单:
packagetax;
publicclassTaxRate{
StringProduct;
doubleRate;
publicTaxRate(){
this.Product="A001";
this.Rate=5;
}
publicvoidsetProduct(StringProductName){
this.Product=ProductName;
}
publicStringgetProduct(){
return(this.Product);
}
publicvoidsetRate(doublerateValue){
this.Rate=rateValue;
}
publicdoublegetRate(){
return(this.Rate);
}
}
在JSP页面中使用上述Bean要用到<jsp:useBean>标志。依附于详细利用的JSP引擎的分歧,在那边设置和怎样设置Bean的办法也大概略有分歧。本文将这个Bean的.class文件放在c:jswdk-1.0examplesWEB-INFjspeansax目次下,这里的tax是一个专门寄存该Bean的目次。上面是一个使用上述Bean的示例页面:
<HTML>
<BODY>
<%@pagelanguage="java"%>
<jsp:useBeanid="taxbean"scope="application"class="tax.TaxRate"/>
<%taxbean.setProduct("A002");
taxbean.setRate(17);
%>
利用办法1:<p>
产物:<%=taxbean.getProduct()%><br>
税率:<%=taxbean.getRate()%>
<p>
<%taxbean.setProduct("A003");
taxbean.setRate(3);
%>
<b>利用办法2:</b><p>
产物:<jsp:getPropertyname="taxbean"property="Product"/>
<br>
税率:<jsp:getPropertyname="taxbean"property="Rate"/>
</BODY>
</HTML>
在<jsp:useBean>标志内界说了几个属性,个中id是全部JSP页面内该Bean的标识,scope属性界说了该Bean的保存工夫,class属性申明了该Bean的类文件(从包名入手下手)。
这个JSP页面不但利用了Bean的set和get办法设置和提取属性值,还用到了提取Bean属性值的第二种办法,即便用<jsp:getProperty>标志。<jsp:getProperty>中的name属性即为<jsp:useBean>中界说的Bean的id,它的property属性指定的是方针属性的名字。
现实证实,JavaServlet是一种开辟Web使用的幻想构架。JSP以Servlet手艺为基本,又在很多方面作了改善。JSP页面看起来象一般HTML页面,但它同意嵌进实行代码,在这一点上,它和ASP手艺十分类似。使用跨平台运转的JavaBean组件,JSP为分别处置逻辑与显现款式供应了出色的办理计划。JSP势必成为ASP手艺的无力合作者。
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 是一种使用者不需花费很多时间学习的语言 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 是一种语言,用以产生「小应用程序(Applet(s)) 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
页:
[1]