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

目录

2.1jsp页面的基本结构

2.2声明变量和定义方法

 2.3Java程序片

 2.4java表达式

 2.5JSP指令

 page指令标记

contentType属性

pageEncoding 属性

language 属性

session属性

buffcr 属性

autoFlush属性

isThrcadSafe 属性

info属性

include 指令标记

2.6jsp动作标记

include动作标记

param动作标记

forward动作标记

useBean动作标记


2.1jsp页面的基本结构

在传统的HTML页面文件中加入java程序片和jsp标记就构成了一个jsp页面,jsp页面由5种元素组合而成:

1.普通的HTML标记和JavaScript标记

2jsp标记,如指令标记,动作标记

JSP中的注释:HTML注释<!--  --!>

JSP注释标记

3变量和方法的申明  <%! %>

4java程序片<% %>

5java表达式<%= %>

2.2声明变量和定义方法

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

① 声明变量
“<%!”和“%>”之间声明的变量在整个JSP页面内都有效,与“<%!”“%>”标记符在JSP 页面中所在的书写位置无关,但习惯上把“<%!”“%>”标记符写在JSP 页面的前面。Tomcat 服务器将JSP 页面转译成Java 文件时,将“<%!”“%>”标记符之间声明的变量作为作为类的成员变量。这些变量占有的内存空间直到Tomcat服务器关闭才释放。当多个用户请求一个JSP页面时,Tomcat 服务器为每个用户启动一个线程,这些线程由Tomcat 服务器来管理,这些线程共享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>   

 ②定义方法和类
可以在“<%!”和“%>”标记符号之间定义方法,可以在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.3Java程序片

         可以在“<%“和“%>”之间插入Java程序片。一个JSP页面可以有许多程序片,这些程序片将Tomcat 服务器按顺序执行。在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。Tomcat 服务器将JSP页面转译成Java文件时,将各个程序片的这些变量作为类中某个方法的变量,即局部变量。
        Java 程序片可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后。
当多个用户请求一个JSP页面时,Tomcat 服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求。Tomcat服务器使用多线程来处理程序片,特点如下:·操作JSP 页面的成员变量。Java 程序片中操作的成员变量是各个线程(用户)共享的变量,任何一个线程对JSP页面成员变量操作的结果,都会影响到其他线程。·调用JSP 页面的方法。Java 程序片中可以出现方法调用语甸,所调用的方法必须是JSP页面曾定义的方法。操作局部变量。当一个线程享用CPU 资源时,Tomcat 服务器让该线程执行Java程序片,这时,Java 程序片中的局部变量被分配内存空间,当轮到另一个线程享用CPU资源时,Tomcat 服务器让该线程再次执行Java程序片。

格式如下

HTML中的标记

<%

java程序片

%>

 2.4java表达式

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

其中</p>为段落标签

结果如下

 2.5JSP指令

 page指令标记

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

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

也可以用一个page指定多个属性

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

contentType属性

我们已经知道,当用户请求一个JSP页面时,Tomcat服务器负责解释执行JSP页面,并将某些信息发送到用户的浏览器,以便用户浏览这些信息。Tomcat 服务器同时负责通知用户的浏览器使用怎样的万法来处理所接收到的信息。这就要求JSP页面必须设置响应的MIME(Multipurpose Internet Mail Extention)类型,即设置contentType 属性的值。contentType属性值确定JSP页面响应的MIME类型。属性值的一般形式是:
"MIME类型”

比如,如果我们希望用户的浏览器启用HTML解析器来解析执行所接收到的信息(即所谓的网页形式),就可以如下设置contentType属性的值:
<%@ page contentType= "text/html" %>

如果希望用户的浏览器启用本地的MS-Word应用程序来解析执行收到的信息,就可以如下设置contentType属性的值:
<%@ page contentType ="application/msword" %>
用page指令为contentType 指定一个值的同时,也可以为contentType的附加属性charset 指定一个值(默认值是iso-8859-1),例如:

<%@ page contentType= "text/html ;charset=gb2312"%>

pageEncoding 属性


pageEncoding 属性的默认值是UTF-8。需要注意的是,和contentType的附加属性charset 的值的意义不同,pagcEncoding 属性值是定义 JSP 页面使用的编码,即是告诉 Tomemt 服务器的解析器用怎样的编码解析JSP页面中的字符,比如当JSP 页面指定的编码是UTP-8时:
<8@page pageEncoding ="utf -B"*>
保存JSP 页面应当将“编码”选择为“UTF-8”,原因是,Tomcat 服务器根据JSP页面产生成Java文件时,Tomcat 服务器的解析器是按照UTF-8编码来解析JSP页面中的字符数据ISP 页面本质上是一个XML文档)产生对应Java 文件。如果保存JSP页面时,不小心将“编码”选择为其他编码(不是UTF-8),那么Tomcat 服务器的解析器产生的对应Java文件中的某些字符串就可能有乱码现象,而这些字符串又发送到了客户端浏览器,所以用户浏览器显示信息就出现了乱码现象(比如需要客户浏览器显示的非ASCI字符就可能呈现“乱码”状态)。
另外,JSP 页面使用page 指令只能为pageEncoding 指定一个值,不允许两次使用page指令给pageEncoding 属性指定不同的或相同的属性值

language 属性

language 属性定义JSP页面使用的脚本语言,该属性的值目前只能取“java“。
为language属性指定值的格式是:

<%@ page language= "java" %>

 Import属性

该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页的程序片部分、变量及方法定义部分以及表达式部分使用包中的类。可以为该属性指定多值,该属性的值可以是某包中的所有类或一个具体的类,例如:
<%@ page import ="java. io. *","java. time. LocalDate"*>
JSP页面默认 import 属性已经有如下的值:
" java. lang. ×""javax, servlet.* ""javax. servlet. jsp, *""javax, servlet, http.*"
当为import指定多个属性值时,比如:
<%@page import ="java.util.*"*>
<%@page import ="java. io. *"*>

session属性

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

buffcr 属性

内置输出流对象out负责将服务器的某些信息或运行结果发送到用户端显示。buffer属性用来指定out 设置的缓冲区的大小或不使用缓冲区。例如:
<%@page buffer="24kb"号>
buffer 属性的默认值是8kb。buffer 属性可以取值“none",即设置out不使用缓冲区。

autoFlush属性

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

isThrcadSafe 属性

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

info属性

info 属性的属性值是一个字符电,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。例如,
<%@page info="we are students"
可以在JSP页面中使用方法:
getServletInfo();
获取 info属性的属性值。

include 指令标记

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

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

2.6jsp动作标记

include动作标记


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

param动作标记

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

格式为:

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

forward动作标记

forward动作标记的格式为:

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

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

useBean动作标记

useBean标记时用来创建并使用一个JavaBean。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值