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

目录

前言

 2.1JSP页面标记基本结构

 2.2声明变量和定义方法,类

 2.3 Java程序片

 2.4Java表达式

 2.5 JSP中的注释

 2.6 JSP指令标记

 2.7 JSP动作标记

​编辑

总结



前言

本章主要内容是了解JSP页面的基本结构。JSP可由普通的HTML标记和JavaScript标记,JSP 标记,变量和方法的声明,java程序片,java表达式,五个元素组成。值得注意的是,Java指令标记和Java动作标记是本章的难点,需要着重理解


提示:以下是本篇文章正文内容,下面案例可供参考

2.1JSP页面标记基本结构

当Tomcat服务器上的一个JSP页面被第一次请求执行时,tomcat服务器首先把JSP页面文件转译成一个Java文件,再把这个Java文件编译成字节码文件,然后通过执行字节码文件响应用户的请求。其中字节码文件的任务是:

1)把JSP页面中普通的HTML标记和JavaScript标记交给用户端浏览器执行显示

2)JSP标记,方法定义,Java程序片由服务器负责处理和执行,将需要显示的结果发送给用户端浏览器

3)Java表达式由服务器负责计算,并把结果转化为字符串,然后交给用户端浏览器负责显示

tips:大家需要初步了解HTML语言,不需要对JavaScript有很高的掌握

 为了一次性引入上面所述的五种元素,我们用example2_1来展示一下他们的用法

代码如下(示例):

<%@ 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++)  
            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>

 代码输出结果:

 

2.2声明变量和定义方法,类

我们在“<%!”和“%>”标记符号之间声明变量和定义方法,“<%!”和“%>”标记符号一般放在JSP页面指令之后,<HTML>之前,也可以写在<HTML>和</HTML>之间。

当我们在“<%!”和“%>”之间定义类,可以在Java程序片使用该类创建对象。下面的例子在“<%!”和“%>”之间定义了两个方法multi(int x ,inty)和div(int x,int y),程序片调用这两个方法。在“<%!”和“%>”之间定义一个Circlel类,然后在程序片中使用该类创建对象,用来计算圆的面积。

我们看看下面的代码

代码如下(示例):

<%@ 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>

运行结果如下:

2.3 Java程序片

我们可以在“<%”和"%>"之间插入Java程序片。同时我们在程序片中声明的变量称作JSP页面的局部变量。

tips:Java程序片可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后

 值得注意的是一个JSP页面中的Java程序片会按照其在页面中的顺序被执行,而且某个Java程序片中声明的局部变量在其后继的所有Java程序片以及表达式部分内都有效。利用Java程序片的这个性质,有时候我们可以把一个Java程序片分割成几个Java程序片,然后在这些Java程序片之间再插入其他标记元素。

HTML中的标记
<% 
    Java程序片
%>

HTML中的标记
<% 
    Java程序片
%>
HTML中的标记

2.4Java表达式

我们可以在"<%"和"%.>"之间插入一个可以求值的表达式。表达式的值由我们的服务器负责计算,然后再把计算结果用字符串形式发送到客户端显示。

tips:Java表达式可以写在<HTML> 之前,也可以写在<HTML>和</HTML>之间或者</HTML>之后

看下面这个例子: <%@ 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>

 运行结果:

2.5JSP中的注释

JSP注释

1、JSP注释有两种,一种是可以在客户端显示的注释,称为HTML注释

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

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

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

2.6 JSP指令标记

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

第二章指令标记标记中讲述了两个标记 ,分别是page指令标记和include指令标记.

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

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

2.include指令标记:在JSP页面某处整体镶嵌一个文件,就可以考虑使用include指令标记

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

2.7 JSP动作标记

动作标记是一种特殊的标记,它影响JSP运行时的功能。

本章主要介绍了三种JSP动作标记:include动作标记,param动作标记还有forwar动作标记

1.include动作标记

它的语法格式如下:

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

或者:

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

tips:当include动作标记不需要param子标记时,必须使用第一种形式。同时书写的时候要注意"jsp",":","include"三者之间不能有空格。

2. param动作标记

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

语法格式:

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

下面的例子就使用了include动作标记加载JSP文件triangle.jsp,triangle.jsp保存了当前web服务目录daima的子目录myfile中。triangle.jsp页面可以计算显示三角形的面积,当triangle.jsp被加载时,它会获得example2_11.jsp页面的include动作标记的param子标记提供的三角形三边的长度。

example2_11.jsp代码:

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<HTML><body  bgcolor=cyan >
<% double a=6.12,b=7.08,c=9.22;
%>
<p style="font-family:宋体;font-size:36">
<br>加载triangle.jsp计算三边为<%=a%>,<%=b%>,<%=c%>的三角形面积.
   <jsp:include page="myfile/triangle.jsp">
     <jsp:param name="sideA" value="<%=a%>"/>
     <jsp:param name="sideB" value="<%=b%>"/>
     <jsp:param name="sideC" value="<%=c%>"/>
   </jsp:include>
</p></body></HTML>

triangle.jsp

<%@ page contentType="text/html" %> 
<%@ page pageEncoding = "utf-8" %>
<%! public String getArea(double a,double b,double c) {
       if(a+b>c&&a+c>b&&c+b>a) {
           double p=(a+b+c)/2.0;
           double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
           String result = String.format("%.2f",area);//保留两位小数
           return result;
       }
       else { 
          return(""+a+","+b+","+c+"不能构成一个三角形,无法计算面积");
       }
    }
%>
<%   String sideA=request.getParameter("sideA");
     String sideB=request.getParameter("sideB");
     String sideC=request.getParameter("sideC");
     double a=Double.parseDouble(sideA);
     double b=Double.parseDouble(sideB);
     double c=Double.parseDouble(sideC);
%>
<p style="font-family:黑体;font-size:36;color:blue">
<br><b>我是被加载的文件,负责计算三角形的面积<br>
    给我传递的三边是:<%=sideA%>,<%=sideB%>,<%=sideC%></b>
<br><b><i>三角形的面积(保留2位小数):<%= getArea(a,b,c)%></i></b></i>
</p>
 

 运行结果:

3.forwad动作标记

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

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

或者

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


 和前面的include动作标记类似

example2_12.jsp使用forward标记转向example2_12_a.jsp和example2_12_b.jsp,同时使用param子标记把随机数传递给这两个页面。

代码如下:

<%@ page contentType="text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body>
<h1> 产生一个1-10之间的随机数
<%  double i=(int)(Math.random()*10)+1;
    if(i<=5) {
%>      <jsp:forward page="example2_12_a.jsp" >
            <jsp:param name="number" value="<%= i %>" />
        </jsp:forward> 
<%  }
    else {
%>     <jsp:forward page="example2_12_b.jsp" >
           <jsp:param name="number" value="<%= i %>" />
       </jsp:forward> 
<%  }
%>
</body></HTML>

结果大于5则转向example2_12_b.jsp  背景色为黄色,否则为example2_12_a.jsp的淡蓝色背景色


总结

提示:这里对文章进行总结:

以上就是今天要讲的内容,本文介绍了JSP的基本语法。Java程序片和JSP动作标记是本章的难点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值