第二章 jsp语法

目录

系列文章目录

文章目录

前言

2.1 JSP页面的基本结构

2.2 声明变量和定义方法

2.3 JSP页面的基本结构

2.4 Java表达式

2.5 JSP注释

2.6 JSP指令标记

2.6.1 page指令标记

2.6.2 include指令标记

2.7JSP动作标记

2.7.1include动作标记

2.7.2param动作标记

2.7.3forward动作标记

2.1 JSP页面的基本结构

一个JSP页面可由5种元素组合而成:

  • 普通的HTML标记和JavaScript标记
  • JSP标记,如指令标记、动作标记
  • 变量和方法的声明
  • Java程序片
  • 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++)  
            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.2 声明变量和定义方法

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

 1. 声明变量  例子如下:
<%@ 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>    

运行结果如下:

2.定义方法  例子如下:
<%@ 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 JSP页面的基本结构

   可以在“<%”和“%>”之间插入Java程序片。一个Java页面可以有许多程序片,这些程序片将被tomca服务器按顺序执行。在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在Jsp页面后继所有程序片以及表达式部分内容有效。Tomact服务器将Jsp页面转译成java文件时,将各个程序片的这些变量作为某个方法的变量,既局部变量。 
    Java程序片可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后。
    当多个用户请求一个jsp页面时。tomact服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求。tomact服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求,Tomact服务器使用多线程来处理程序片,其特点如下:
1 操作jsp页面的成员变量。
2 调用jsp页面的方法。
3 操作局部变量。运行在不同线程中的Java程序片的局部变量互不干扰,如果一个用户在执行Java程序片时调用JSP页面的方法操作成员变量,可能不希望其他用户也调用该方法操作成员变量,那么就应该将操作成员变量的方法用synchronized 关键字修饰。
例子如下:
<%@ 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>

显示图像需要在程序片之间插入用于显示图像的HTML标记:
< imagesrc=图像的URL>文字说明</ image>
例如:想要显示小学生图片:<image src ='image/xiao.jpg' width=180 height=178>小学生</image>

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


结果:

2.5 JSP注释

JSP注释分为俩种:

(1) HTMI注释:在标记符号“<! -”和“->”之间加入注释内容:<! -- 注释内容 -->
(2)JSP注释:在标记符号“<%-”和“-%>”之间加人注释内容: <%--注释内容--%>

2.6 JSP指令标记

2.6.1 page指令标记

page指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以使用多个page指令分别为每个属性指定值,如:
     <%@ page 属性1="属性1的值"%>
<%@ page 属性2="属性2的值"%>
...
<%@ page 属性n="属性n的值"%>
 也可以用一个page指令指定多个属性的值,如:
<%@ page 属性1="属性1的值"属性2="属性2的值"...%>

 page指令的作用对整个JSP页面有效,与其书写的位置无关。习惯上把page指令写在JSP页面的最前面。page指令标记可以为pagecontentType,import,language,session,buff,autoFlush,isThreadSafe,pageEncoding,inform,等属性指定值。以下分别讲述这些属性的设置与作用。

1.contentType属性

要求JSP页面必须设置相应的MIME类型,及设置contentType属性的值。contentType属性值确定JSP页面响应的MIME类型。属性值的一般形式时:

"MIME类型"
        注意:JSP页面使用page指令只能为contentType指定一个值,不允许两次使用page指令给contentTpe属性指定不同的属性值。

2.  pageEncoding属性

  pageEncoding属性的默认值时UTF-8.

格式为:<%@ page pageEncoding= "utf - 8" %>

3.language属性

该属性的值目前只能取“java”。

language属性指定值的格式是:<%@ page language="java">

4.import属性

 该属性的作用是为JSP页面引入Java运行环境提供的包的类,例如:

<%@ page import="java.io*","java.time.LocalDate"%>

5.session属性

  session属性用于设置是否需要使用内置的session对象。session的属性值可以是ture或false。session属性默认值的属性值是true。

6. buffer属性

buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:

<%@ page buffer="24kb"%>

buffer属性的默认值是8kb.buffer属性可以取值none。即设置out不使用缓冲区。
 7.autoFlush属性

autoFlash属性指定out的缓冲区被填满时、缓冲区是否自动刷新。autoFlush可以取值true或false. autoFlush 属性的默认值是true。当autoFlush属性取值false时,如果out的缓冲区填满,就会出现缓存溢出异常。

8.isTreadSafe属性

isThreadSafe属性用来设置访问JSP页面是否是线程安全的。

9.info属性

info属性是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。

        例如:<%@ page info= "we are students"%>

可以在jsp页面中使用方法:
getServletInfo();

获取info的属性值。

2.6.2 include指令标记

 如果需要在JSP页面内某处静态嵌入一个文件,就可以考虑使用include指令标记,

其语法格式如下:<%@ include file = "文件的URL"%>

使用inlude指令可以实现代码的复用。比如,每个 JSP页面上都可能都需要一个导航条,以便用户在各个JSP页面之间方便地切换,那么每个JSP页面都可以使用include指令在页面的适当位置整体嵌人--个相同的文件。

2.7JSP动作标记

2.7.1include动作标记

 include动作语法标记语法格式为:

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


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


注:当include动作标记不需要param子标记时,必须使用第一种形式。

2.7.2param动作标记

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

        param动作标记的语法格式是:

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

2.7.3forward动作标记

forward动作标记的格式是:

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

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

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

example2_12.jsp使用forward标记转向example2_12_a.jsp和example2_12_b.jsp。

例子如下:

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

example2_12_a.jsp:

<%@ page contentType="text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body bgcolor=cyan>
<p style="font-family:宋体;font-size:36">
<% String s=request.getParameter("number");
    out.println("传递过来的值是"+s);
%>
<br><img src=image/pic_a.jpg width=300 height=280/>
</p></body></HTML>

example2_12_b.jsp:

<%@ page contentType="text/html" %>  
<%@ page pageEncoding = "utf-8" %>  
<HTML><body bgcolor=yellow>
<p style="font-family:宋体;font-size:36">
<% String s=request.getParameter("number");
    out.println("传递过来的值是"+s);
%>
<br><img src=image/pic_b.jpg width=300 height=280 />
</p></body></HTML>

结果大于5则转向example2_12_b.jsp,否则为example2_12_a.jsp。

结果如下:

总结

以上就是第二章 jsp语法的全部内容

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
JSP第四章新闻发布系统主要是通过JSP技术来实现一个简单的新闻发布平台,使用户能够浏览、发布和管理新闻内容。该系统具有以下特点和功能。 首先,系统包含一个首页,用于展示最新的新闻内容。用户可以在首页上浏览新闻标题和摘要,并点击查看完整的新闻内容。通过JSP的动态页面生成,用户每次访问首页,都可以获取最新的新闻列表。 其次,系统还包含一个新闻详情页面,用于展示完整的新闻内容。用户可以通过首页或其他途径进入该页面,并在该页面上阅读新闻的详细内容和相关图片。页面的布局和样式可以通过JSP和CSS来设计,使其具有良好的可读性和用户体验。 此外,系统还提供了一个发布新闻的功能。用户可以通过一个表单页面输入新闻的标题、内容和图片等信息,并通过JSP技术将该信息保存到数据库中。系统会对用户输入的数据进行验证和处理,确保发布的新闻内容的正确性和安全性。 最后,系统还包含一个管理后台,用于对新闻内容进行管理和编辑。管理员可以登录管理后台,查看已发布的新闻列表,并对其进行编辑、删除或排序等操作。通过JSP的数据库连接和增删改查功能,管理员可以方便地管理新闻内容。 总的来说,JSP第四章新闻发布系统通过JSP技术实现了一个简单易用的新闻发布平台,用户可以方便地浏览、发布和管理新闻内容。这个系统不仅能提高新闻的传播和发布效率,也能提升用户的阅读体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值