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

目录

前言 

2.1 JSP页面的基本结构

2.2 声明变量和定义方法

2.3 Java程序片

2.4 Java表达式

2.5 JSP中的注释

2.6 JSP指令标记

2.7 动作标记

前言 

       本章主要内容为对jsp语法的介绍,包括声明变量和定义方法,Java程序片,Java表达式,JSP指令,动作标记。

2.1 JSP页面的基本结构

        在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。

JSP页面有五种元素组合而成:

  • 普通的HTML标记和JavaScript标记
  • JSP标记,如指令标记、动作标记。
  • 变量和方法的声明。
  • Java程序片
  • Java表达式

JSP运行原理


       服务器将JSP文件转译为Java文件,再将此Java文件编译生成字节码文件并执行之以响应用户的请求。其中HTML及Javascript标记直接交由用户的浏览器执行,其余则由服务器处理后将结果发送至浏览器端。

2.2 声明变量和定义方法

2.2.1 声明变量
"<%!"和"%>"之间声明的变量在整个 JSP 页面内都有效,与"<%!""%>"标
记符在 JSP 页面中所在的书写位置无关,但习惯上把"<%!""%>"标记符写在 JSP 页面的前面。Tomcat 服务器将 JSP 页面转译成 Java 文件时,将"<%!""%>"标记符之间声明的变量作为类的成员变量,这些变量占有的内存空间直到 Tomcat 服务器关闭才释放。当多个用户请求一个 JSP 页面时, Tomcat 服务器为每个用户启动一个线程,这些线程由 Tomcat 服务器来管理,这些线程共享 JSP 页面的成员变量,因此任何一个用户对 JSP 页面成员变量操作的结果,都会影响到其他用户。

<%! int i=1
%>

 2.2.1 定义方法和类

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

<%! 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;
        }
    }

2.3 Java程序片

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

<%  setCount();
    out.println("您是第"+count+"个访问本站的客户");   
%>

2.4 Java表达式

可以在“<%=”和“%>”之间插入一个可求值的表达式(注意:不可插入语句,“<%=”是一个完整的符号,“<%”和“=”之间不要有空格)。表达式的值由服务器负责计算,并将计算结果用字符串形式发送到用户端显示。Java表达式可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或
</HTML>之后。
需要注意的是,在JSP页面中,表达式的值被表示成一个字符串的形式,即Tomcat服务器将表达式的结果转换成字符串,然后发送给用户的浏览器。因此,在编写JSP页面时,要把Java 表达式按普通的文本来使用。

<%= x %> - <%= y %>

 2.5 JSP中的注释

注释可以增强 JSP 页面的可读性,使 JSP 页面易于维护。 JSP 页面中的注释可分为两种:
(1) HTML 注释:在标记符号"<!-"和"->"之间加入注释内容

 <!--注释内容--> 

JSP 引擎把 HTML 注释交给用户,因此用户通过浏览器查看 JSP 页面的源文件时,能够
看到 HTML 注释。
(2) JSP 注释:在标记符号"<%--"和"-%>"之间加入注释内容:

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

Tomcat 服务器忽略 JSP 注释,即在编译 JSP 页面时忽略 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> 

运行结果:

 2.6 JSP指令标记

2.6.1 page指令标记

page 指令用来定义整个 JSP 页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以使用多个 page 指令分别为每个属性指定值,如:

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

page指令的作用在整个JSP页面有效,与其书写的位置无关。

page指令标记可以分为contentType、import、language、session、buffer、autoFlush、isThreadSafe、pageEncoding、info等属性指定值。

  1. contentType属性

用于设置JSP页面的MIME类型和字符编码,浏览器会据此显示网页内容。语法格式如下:

<%@ page contentType="text/html"%>

 2.import属性

该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页的程序片部分、变量及方法定义部分以及表达式部分使用包中的类。可以为该属性指定多值,该属性的值可以是某包中的所有类或一个具体的类,语法格式如下:

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

  3.language属性

用于设置JSP页面使用的语言,默认值为Java。语法格式如下:

<%@ page language="java" %>

  4.session属性

session 属性用于设置是否需要使用内置的 session对象。session的属性值可以是 trup或false。session属性默认的属性值是true。语法格式如下:

<%@ session="true"%>

 5.buffer属性

内置输出流对象out负责将服务器的某些信息或运行结果发送到用户端显示。buffer属性用来指定out 设置的缓冲区的大小或不使用缓冲区。语法格式如下:

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

 6. autoFlush属性

autoFlush 属性指定out的缓冲区被填满时,缓冲区是否自动刷新。
autoFlush 可以取值 true或false。autoFlush属性的默认值是true。当autoFlush属性取值 false时,如果out 的缓冲区填满,就会出现缓存溢出异常。当buffer的值是“none"时,autoFlush 的值就不能设置成false。语法格式如下:

<%@ page autoFlush="false"%> 

7.isThrcadSafe 属性
isThreadSafe 属性用来设置访问JSP页面是否是线程安全的。isThreadSafe的属性值可取 true或false。当isThreadSafe属性值设置为true时,JSP页面能同时响应多个用户的请求;当isThreadSafe属性值设置成 false时,JSP页面同一时刻只能响应一个用户的请求,其他用户须排队等待。isThreadSafe 属性的默认值是true。当isThreadSafe属性值为true时,CPU的便用权在各个线程间快速切换。也就是说,即
个用户的线租泌

 8.pageEncoding属性

pageEncoding 属性的默认值是UTF-8。需要注意的是,和contentType的附加属性charset 的值的意义不同,pagcEncoding 属性值是定义 JSP 页面使用的编码,即是告诉 Tomemt 服务器的解析器用怎样的编码解析JSP页面中的字符,比如当JSP 页面指定的编码是UTP-8时:

<8@page pageEncoding ="utf -B"%>

9.info属性
info 属性的属性值是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。语法格式如下:

<%@page info="we are students"%>

2.6.2 include指令标记

include指令标记用于把JSP文件,HTML网文文件等文件静态嵌入当前JSP网页中,语法如下:

静态嵌入就是“先包含后处理”在编译阶段完成对文件嵌入,即先将当前JSP页面与被嵌入文件合并成一个新的JSP页面。

语法格式如下:

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

2.7 动作标记

2.7.1 include动作标记

动作标记是将JSP等文件 动态嵌入当前JSP网页中,语法如下:

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

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

动态嵌入就是“先处理后包含”在运行阶段完成对文件嵌入,即在把JSP页面转译为JAVA文件时,并不合并两个页面。

2.7.2 param动作标记

param 标记以"名字﹣值"对的形式为其他标记提供附加信息, param 标记不能独立使用.须作为 jsp : include 、 jsp : forward 标记的子标记来使用。
 param 动作标记语法格式是:


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


当该标记与 jsp : include 动作标记一起使用时,可以将 param 标记中参数的值传递到 include 动作标记要加载的文件中去,被加载的 JSP 文件可以使用 Tomcat 服务器提供的 request 内置对象获取 include 动作标记的 param 子标记中 name 给出的参数的值,如图2.10所示。因此 include 动作标记通过使用 param 子标记来处理加载的文件,比 include 指令标记更为灵活。

2.7.3 forward动作标记

语法格式如下:

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

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


停止当前页面,转向指定的JSP页面,但地址栏扔显示前一个JSP的URL,不需要子标记时必须使用第一种形式。

 2.7.4 useBean

此内容在下下下期见。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值