选择显示字体大小

jsp入门教程(3)

使用脚本
在有些地方,你大概要加一些好的,成熟的程序到你的jsp页里,jsp的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充jsp标签。
使用的jsp引擎是支持脚本语言的,sun的jsp参考文说明,必须使用java程序语言来编写脚本,但是其他第三方的jsp引擎允许使用其他语言来写脚本程。
如何增加脚本
首先,你必须了解一些增加脚本元素到jsp页中的一些基本规则
1、 在jsp页面里用page指令定义脚本(默认值是java,一般不需要定义)
2、 声明语法<%!……%>声明变量和方法(函数)。
3、 表达式语法<%=……%>定义脚本语言表达式
4、 脚本语法〈%……%>可以操作声明、表达式和其他类型合法的代码段在页脚本语言。
5、 一定要在结尾加%>标签
声明、表达式、脚本使用起来有一些相似,但也有一些不同让我们用一些例子来讲述一下相同点和不同点吧。
声明<%!……%>包含了一个或多个变量和方法,结尾以分号分隔。
例:<%! int i=0 ; %>
<%! int a, b ; double c ; %>
<%! circle a = new circle(2.0) ; %>
在页面中使用变量和方法之前必须声明
声明的范围通常是jsp页,但如果页面中使用include指令包含其他页面,范围应变得扩展到被包含的页面。
表达式<%=……%>可以在页面中包含任何合法的语言表达式,不用分号。
例:<%= math.sqrt(2) %>
<%= item[i] %>
<%= a+b+c %>
<%= new java.util.date() %>
表达式和脚本的一个关键的不同点就是不需要分号。如果你需要在脚本中使用表达式就必须加分号。
脚本<%……%>允许你写的任何数量的脚本语言
例:<% string name=null ;
if (request.getparmeter("name")==null{
%>
记住在脚本中必须使用分号结尾。
猜数字游戏
猜数字游戏非常的有趣,而且从这里你还可以学到很多表达式的用法。
代码
显示用的主屏幕(numguess.jsp
<!--
number guess game
written by jason hunter, cto, k&a software
jasonh@kasoftware.com, http://www.servlets.com
copyright 1999, k&a software
distributed by sun microsystems with permission
-->
<%@ page import = "num.numberguessbean" %>

<jsp:usebean id="numguess" class="num.numberguessbean" scope="session" />
<jsp:setproperty name="numguess" property="*" />

<html>
<head><title>number guess</title></head>
<body bgcolor="white">
<font size=4>

<% if (numguess.getsuccess() ) { %>

congratulations! you got it.
and after just <%= numguess.getnumguesses() %>tries.<p>

<% numguess.reset(); %>
care to <a href="numguess.jsp">try again</a>?

<% } else if (numguess.getnumguesses() == 0) { %>

welcome to the number guess game.<p>
i'm thinking of a number between 1 and 100.<p>

<form method=get>
what's your guess? <input type=text name=guess>
<input type=submit value="submit">
</form>

<% } else { %>
good guess, but nope. try <b><%= numguess.gethint() %></b>.
you have made <%= numguess.getnumguesses() %> guesses.
<p>i'm thinking of a number between 1 and 100.
<p><form method=get>

what's your guess? <input type=text name=guess>
<input type=submit value="submit">
</form>
<% } %>
</font>
</body>
</html>

操作程序(numberguessbean.java)
// number guess game
// written by jason hunter, cto, k&a software
// jasonh@kasoftware.com, http://www.servlets.com
// copyright 1999, k&a software
// distributed by sun microsystems with permission

package num;
import java.util.*;
public class numberguessbean {
int answer;
boolean success;
string hint;
int numguesses;
public numberguessbean() {
reset();
}
public void setguess(string guess) {
numguesses++;
int g;
try {
g = integer.parseint(guess);
}
catch (numberformatexception e) {
g = -1;
}
if (g == answer) {
success = true;
}
else if (g == -1) {
hint = "a number next time";
}
else if (g < answer) {
hint = "higher";
}
else if (g > answer) {
hint = "lower";
}
}
public boolean getsuccess() {
return success;
}
public string gethint() {
return "" + hint;
}
public int getnumguesses() {
return numguesses;
}
public void reset() {
answer = math.abs(new random().nextint() % 100)
+ 1;
success = false;
numguesses = 0;
}
}

jsp文件中使用脚本
numguess.jsp是一个非常有趣儿的用脚本写的例子,你看他的结构其实是一个很大的if……else结构,但是很一个从句又都是用html写的,看起来象一个大的程序段。
不过你也不一定非得象numguess.jsp那样用htmljsp标签一起来写脚本。在<%和%>标签之间,你可以写任意多行的脚本代码,在通常情况下,尽量少用脚本来处理程序,而尽可能的使用servlets或者beans,这样你的程序看起来会非常的清析,明了。话又说回来,怎么写jsp还得根据你的习惯和爱好,我不强迫非得使用任何一种方法,sun的jsp详细说明书不规定脚本的长度。

用标签组合脚本
使用htmljsp标签来写脚本的时候,注意前后的标签不要忘记,一定要“封”好。说的不明白,举个例子吧:
<% } else { %> <!-- 用jsp标签的时候先关上 -->

... 这时候用jsp标签吧 ...

<% } %> <!-- 这样你应该看懂了吧?! -->
开始的时候这种做法看起来可能有一点奇怪,但它以确保你jsp文件编译的时候脚本的成功转换。

那么,脚本什么时候执行呢?
一个jsp原文件的处理分为两个阶段:一个是http的编译时候,一个是请求的处理时间。

http编译的时候,当用户第一次读jsp页面的时候,jsp的原代码被编译成class,通常是servlethtml标签和jsp标签在这个时候同时被处理了,这之前用户还没有任何的请求被提交。

请求处理时间是当用户在jsp页面中提交了一个请求,这时请求由客户端被request对象传到了服务器端,jsp引擎根据用户提交的值执行编译过的jsp文件或者servlet

当你在jsp页中使用脚本的时候,你必须知道他们什么时候被执行。声明在http编译阶段就已经被处理了,其他脚本,表达式在编译jsp文件的时候也可用。表达式在http编译的时候也被执行了。表达式的值被转换成了字符串被插入到jsp文件中一块儿被编译。其实在请求阶段,脚本也是可以利用的。

如何运行例子
我现在给出的都是在unix风格下的路径,如果你用windows,那么改成windows风格路径
1、猜数字游戏在装tomcat或者jswdk的时候就已经装好了。
2、.jsp和.html文件在../jswdk-1.0.1/examples/num中
3、.java和.class文件在../jswdk-1.0.1/examples/web-inf/jsp/bean/num中
4、开浏览器,http://机器名/examples/jsp/num/numguess.jsp

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons