JSP实用教程(2)

  • JSP语法
    • JSP页面的基本结构
    • 声明变量和定义方法
    • Java程序片
    • Java表达式
    • Java中的注释
    • JSP指令标记
      • page指令
      • include指令标记
    • JSP动作标记
      • include动作标记
      • param动作标记
      • forward动作标记

JSP语法

JSP页面的基本结构

6种元素:

  1. 普通的HTML标记和JavaScript标记;(给用户浏览器执行显示)
  2. JSP标记,如指令标记、动作标记;
  3. 变量和方法的声明;
  4. Java程序片;(2-4由服务器负责处理和执行,将需要显示的结果发给用户端浏览器)
  5. Java表达式;(由服务器负责计算,结果转化为字符串,交给用户端浏览器显示)
  6. 注释。

声明变量和定义方法

"<%!"和“%>”之间声明的变量:成员变量
"<%"和“%>”之间声明的变量:局部变量

“<%!”和“%>”之间声明的变量在整个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语法相关推荐

  1. 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标记的运行原理 ...

  2. 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 ...

  3. JSP实用教程——第二章:JSP语法

    JSP基本语法 在传统的HTML页面文件中嵌入脚本语言和JSP标签就构成了一个JSP页面文件.一个JSP页面可有5中元素组合而成. HTML页面内容 JSP注释 JSP指令 JSP脚本元素 JSP动作 ...

  4. JSP实用教程第二章-JSP语法

    目录 前言 2.1 JSP页面的基本结构 2.2声明变量和定义方法 2.2.1 声明变量 2.22 定义方法和类 2.3Java程序片 2.4Java表达式 2.5 JSP中的注释 2.6 JSP指令 ...

  5. java web JSP实用教程第二章

    JSP页面的基本结 普通的HTML标记和JavaScript标记<!-JSP指令标记--> JSP标记,如动作.指令标记<% @  %> 变量的方法和声明<%!  %&g ...

  6. JSP入门教程:JSP简明教程

    一. 什么是JSP JSP(JavaServer Pages)是由Sun Microsystems公司倡导.许多公司参与一起建立的一种 动态 网页技术标准,其网址为http://www.javasof ...

  7. JSP实用教程-JSP语法

    目录 一.JSP页面的基本结构 一个JSP页面可由5种元素组合而成: 1.普通的HTML标记和JavaScript标记: 2.JSP标记,如指令标记.动作标记: 3.变量和方法的声明: 4.Java程 ...

  8. 《JSP实用教程(第4版)》第2章学习笔记

    1.jsp组成结构 java由下面五种结构组成: html标记和js标记 变量及方法的声明 JAVA程序片 JAVA表达式 2.变量及方法的声明 声明变量 格式:<%!(声明变量)%> 位 ...

  9. 《JSP实用教程(第2版)/耿祥义》错误之“发呆”时间

    关于会话失效的问题,该书用了一个形象的"发呆"时间,但这个词虽然形象,但是存在理解错误.根据几段例子代码来看,书中描述的"发呆"时间是用户无动作失效时间.但是& ...

  10. java回车后自动从一个文本框切换到另一个_Java实用教程-Java基本语法-Java程序的构成...

    Java源程序逻辑构成分为两大部分:程序头包的引用和类的定义. 1.程序头包的引用 主要是指引用JDK软件包自带的包,也可以是自己定义的类.引用之后程序体中就可以自由应用包中的类的方法和属性等. 2. ...

最新文章

  1. Bitcoin.com| 比特币现金2019·年度回顾
  2. python3--装饰器
  3. java arp 攻击_基于Jpcap的Java ARP断网攻击
  4. Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can
  5. csgo机器人扔道具_雕友投稿 | 我裂开了, CSGO终于更新了
  6. Kafka Java consumer动态修改topic订阅
  7. 腾讯云,物联网通信产品,动态注册步骤
  8. 记一次分布式B站爬虫任务系统的完整设计和实施
  9. python中的@property(get与set作用
  10. opencv实战3: CascadeClassifier+Haar特征进行人脸检测
  11. idea通过数据库生成实体类插件_idea数据库生成实体类
  12. DXperience中文视频教程(下)
  13. 用户运营4大策略体系搭建:增长框架+用户建模+场景化分层+数据运营
  14. 非安全系列教程 NPM、PYPI、DockerHub 备份
  15. 班级优化大师显示网络或服务器异常,希沃班级优化大师常见问题总汇
  16. 关于QPS高并发,你了解多少?
  17. Endnote新手使用指南——终于解决EndNote困扰我一晚上的难题,其实很简单!
  18. 西南交通大学计算机技术考研分数线,西南交通大学2020年硕士研究生招生复试分数线...
  19. 一步一步学习Glade
  20. 安装JDK报错:Failed to extract file RegUtils from the binary table

热门文章

  1. 矩阵乘法公式c语言,c语言矩阵相乘
  2. ppt图片文字嵌入_形状,文字填充图片教你做出好看的PPT
  3. MySQL(2)----DDL语句之增、删、改、查操作
  4. qsor快排序以及cmp函数
  5. ExtJS002Window创建
  6. VS2012 VS2010 VTK引入设置
  7. 1954-计算机基础知识大赛 1
  8. arcengine中测量两个geometry的距离
  9. jquery.event 研究学习之bind篇
  10. html文件调整表格边框的属性,css怎么设置表格边框?