JSP入门教程(4)_JSP编程

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

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

... 这时候用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

时间: 2024-10-29 19:09:19

JSP入门教程(4)_JSP编程的相关文章

几则JSP入门知识总结_JSP编程

    从去年9月份,我就开始着手学JSP,以前也只有一点程序的意识,一路上摸索过来,经过了很多磨难,终于有一天,我就像一个旱鸭子学会游泳一样,心里无比高兴,熬了几天夜,终于写成了这个纯JSP的文章发布程序. 相信下面的几则小知识对向我这样水平的菜鸟有一定的帮助! ============================================================================== 1.传递表单参数: String name = new String(req

jsp入门教程:用户登陆密码判断代码

jsp入门教程:用户登陆密码判断代码 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <%@include file="../DB.jsp"%> <jsp:useBean id="loginMD5" sco

JSP入门教程之基本语法简析_JSP编程

本文分析讲述了JSP基本语法.分享给大家供大家参考,具体如下: 1.指令 <%@ 指令%> JSP指令是JSP的引擎.他们不直接产生任何可视的输出,只是指示引擎对剩下的JSP页面需要做什么.指令由<%@ ?%>标记.主要的两种指令是page和include.本文不讨论指令taglib,但在JSP1.1中创建自定义标签时会用到它. 可以在几乎所有的JSP页面顶部找到指令page.尽管并非必须,你可以通过它定义如到何处寻找Java类支持等事项. <%@ page import=&

JSP入门教程(1)

js|教程|入门教程 JavaServer Pages (JSP)是基于Java的技术,用于创建可支持跨平台及跨Web服务器的动态网页. JSP可与微软的Active Server Pages (ASP)相媲美,但JSP使用的是类似于HTML的标记和Java 代码片段而不是用VBScript.当你使用不提供ASP本地支持的Web服务器(例如 Apache或Netscape服务器)时,你就可以考虑使用JSP了.你虽然也可以为这些服务器弄一个ASP附加软件模块,但是太昂贵了.现在Sun公司并不会因你

Java Servlet 和 JSP入门教程(1)

js|servlet|教程|入门教程 Java Servlet 和 JSP教程(1) 1 概述 1.1 Java Servlet及其特点 Servlet是Java技术对CGI编程的回答.Servlet程序在服务器端运行,动态地生成Web页面.与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-): 高效 在传统的CGI中,每个请求都要启动一个新的

Java Servlet 和 JSP入门教程(2)

js|servlet|教程|入门教程 Java Servlet 和 JSP教程(2) 2 安装 2.1 安装Servlet和JSP开发工具 要学习Servlet和JSP开发,首先你必须准备一个符合Java Servlet 2.1/2.2和JavaServer Pages1.0/1.1规范的开发环境.Sun提供免费的JavaServer Web Development Kit(JSWDK),可以从http://java.sun.com/products/servlet/下载. 安装好JSWDK之后

Java Servlet 和 JSP入门教程(3)

js|servlet|教程|入门教程 Java Servlet 和 JSP教程(3) 3 Servlet 3.1 Servlet基本结构 下面的代码显示了一个简单Servlet的基本结构.该Servlet处理的是GET请求,所谓的GET请求,如果你不熟悉HTTP,可以把它看成是当用户在浏览器地址栏输入URL.点击Web页面中的链接.提交没有指定METHOD的表单时浏览器所发出的请求.Servlet也可以很方便地处理POST请求.POST请求是提交那些指定了METHOD="POST"的表

Java Servlet 和 JSP入门教程(4)

js|servlet|教程|入门教程 Java Servlet 和 JSP教程(4) 3.3 输出HTML的Servlet 大多数Servlet都输出HTML,而不象上例一样输出纯文本.要输出HTML还有两个额外的步骤要做:告诉浏览器接下来发送的是HTML:修改println语句构造出合法的HTML页面. 第一步通过设置Content-Type(内容类型)应答头完成.一般地,应答头可以通过HttpServletResponse的setHeader方法设置,但由于设置内容类型是一个很频繁的操作,因

零基础易语言入门教程(二)之编程思路_易语言

易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 上一篇跟大家讲了零基础易语言入门教程(一)编写第一个程序,然后接下来大家应该自己把支持库和易语言组件里面的控件全部认真的看一下,下面我直接跟大家分享下易语言简单编程思路. 方法和步骤如下所示: 1.易语言程序

Java判断输入是否为数字-jsp入门教程

Java判断输入是否为数字-jsp教程入门教程 public class CharTest {   public CharTest() {   }   public static void main(String args[]) {   String s = "123abc";   for (int i=0;i<s.length();i++) {   char ch = s.charAt(i);   System.out.println(ch + " is digit?