• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP入门教程(4)
    使用脚本
    在有些地方,你大概要加一些好的,成熟的程序到你的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, KA Software
    jasonh@kasoftware.com, http://www.servlets.com
    Copyright 1999, KA 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, KA Software
    // jasonh@kasoftware.com, http://www.servlets.com
    // Copyright 1999, KA 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
    上一篇:JSP入门教程(3)
    下一篇:四、处理表单数据
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP入门教程(4) JSP,入门教程,JSP,入门教程,