java web 开发——第二章JSP语法

目录

前言

1.1 JSP页面的基本结构

2.1 声明变量和定义方法

2.1.1声明变量

2.1.2 定义方法和类

3.1 Java程序片

4.1 Java表达式

5.1 JSP中的注释

6.1JSP指令标记

6.1.1  page指令标记

6.1.2 include指令标记

7.1 JSP动作标记

7.1.1 include动作标记

7.1.2 param动作标记

7.1.3 forward动作标记

7.1.4 useBean动作标记

8.1 总结



前言

本章主要内容为对JSP语法的介绍,包括JSP页面的基本结构、声明变量和定义方法、Java程序片、Java表达式、JSP指令标记和JSP动作标记等小节。

1.1 JSP页面的基本结构

           在传统的的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。一个JSP页面可由以下五种元素组成:

★普通的HTML标记和JavaScript标记。

★JSP标记,如指令标记、动作标记 。

★ 变量和方法的声明。

★ Java程序片。

★ Java表达式。

          在下面的例子中的JSP页面就包含了5种元素,其中使用HTML的img标记显示的一幅图像(需要将一幅图像的jpg保存在Web服务目录的image目录中),使用JavaScript显示客户浏览器的时间,使用Java程序片显示Tomcat服务器端的时间,使用Java表达式显示一些变量的值。

<%@ page contentType="text/html" %>   <!-- jsp指令标记 -->
<%@ page pageEncoding = "utf-8" %>    <!-- jsp指令标记 -->
<%@ page import="java.time.LocalTime" %> <!-- jsp指令标记 -->
<%!   public int continueSum(int start,int end){  // 定义方法
         int sum =0; 
         for(int i=start;i<=end;i++)  //求start 和 end 之间的连续和
            sum=sum+i; 
         return sum;
      }
%>
<HTML><body bgcolor = pink>
<script>   <!--JavaScript(JS)标记 -->                    
  var userTime = new Date();
  var hour = userTime.getHours();
  var minute =userTime.getMinutes();
  var second = userTime.getSeconds();
  var millisecond = userTime.getMilliseconds();
  document.write("<h2>浏览器时间:"+
                  hour+":"+minute+":"+second+":"+millisecond+"<br></h2>");
</script> 
<img src="image/time.jpg"  width=180 height=120 />  <!--html标记 -->
<p style="font-family:黑体;font-size:36;color:red"> <!--html标记 --> 
<%  //Java程序片:
    LocalTime timeServer = LocalTime.now();  
    int hour = timeServer.getHour();
    int minute =timeServer.getMinute();
    int second = timeServer.getSecond();
    int nano   = timeServer.getNano() ;//纳秒。
    int millisecond = nano/1000000;
    out.print("服务器时间:<br>"+
             hour+":"+minute+":"+second+":"+millisecond);
    int start=1;
    int end=100; 
    int sum=continueSum(start,end);
%>
</p>
<p style="font-family:宋体;font-size:33;color:blue">
   从
   <%= start %>  <!-- Java表达式 --> 
   至
   <%= end %>    <!-- Java表达式 --> 
   的<br>连续和是:
   <%= sum %>    <!-- Java表达式 --> 
</p>
<script>   <!--JavaScript(JS)标记 -->                    
   document.write("<h2>服务器时间:"+
<%=hour%>+":"+<%=minute%>+":"+<%=second%>+":"+<%=millisecond%>+"</h2>");
</script> 
</body></HTML>

2.1 声明变量和定义方法

          在"<%!   %>"里面声明变量和定义方法。"<%!   %>"标记符号的内容习惯上放在JSP页面指令之后,<HTML>之前,也可以写在<HTML>和</HTML>之间。

2.1.1声明变量

             "<%!   %>"之间声明的变量在整个JSP页面内都有效,与"<%!   %>"标记符在JSP页面中所在的书写位置无关。Tomcat服务器将 JSP 页面转译成 Java 文件时,将这些变量作为类的成员变量,这些变量的内存空间直到服务器关闭才被释放。

             当多个客户请求一个 JSP 页面时,Tomcat服务器为每个客户启动一个线程,这些线程由Tomcat服务器来管理。这些线程共享 JSP 页面的成员变量,因此任何一个用户对 JSP 页面成员变量操作的结果,都会影响到其他用户。

             利用成员变量被所有用户共享这一性质,实现一个简单的计数器,代码如下:

2.1.2 定义方法和类

          可以在“<%!"和"%>"标记符号之间定义方法,可以在Java程序片中调用该方法。方法内声明变量只在该方法内有效。当该方法被调用时,方法内声明的变量被分配内存,方法被调用完毕即可释放这些变量占用的内存。

         可以“<%!"和"%>"标记符号之间定义类,可以在Java程序片中使用该类创建对象。

         在以下例子中,定义了两个方法 multi(int x , int y) 和 div(int x , int y),然后在程序片中调用这两个方法。也定义了一个Circle类,然后在程序片中使用该类创建对象,计算了圆的面积。

<%@ page contentType = "text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body bgcolor = #ffccff>
<p style="font-family:宋体;font-size:36;color:blue">
<%! double multi(double x,double y){ //定义方法
        return x*y;
    }
    double div(double x,double y) { //定义方法
        return x/y;
    }
    class Circle { //定义类
        double r;
        double getArea(){
           return 3.1415926*r*r;
        }
    }
%>
<%  double x=8.79;
    double y=20.8;
    out.print("调用multi方法计算"+x+"与"+y+"之积:<br>");
    out.print(multi(x,y));
    out.print("<br>调用div方法计算"+y+"除以"+x+"的商:<br>");
    String s =String.format("小数点保留3位:%10.3f",div(y,x));
    out.println(s); 
    Circle circle = new Circle(); //用Circle类创建对象。
    circle.r = 3.6;
    out.print("<br>半径是"+circle.r+"的圆面积"+circle.getArea()); 
%>
</p></body></HTML>

3.1 Java程序片

         可以在“<%!"和"%>"标记符号之间插入Java程序片。一个JSP页面可以有许多Java程序片,这些程序片将被Tomcat服务器按顺序执行。在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明变量的位置有关,即局部变量在JSP也页面后继的所有程序片以及表达式部分内部有效。Tomcat服务器将JSP页面编译成Java文件时,将各个程序片的这些变量作为某个方法的变量,即局部变量。

        Java程序片可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或,/HTML>之后。当多个用户请求一个JSP页面时,Tomcat服务器为每一个用户启动一个线程,该线程负责执行字节码文件响应用户的请求。Tomcat服务器使用多线程来处理程序片,特点如下:

           ★ 操作JSP页面的成员变量

           ★ 调用JSP页面的方法

           ★ 操作局部变量

4.1 Java表达式

         可以在“<%="和"%>"标记符号之间插入一个可求值的表达式(注意:不可插入语句,“<%="是一个完整的符号,"<%"和”=“之间不要有空格。)表达式的值由服务器负责运算,并将计算结果用字符串形式发送到用户端显示。                                                                                                            

         Java表达式可以写在<HTML>之前,也可以卸载<HTML>和</HTML>之间或</HTML>之后。    

         需要注意的是,在jsp页面中,表达式的值被表示为一个字符串的形式,即tomcat服务器将表达式的结果转换为字符串,然后发送给用户浏览器。因此,在编写jsp页面时,需要把java表达式按普通文本来使用。
         以下例子是计算几个表达式的值。

<%@ page contentType = "text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body  bgcolor=pink>
<%  int x=12,y=9;
%>
<p style="font-family:宋体;font-size:36">
  计算表达式x+y+x%y,即<%= x %>+<%= y %>+<%= x %>%<%= y %>的值: 
  <%= x+y+x%y %>
<br>计算表达式x>y即<%= x %> > <%= y %>的值:
  <%= x>y %>
<br>计算表达式sin(<%=  Math.PI %>/2)的值:
    <%= Math.sin(Math.PI/2) %>
<br> 
<%  if(x-y>=0) {
%>    
       如果<%= x %>大于<%= y %>,计算<%= x %> - <%= y %>即
       <%= x-y %>的平方根:
       <%=Math.sqrt(x-y)%>
<%  }
%>
</p></body></HTML>

5.1 JSP中的注释

        JSP注释可分为两种:

                1、一种是HTML注释,可以在客户端显示的注释。

  表实形式:<!-- 注释内容 -->

                 2、一种是JSP注释,发送到服务器端,在客户端不能显示的注释。

表示形式:<%--注释内容--%>

(注:Tomcat服务器忽略JSP注释,即在编译JSP页面时忽略JSP注释。)

6.1JSP指令标记

        JSP指令用来向JSP引擎提供编译信息。可以设置全局变量,如声明类、要实现的方法和输出内容的类型。一般的,JSP指令在整个页面范围内有效,且并不向客户端产生任何输出。所有的JSP指令都只在当前的整个页面中有效。与其书写的位置无关,一般写在最前面。

        本章指令标记标记中主要讲述了两个标记 ,分别是page指令标记和include指令标记.

6.1.1  page指令标记

             page指令也称为页面指令,用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或者双引号括起来。

             可使用多个page指令分别为每个属性指定值,也可合并程一个page指令。

多个:<%@page 属性1="属性1的值"%>

            <%@page 属性2="属性2的值"%>

           ......

            <%@page 属性n="属性n的值"%>

一个:<%@page 属性1="属性1的值"属性2="属性2的值"......%>

               page指令标记可以为contentType、import 、language、session、buffer、autoFlush、isThreadSafe、pageEncoding、inform等属性指定值,这些属性的设置与作用书上皆有标注,感兴趣的朋友们可以在网上查阅,在此就不详细展开说明。

6.1.2 include指令标记

            如果需要在JSP页面某处整体镶嵌一个文件,就可以考虑使用include指令标记,其语法格式如下:

<%@ include file = "文件的URL"%>

作用:include指令标记的作用是在JSP页面出现该指令的位置处,静态嵌入一个文件,该文件的编码必须和当前JSP页面一致(比如都是UTF-8编码)。被嵌入的文件必须是可以访问或使用的。

7.1 JSP动作标记

          动作标记是一种特殊的标记,它影响JSP运行时的功能。本章主要对include动作标记、param动作标记、forward动作标记、useBean动作标记四个动作标记展开详细说明。

7.1.1 include动作标记

            include动作标记语法格式为:

                    <jsp:include page="文件的URL"/>

                     <jsp:include page="文件的URL"/>
                          param子标记
                     <jsp:include>

             需要注意的是,当include动作标记不需要param子标记时,必须运用第一种形式。

7.1.2 param动作标记

           param标记以“名字-值”对的形式为其他标记提供附加信息,param标记不能独立使用,必须作为jsp:include、jsp:forward标记的子标记使用。

            param动作标记格式为:

                  <jsp:param name="参数"value="参数的值"/>      


7.1.3 forward动作标记

          forward动作标记格式为:

                   <jsp:forward page="要转向的页面"/>

                   <jsp:forward page="要转向的页面"/>
                        param标记
                   <jsp:forward>

            该指令的作用是:从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。需要注意的是,当forward动作标记不需要param子标记时,必须使用第一种形式。
 

7.1.4 useBean动作标记

           useBean动作标记用来创建并且使用一个JavaBean,是非常重要的一个动作标记,详细讲解将在后面内容中,此处就不多讲。

8.1 总结

      以上就是今天要讲的内容,本章仅仅简单的介绍了JSP页面的基本结构、声明变量和定义方法、Java程序片、Java表达式、JSP指令标记和JSP动作标记等内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值