Java Web 开发 ——第二章JSP语法

本文介绍了JSP页面的基本构成,包括声明变量与方法、Java程序片、Java表达式、JSP中的注释、指令标记(如page指令和include指令)以及动作标记(如include动作、param动作、forward动作和useBean动作)。通过实例展示了这些概念在实际代码中的应用,帮助初学者掌握JSP的基础语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

2.1  JSP页面的基本结构

2.2  声明变量与方法

2.3  Java程序片

 2.4  Java表达式

 2.5  JSP中注释

2.6  JSP指令标记

        2.6.1page指令标记

        2.6.2include指令标记

 2.7  JSP动作标记

        2.7.1  include动作标记

        2.7.2  param动作标记

        2.7.3  forward动作标记

         2.7.4  useBean动作标记

总结


前言

学习JSP语法是了解JSP页面的基本,jsp语法更是学习jsp的入门。 本篇文章主要对jsp页面的基本结构、如何在jsp页面中声明一个变量和方法、java程序片、java表达式、jsp中的注释、jsp指令标记以及jsp动作标记进行简单的介绍和实例。


2.1  JSP页面的基本结构

在传统的html页面文件中加入java程序片和jsp标记就构成了一个jsp页面。 JSP的主要构建为:

  1. java程序片
  2. java表达式
  3. jsp中的注释
  4. jsp指令标记
  5. jsp动作标记

示例:在下列代码中,详细的表示了上述结构:

<%@ 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>
<script>   <!--JavaScript(JS)标记 -->                    
   document.write("<h2>服务器时间:"+
<%=hour%>+":"+<%=minute%>+":"+<%=second%>+":"+<%=millisecond%>+"</h2>");
</script> 
</body></HTML>

代码运行结果:

tips:由于本章重点讲述JSP的内容,因此默认读者初步了解HTML语言 


2.2  声明变量与方法

(1) 主要格式为:

<%!      内容    %> 

(2) 声明变量

        <%!  %>之间声明的变量在整个JSP页面内都有效,与它在JSP页面的位置无关

<%@ page contentType="text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body bgcolor=yellow>
<%! int i=0;
%>
<% i++;
%>
<p style="font-family:宋体;font-size:36">
您是第<%= i %>个访问本站的用户。
</p>
</body></HTML>    

结果:

 

 

(3)  定义方法与类   

          定义方法与类时,可以在<%! %>中定义,也可以在java程序片中定义,这里是用第一种方法来定义该方法与类

代码如下(示例):

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

结果:

 

tips: <%! %> 标签声明的标量是全局变量,在整个页面都可以使用,无论你在哪儿声明。

2.3  Java程序片

(1)  主要格式为:

<%    内容    %>

(2)  放置位置:
Java程序片可以写在<html>前面,也可以写在<html>与</html>之间,或者是</html>后面

(3)  特点:
当多个用户请求一个JSP页面时,tomcat服务器为每个用户启动启动了一个线程,该线程负责执行这些字节码文件响应用户的请求.tomcat使用多线程来处理java程序片时,具有以下特点:

  1. 操作JSP页面的成员变量
  2. 调用JSP页面的方法
  3. 操作局部变量

代码如下(示例):

<%@ page contentType = "text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body>
<p style="font-family:宋体;font-size:36;color:blue">
<%! int count=0;                    //被用户共享的count。
     synchronized void setCount() {  //synchronized修饰的方法。
       count++;
     }
%>
<%  setCount();
    out.println("您是第"+count+"个访问本站的客户");   
%>
</p></body></HTML>

tips:在JSP声明的变量为局部变量!!!它的有效范围与位置有关!!!即局部变量在JSP页面后继的所以程序片以及表达式部分内都有效.


 

 2.4  Java表达式

JSP提供了 <%= %> 标记符,用来接收一个表达式或者一个变量的值。

(1)  格式:

<%=   内容 %>

(2) 位置:

与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>

 tips:在该表达式中%和=之间不能有空格,即不可插入其他字符,否则会出错。需要注意的是,在JSP页面中,表达式的值被表达成一个字符串的形式,即tomcat服务器将表达式的结果转化成字符串,然后发送给用户的浏览器。


 2.5  JSP中注释

在一个JSP页面中,注释可以增强JSP页面的可读性,使JSP页面给易于维护

(1)  格式:

  1. html注释
  2. JSP注释

<!--注释内容-->

<%--注释内容--%>

列子:

<%@ page contentType = "text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body>
<%-- 下面是Java程序片 --%>
<%  String str = "C:\\jspfile\\example2_7.jsp"; 
    int index = str.lastIndexOf("\\"); 
    str = str.substring(index+1);
%>
<!-- 以下字体的颜色为蓝色 -->
<p style="font-family:黑体;font-size:20;color:blue"> 
抽取字符串<%= str %>中的JSP文件名字. 
<!-- 以下字体的颜色为红色 -->
<font size="6" color="red"><br>
<%-- 下面是Java表达式 --%> 
<%= str %>
</font>
</p>
</body></HTML>  

tips:tomcat服务器忽视JSP注释,即在编译JSP页面是忽略JSP注释 

2.6  JSP指令标记

        2.6.1page指令标记

<%@page 属性=" 属性值" ...... %>

 

参考代码:

<%@ page contentType="image/jpeg" %> 
<%@ page import="java.awt.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.geom.*" %>  
<%@ page import="javax.imageio.ImageIO" %>
<%   int width=320, height=300;
     BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
     Graphics g = image.getGraphics();
     g.setColor(Color.lightGray);
     g.fillRect(0, 0, width, height);
     Graphics2D g_2d=(Graphics2D)g; 
     Ellipse2D ellipse=new Ellipse2D. Double (70,90,120,60);
     g_2d.setColor(Color.blue);
     AffineTransform trans=new  AffineTransform(); 
     for(int i=1;i<=24;i++) {
        trans.rotate(15.0*Math.PI/180,160,130);
        g_2d.setTransform(trans);
        g_2d.draw(ellipse); 
     }
     g_2d.setColor(Color.red);
     Arc2D arc= new Arc2D.Double (200,220,100,40,0,270,Arc2D.PIE);
     g_2d.fill(arc);
     arc.setArc(5,5,100,40,0,-270,Arc2D.PIE);
     g_2d.fill(arc); 
     g_2d.setColor(Color.black);
     g_2d.setFont(new Font("",Font.BOLD,18));
     g_2d.drawString("耿祥义, Graphic Drawer",10,280);
     g_2d.dispose();
     OutputStream outClient= response.getOutputStream();   //获取指向用户端的输出流
     boolean boo =ImageIO.write(image,"jpeg",outClient);
%>

结果:

 

tips:page 指令标记的作用对整个JSP页面有效,也书写位置无关  

        2.6.2include指令标记

(1)格式: 

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

 (2)参考代码:

example2_10_a.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%@ include file="myfile/ok.txt" %>
<HTML><center><body background="image/beida.jpg">
<bgsound src="sound/beida.mp3" loop=1>
<h1>这里是北京大学 </h1>
</body></HTML>

example2_10_b.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%@ include file="myfile/ok.txt" %>
<HTML><center><body background="image/tsinghua.jpg">
<bgsound src="sound/tsinghua.mp3" loop="-1">
<h1>这里是清华大学 </h1>
</body></HTML>

 2.7  JSP动作标记

        2.7.1  include动作标记

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

书写动作标记时,jsp : include之间不能有空格

        2.7.2  param动作标记

<jsp:include name="参数"values="参数的值"/>

参考代码:

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

 结果:

        2.7.3  forward动作标记

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

 参考代码:

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

结果:
 

 

         2.7.4  useBean动作标记

本内容将在第五章详细讨论,useBean标记用来创建并使用一个JavaBean,是非常重要的一个动作标记。

总结

        在本博客中,简单概况了一下JSP页面中的简单语法。即java程序片,表达式,JSP中的注释,以及JSP中的动作标记、指令标记。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值