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

JAVA网页编程之jsp Servlet剧本元素、指令和预界说变量...

先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。js|servlet|变量|剧本12.1JSP剧本元素

  JSP剧本元素用来拔出Java代码,这些Java代码将呈现在由以后JSP页面熟成的Servlet中。剧本元素有三种格局:

表达式格局<%=expression%>:盘算表达式并输入其了局。
Scriptlet格局<%code%>:把代码拔出到Servlet的service办法。
声明格局<%!code%>:把声明到场到Servlet类(在任何办法以外)。
  上面我们具体申明它们的用法。

  12.1.1JSP表达式

  JSP表达式用来把Java数据间接拔出到输入。其语法以下:
<%=JavaExpression%>

  盘算Java表达式失掉的了局被转换成字符串,然后拔出到页面。盘算在运转时举行(页面被哀求时),因而能够会见和哀求有关的全体信息。比方,上面的代码显现页面被哀求的日期/工夫:
Currenttime:<%=newjava.util.Date()%>

  为简化这些表达式,JSP预界说了一组能够间接利用的对象变量。前面我们将具体先容这些隐含声明的对象,但关于JSP表达式来讲,最主要的几个对象及其范例以下:

request:HttpServletRequest;
response:HttpServletResponse;
session:和request联系关系的HttpSession
out:PrintWriter(带缓冲的版本,JspWriter),用来把输入发送到客户端
  上面是一个例子:
Yourhostname:<%=request.getRemoteHost()%>

  最初,假如利用XML的话,JSP表达式也能够写成上面这类情势:
<jsp:expression>
JavaExpression
</jsp:expression>

  请记着XML元素和HTML纷歧样。XML是巨细写敏感的,因而务必利用小写。有关XML语法的申明,请拜见《XML教程》

  12.1.2JSPScriptlet

  假如你要完成的义务比拔出复杂的表达式加倍庞大,可使用JSPScriptlet。JSPScriptlet同意你把恣意的Java代码拔出Servlet。JSPScriptlet语法以下:
<%JavaCode%>

  和JSP表达式一样,Scriptlet也能够会见一切预界说的变量。比方,假如你要向了局页面输入内容,可使用out变量:
<%
StringqueryData=request.getQueryString();
out.println("AttachedGETdata:"+queryData);
%>

  注重Scriptlet中的代码将被照搬到Servlet内,而Scriptlet后面和前面的静态HTML(模板文本)将被转换成println语句。这就意味着,Scriptlet内的Java语句并不是必定如果完全的,没有封闭的块将影响Scriptlet外的静态HTML。比方,上面的JSP片段夹杂了模板文本和Scriptlet:
<%if(Math.random()<0.5){%>
Havea<B>nice</B>day!
<%}else{%>
Havea<B>lousy</B>day!
<%}%>

  上述JSP代码将被转换成以下Servlet代码:
if(Math.random()<0.5){
out.println("Havea<B>nice</B>day!");
}else{
out.println("Havea<B>lousy</B>day!");
}

  假如要在Scriptlet外部利用字符“%>”,必需写成“%\>”。别的,请注重<%code%>的XML等价表达是:
<jsp:scriptlet>
Code
</jsp:scriptlet>

  12.1.3JSP声明

  JSP声明用来界说拔出Servlet类的办法和成员变量,其语法以下:
<%!JavaCode%>

  因为声明不会有任何输入,因而它们常常和JSP表达式或Scriptlet分离在一同利用。比方,上面的JSP代码片段输入自从服务器启动(或Servlet类被修改偏重新装载以来)以后页面被哀求的次数:
<%!privateintaccessCount=0;%>
自从服务器启动以来页面会见次数为:
<%=++accessCount%>

  和Scriptlet一样,假如要利用字符串“%>”,必需利用“%\>”取代。最初,<%!code%>的XML等价表达体例为:
<jsp:declaration>
Code
</jsp:declaration>

  12.2JSP指令

  JSP指令影响Servlet类的全体布局,它的语法一样平常以下:
<%@directiveattribute="value"%>

  别的,也能够把统一指令的多个属性分离起来,比方:
<%@directiveattribute1="value1"
attribute2="value2"
...
attributeN="valueN"%>

  JSP指令分为两品种型:第一是page指令,用来完成上面这类义务:导进指定的类,自界说Servlet的超类,等等;第二是include指令,用来在JSP文件转换成Servlet时引进其他文件。JSP标准也提到了taglib指令,其目标是让JSP开辟者可以本人界说标志,但JSP1.0不撑持该指令,有但愿它将成为JSP1.1的次要改善之一。

  12.2.1page指令

  page指令的感化是界说上面一个或多个属性,这些属性巨细写敏感。

import="package.class",大概import="package.class1,...,package.classN":

用于指定导进哪些包,比方:<%@pageimport="java.util.*"%>。import是独一同意呈现一次以上的属性。

contentType="MIME-Type"或contentType="MIME-Type;charset=Character-Set":

该属性指定输入的MIME范例。默许是text/html。比方,上面这个指令:
<%@pagecontentType="text/plain"%>。
和上面的Scriptlet效果不异:
<%response.setContentType("text/plain");%>

isThreadSafe="true|false"

默许值true标明Servlet依照尺度的体例处置,即假定开辟者已同步对实例变量的会见,由单个Servlet实例同时地处置多个哀求。假如取值false,标明Servlet应当完成SingleThreadModel,哀求大概是逐一进进,大概多个并行的哀求分离由分歧的Servlet实例处置。

session="true|false"

默许值true标明预界说变量session(范例为HttpSession)应当绑定到已有的会话,假如不存在已有的会话,则新建一个并绑定session变量。假如取值false,标明不会用到会话,试图会见变量session将招致JSP转换成Servlet时堕落。

buffer="sizekb|none"

该属性指定JspWriteout的缓存巨细。默许值和服务器有关,但最少应当是8KB。

autoflush="true|false"

默许值true标明假如缓存已满则革新它。autoflush很少取false值,false值暗示假如缓存已满则抛出非常。假如buffer="none",autoflush不克不及取false值。

extends="package.class"

该属性指出将要天生的Servlet利用哪一个超类。利用该属性应该非常当心,由于服务器大概已在用自界说的超类。

info="message"

该属性界说一个能够经由过程getServletInfo办法提取的字符串。

errorPage="url"

该属性指定一个JSP页面,一切未被以后页面捕捉的非常均由该页面处置。

isErrorPage="true|false"

该属性唆使以后页面是不是能够作为另外一JSP页面的毛病处置页面。默许值false。

language="java"

该属性用来唆使所利用的言语。今朝没有需要存眷这个属性,由于默许的Java是以后独一可用的言语。
  界说指令的XML语法为:
<jsp:directive.directiveTypeattribute=value/>

  比方,上面这个指令:
<%@pageimport="java.util.*"%>

  它的XML等价表达是:
<jsp:directive.pageimport="java.util.*"/>

  12.2.2include指令

  include指令用于JSP页面转换成Servlet时引进其他文件。该指令语法以下:
<%@includefile="relativeurl"%>

  这里所指定的URL是和收回援用指令的JSP页面绝对的URL,但是,与一般意义上的绝对URL一样,你能够使用以“/”入手下手的URL告知体系把URL视为从Web服务器根目次入手下手。包括文件的内容也是JSP代码,即包括文件能够包括静态HTML、剧本元素、JSP指令和举措。

  比方,很多网站的每一个页面都有一个小小的导航条。因为HTML框架存在很多成绩,导航条常常用页面顶端或右边的一个表格制造,统一份HTML代码反复呈现在全部网站的每一个页面上。include指令是完成该功效的十分幻想的办法。利用include指令,开辟者不用再把导航HTML代码拷贝到每一个文件中,从而能够更轻松地完成保护事情。

  因为include指令是在JSP转换成Servlet的时分引进文件,因而假如导航条改动了,一切利用该导航条的JSP页面都必需从头转换成Servlet。假如导航条修改不频仍,并且你但愿包括操纵具有尽量好的效力,利用include指令是最好的选择。但是,假如导航条修改十分频仍,你可使用jsp:include举措。jsp:include举措在呈现对JSP页面哀求的时分才会援用指定的文件,请拜见本文前面的详细申明。

  12.3实例:剧本元素和指令的使用

  上面是一个利用JSP表达式、Scriptlet、声明、指令的复杂例子。
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<TITLE>JavaServerPages</TITLE>
</HEAD>

<BODYBGCOLOR="#FDF5E6"TEXT="#000000"LINK="#0000EE"
VLINK="#551A8B"ALINK="#FF0000">
<CENTER>
<TABLEBORDER=5BGCOLOR="#EF8429">
<TR><THCLASS="TITLE">
JSP使用实例</TABLE>
</CENTER>
<P>
上面是一些使用各类JSP功效天生的静态内容:
<UL>
<LI><B>表达式.</B><BR>
你的主机名:<%=request.getRemoteHost()%>.
<LI><B>JSPScriptlet.</B><BR>
<%out.println("查询字符串:"+
request.getQueryString());%>
<LI><B>声明(和表达式).</B><BR>
<%!privateintaccessCount=0;%>
服务器启动以来会见次数:<%=++accessCount%>
<LI><B>指令(和表达式).</B><BR>
<%@pageimport="java.util.*"%>
以后日期:<%=newDate()%>
</UL>
</BODY>
</HTML>

  12.4JSP预界说变量

  为了简化JSP表达式和Scriptlet的代码,JSP供应了8个事后界说的变量(或称为隐含对象)。这些变量是request、response、out、session、application、config、pageContext和page。

  12.4.1request

  这是和哀求联系关系的HttpServletRequest,经由过程它能够检察哀求参数(挪用getParameter),哀求范例(GET,POST,HEAD,等),和哀求的HTTP头(Cookie,Referer,等)。严厉说来,假如哀求所用的是HTTP以外的其他协定,request能够是ServletRequest的子类(而不是HttpServletRequest),但在理论中几近不会用到。

  12.4.2response

  这是和应对联系关系的HttpServletResponse。注重,因为输入流(拜见上面的out)是带缓冲的,因而,假如已向客户端发送了输入内容,一般Servlet不同意再设置HTTP形态代码,但在JSP中倒是正当的。

  12.4.3out

  这是用来向客户端发送内容的PrintWriter。但是,为了让response对象更加有用,out是带缓存功效的PrintWriter,即JspWriter。JSP同意经由过程page指令的buffer属性调剂缓存的巨细,乃至同意封闭缓存。

  out一样平常只在Scriptlet内利用,这是由于JSP表达式是主动发送到输入流的,很少必要显式地援用out。

  12.4.4session

  这是和哀求联系关系的HttpSession对象。后面我们已先容过会话的主动创立,我们晓得,即便不存在session援用,这个对象也是主动绑定的。但有一个破例,这就是假如你用page指令的session属性封闭了会话,此时对session变量的援用将招致JSP页面转换成Servlet时堕落。

  12.4.5application

  这是一个ServletContext,也能够经由过程getServletConfig().getContext()取得。

  12.4.6config

  这是以后页面的ServletConfig对象。

  12.4.7pageContext

  次要用来办理页面的属性。

  12.4.8page

  它是this的同义词,以后用途不年夜。它是为了Java不再是独一的JSP编程言语而筹办的占位符。
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,

第二个灵魂 发表于 2015-1-19 08:38:37

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

透明 发表于 2015-1-23 19:58:14

是一种为 Internet发展的计算机语言

爱飞 发表于 2015-1-31 19:43:27

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

兰色精灵 发表于 2015-2-4 21:55:40

Java是一种计算机编程语言,拥有跨平台、面向对java

若天明 发表于 2015-2-7 21:17:09

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

小魔女 发表于 2015-2-8 06:39:39

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

简单生活 发表于 2015-2-24 15:54:26

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

不帅 发表于 2015-3-7 12:35:30

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

山那边是海 发表于 2015-3-15 05:10:10

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

深爱那片海 发表于 2015-3-21 18:30:19

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
页: [1]
查看完整版本: JAVA网页编程之jsp Servlet剧本元素、指令和预界说变量...