您的位置:首页网页设计JSP教程 → JSP入门教程(4)

JSP入门教程(4)

时间:2004/11/7 3:32:00来源:本站整理作者:蓝点我要评论(0)

使用脚本

在有些地方,你大概要加一些好的,成熟的程序到你的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)



<%@ page import = "num.NumberGuessBean" %>











Number Guess







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



Congratulations! You got it.

And after just <%= numguess.getNumGuesses() %>tries.





<% numguess.reset(); %>

Care to try again?



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



Welcome to the Number Guess game.



I'm thinking of a number between 1 and 100.







What's your guess?







<% } else { %>

Good guess, but nope. Try <%= numguess.getHint() %>.

You have made <%= numguess.getNumGuesses() %> guesses.

I'm thinking of a number between 1 and 100.





What's your guess?





<% } %>









操作程序(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那样用HTML和JSP标签一起来写脚本。在<%和%>标签之间,你可以写任意多行的脚本代码,在通常情况下,尽量少用脚本来处理程序,而尽可能的使用servlets或者Beans,这样你的程序看起来会非常的清析,明了。话又说回来,怎么写JSP还得根据你的习惯和爱好,我不强迫非得使用任何一种方法,SUN的JSP详细说明书不规定脚本的长度。



用标签组合脚本

使用HTML和JSP标签来写脚本的时候,注意前后的标签不要忘记,一定要“封”好。说的不明白,举个例子吧:

<% } else { %>



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



<% } %>

开始的时候这种做法看起来可能有一点奇怪,但它以确保你JSP文件编译的时候脚本的成功转换。



那么,脚本什么时候执行呢?

一个JSP原文件的处理分为两个阶段:一个是HTTP的编译时候,一个是请求的处理时间。



HTTP编译的时候,当用户第一次读JSP页面的时候,JSP的原代码被编译成CLASS,通常是servlet。HTML标签和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

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 没有查询到任何记录。 几个提升JSP应用程序效率的小方法JAVA面试问题宝典EL表达式语言的基础总结java常用图片读写程序

人气排行 java读取文本文件内容并获取文件大小教你5种JSP页面显示为乱码的解决方法教你java用getAddress方法取得IP地址spring依赖注入的3种实现方式JSP学习心得Java的字符串函数集锦告诉你jsp获取浏览者真实IP地址方法高手谈Java如何进阶