JSP实用教程(2)——JSP语法
JSP实用教程(2)
- JSP语法
- JSP页面的基本结构
- 声明变量和定义方法
- Java程序片
- Java表达式
- Java中的注释
- JSP指令标记
- page指令
- include指令标记
- JSP动作标记
- include动作标记
- param动作标记
- forward动作标记
JSP语法
JSP页面的基本结构
6种元素:
- 普通的HTML标记和JavaScript标记;(给用户浏览器执行显示)
- JSP标记,如指令标记、动作标记;
- 变量和方法的声明;
- Java程序片;(2-4由服务器负责处理和执行,将需要显示的结果发给用户端浏览器)
- Java表达式;(由服务器负责计算,结果转化为字符串,交给用户端浏览器显示)
- 注释。
声明变量和定义方法
"<%!"和“%>”之间声明的变量:成员变量
"<%"和“%>”之间声明的变量:局部变量
“<%!”和“%>”之间声明的变量在整个JSP页面内都有效,在将JSP页面转译为Java文件时,“<%!”和“%>”之间声明的变量作为类的成员变量,这些变量占有的内存空间直至Tomcat服务器关闭才释放。这些变量能够被多个线程共享,任何一个用户对其操作的结果都会影响其他用户。
“<%”和“%>”之间声明的变量称为:JSP页面的局部变量。每一次执行Scriptlet,都会导致对局部变量的重新分配与释放操作。
**在声明变量和方法时,需要注意以下几点:
- 声明必须以";"结尾。
- 可以直接使用在<% @ include %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明。
- 一个声明仅在一个页面中有效。如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@ include %>或<jsp:include >元素包含进来。**
"<%!"和“%>”之间声明的方法:可以在程序片种调用,方法中声明的变量只在该方法内有效。
"<%!"和“%>”之间声明的类:可以在程序片中使用该类创建对象。
<%@ 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>
Java程序片
"<%"和“%>”之间插入程序片。
可以有许多个程序片,按顺序执行。
可以将一个程序片分割成多个程序片,然后再这些程序片间插入其他标记元素。
Java表达式
语法: <%= expression %>
"<%"和“=”不要有空格
计算结果为字符串类型
结果发送到客户端显示
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=3>
<% double a=12.89;int x=12,y=10;
%>
计算表达式a+x*y-100/x+x%5的值: <%= a+x*y-100/x+x%5 %>
<BR>计算表达式x>y&&a>0的值:<%=x>y&&a>0%>
<BR>计算表达式sin(x)+cos(y):<%=Math.sin(x)+Math.cos(y)%>
<BR> 求8的平方根:<%=Math.sqrt(8)%>
</FONT></BODY></HTML>
Java中的注释
三种:
(1)HTML注释:<!--注释内容-->
HTML注释在发布网页时可以在浏览器源文件窗口中可以看到,并且在这种注释中可以使用JSP的表达式
(2)JSP注释:<%-- comment --%>
编译时忽略,也称隐藏注释
(3)Java注释:<%/*comment*/%>
JSP指令标记
page指令
对整个JSP页面有效,与书写位置无关。
Page 指令的语法格式为:
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | size kb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
(1)contentType:通知用户浏览器使用怎样的方法来处理接收到的信息。只能设置一个,默认值为”text/html“。”text/html“启动HTML解析器来解析; "application/msword"启动本地的MS-Word应用程序来解析。
可以附加属性charset设置浏览器用怎样的编码解析收到的字符。
Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;
Application:用于传输应用程序数据或者二进制数据;
Message:用于包装一个E-mail消息;
Image:用于传输静态图片数据;
Audio:用于传输音频或者音声数据;
Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。
(2)pageEncoding:告诉解析器用怎样的编码解析JSP页面中的字符,默认UTF-8。只能指定一个值
(3)language:定义JSP页面使用的脚本语言,目前只能是Java
(4)import:为JSP页面引入Java运行环境提供的包中的类。
<%@ page import="java.io.*", "java.util.Date" %>
(5)session:用于设置是否需要使用内置的session对象。指定这个页面是否参与一个Http会话
session的属性值可以是true或false。session属性默认的属性值是true。
(6)buffer:用来指定out设置的缓冲区的大小或不使用缓冲区。
例如:格式
<%@ page buffer="sizekb" %>
<%@ page buffer= “24kb” %>
<%@ page buffer="none" %>
buffer属性可以取值“ none”,设置out不使用缓冲区。
(7)autoFlush:指定out的缓冲区被填满时,缓冲区是否自动刷新。
<% @ page autoFlush=”true”%>
<% @ page autoFlush=”false”%>
注意
如果值为“true”,则当缓冲区满时,自动输出给客户;
如果值为“false”,则当缓冲区满时,会有一个运行时异常。
autoFlush的默认值是true
(8)isThreadSafe:用来设置JSP文件是否能多线程使用。若为true,则JSP能同时处理多个用户的请求。若为false,则JSP只能一次处理一个请求。
格式
<%@ page isThreadSafe="true" %>
<%-- Default:默认值是true --%>
<%@ page isThreadSafe="false" %>
(9)info:属性值是一个字符串,为JSP页面准备一个常用但可能要经常修改的字符串。
<%@ page info ="we are students"%>
使用:
getServletInfo();
include指令标记
<%@ include file="文件名的URL"%>
在JSP页面内静态嵌入一个文件,文件编码和当前JSP页面一致。静态的包含就是指这个被包含的文件将会被插入到JSP文件中去,这个被包含的文件可以是JSP文件、HTML文件、文本文件或者只是一段Java代码。
一个 JSP 页面中的 include 指令的数量不受限制。
如果 对嵌入的文件进行了修改,那么服务器会重新编译JSP页面,即将当前的JSP页面和修改后的文件合并成一个JSP页面,然后服务器再将这个新的JSP页面转译成Java类文件。
JSP动作标记
include动作标记
<jsp:include page=“文件的URL” flush=“true”/>
include指令标记与include动作标记的不同。
处理时间和处理方式不同。include指令标记是在编译阶段就处理所需要的文件,被处理的文件逻辑和语法上依赖于当前的JSP页面(编码一致);include动作标记是在JSP页面运行时才处理文件,被处理文件在逻辑和语法上独立于当前JSP页面。前者静态嵌入,后者动态包含。include指令标记执行速度高于include动作标记。
param动作标记
它被用来以“名-值”对的形式为其它标签提供附加信息。
它和jsp:include、jsp:forward、jsp:plugin一起使用。
当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Web服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值
<jsp:param name=“paramName” value=“paramValue”/>
forward动作标记
从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。
这个动作允许请求被转发到另外的JSP、servlet或一个静态的资源上。
格式:
<jsp:forward page="要转向的页面" />
或
<jsp:forward page=“要转向的页面” ><jsp:param name="paramname" value="paramvalue"/>
</jsp:forward>
JSP实用教程(2)——JSP语法相关推荐
- JSP实用教程-第三章Tag文件与Tag标记
目录 3.1 Tag文件 3.1.1Tag文件的结构 3.1.2Tag文件的保存 3.2 Tag标记 3.2.1 Tag文件和Tag标记 3.2.2 Tag标记的使用 3.2.3 Tag标记的运行原理 ...
- JSP实用教程——第二章JSP语法
目录 2.1 JSP页面的基本结构 2.2 声明变量和定义方法 2.2.1 声明变量 2.2.2 定义方法和类 2.3 Java程序片 2.4 Java表达式 2.5 JSP指令标记 2.5.1 pa ...
- JSP实用教程——第二章:JSP语法
JSP基本语法 在传统的HTML页面文件中嵌入脚本语言和JSP标签就构成了一个JSP页面文件.一个JSP页面可有5中元素组合而成. HTML页面内容 JSP注释 JSP指令 JSP脚本元素 JSP动作 ...
- JSP实用教程第二章-JSP语法
目录 前言 2.1 JSP页面的基本结构 2.2声明变量和定义方法 2.2.1 声明变量 2.22 定义方法和类 2.3Java程序片 2.4Java表达式 2.5 JSP中的注释 2.6 JSP指令 ...
- java web JSP实用教程第二章
JSP页面的基本结 普通的HTML标记和JavaScript标记<!-JSP指令标记--> JSP标记,如动作.指令标记<% @ %> 变量的方法和声明<%! %&g ...
- JSP入门教程:JSP简明教程
一. 什么是JSP JSP(JavaServer Pages)是由Sun Microsystems公司倡导.许多公司参与一起建立的一种 动态 网页技术标准,其网址为http://www.javasof ...
- JSP实用教程-JSP语法
目录 一.JSP页面的基本结构 一个JSP页面可由5种元素组合而成: 1.普通的HTML标记和JavaScript标记: 2.JSP标记,如指令标记.动作标记: 3.变量和方法的声明: 4.Java程 ...
- 《JSP实用教程(第4版)》第2章学习笔记
1.jsp组成结构 java由下面五种结构组成: html标记和js标记 变量及方法的声明 JAVA程序片 JAVA表达式 2.变量及方法的声明 声明变量 格式:<%!(声明变量)%> 位 ...
- 《JSP实用教程(第2版)/耿祥义》错误之“发呆”时间
关于会话失效的问题,该书用了一个形象的"发呆"时间,但这个词虽然形象,但是存在理解错误.根据几段例子代码来看,书中描述的"发呆"时间是用户无动作失效时间.但是& ...
- java回车后自动从一个文本框切换到另一个_Java实用教程-Java基本语法-Java程序的构成...
Java源程序逻辑构成分为两大部分:程序头包的引用和类的定义. 1.程序头包的引用 主要是指引用JDK软件包自带的包,也可以是自己定义的类.引用之后程序体中就可以自由应用包中的类的方法和属性等. 2. ...
最新文章
- Bitcoin.com| 比特币现金2019·年度回顾
- python3--装饰器
- java arp 攻击_基于Jpcap的Java ARP断网攻击
- Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can
- csgo机器人扔道具_雕友投稿 | 我裂开了, CSGO终于更新了
- Kafka Java consumer动态修改topic订阅
- 腾讯云,物联网通信产品,动态注册步骤
- 记一次分布式B站爬虫任务系统的完整设计和实施
- python中的@property(get与set作用
- opencv实战3: CascadeClassifier+Haar特征进行人脸检测
- idea通过数据库生成实体类插件_idea数据库生成实体类
- DXperience中文视频教程(下)
- 用户运营4大策略体系搭建:增长框架+用户建模+场景化分层+数据运营
- 非安全系列教程 NPM、PYPI、DockerHub 备份
- 班级优化大师显示网络或服务器异常,希沃班级优化大师常见问题总汇
- 关于QPS高并发,你了解多少?
- Endnote新手使用指南——终于解决EndNote困扰我一晚上的难题,其实很简单!
- 西南交通大学计算机技术考研分数线,西南交通大学2020年硕士研究生招生复试分数线...
- 一步一步学习Glade
- 安装JDK报错:Failed to extract file RegUtils from the binary table