当前位置:首页 > JSP教程 > JSP基础教程

JSP基础语法

在本章中,我们将了解和学习jsp语法。并了解jsp开发涉及的简单语法(即元素)的基本用法。

为了方便演示,使用eclipse创建一个动态web项目:jspsyntax,用于运行以下涉及到的示例代码。

jsp的元素

jsp的元素如下所述:

1.小脚本

小脚本(scriptlet)可以将任何数量的小脚本包含在页面中,小脚本是有效的java语言语句,变量或方法声明或表达式。

以下是小脚本的语法 -

<% code fragment %>

可以将上述语法编写为xml的形式,效果相同,如下所示:

<jsp:scriptlet>
   code fragment
</jsp:scriptlet>

编写的任何文本,html标签或jsp元素必须在scriptlet之外。 以下是jsp的简单和第一个例子 -

文件:helloworld.jsp -

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>hello world</title>
</head>
<body>
    hello world!
    <br />
    <%
        out.println("your ip address is " + request.getremoteaddr());
    %>
</body>
</html>

执行上面示例代码,得到以下结果 -

2.jsp声明

声明一个或多个变量或方法,可以在java代码中编写,之后在jsp文件中使用。 在jsp文件中使用该变量或方法之前,必须先声明变量或方法。

以下是jsp声明的语法 -

<%! declaration; [ declaration; ]+ ... %>

可以将上述语法编写为xml的形式,效果相同,如下所示:

<jsp:declaration>
   code fragment
</jsp:declaration>

以下是jsp声明的示例 -

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! circle a = new circle(2.0); %>
3.jsp表达式

jsp表达式元素包含一个脚本语言表达式,它被评估求值,转换为一个字符串,并插入到表达式显示在jsp文件中的指定输出位置。

因为表达式的值被转换为字符串,所以可以在jsp文件中使用文本行内的表达式,无论是否使用html标记html。

表达式元素可以包含根据java语言规范有效的任何表达式,但不能使用分号来结束表达式。

以下是jsp表达式的语法 -

<%= expression %>

可以将上述语法编写为xml的形式,效果相同,如下所示:

<jsp:expression>
   expression
</jsp:expression>

以下示例显示了jsp表达式 -

文件:express.jsp -

<html> 
   <head><title>a comment test</title></head> 

   <body>
      <p>today's date: <%= (new java.util.date()).tolocalestring()%></p>
   </body> 
</html>

上述代码将产生以下结果 -

today's date: 11-sep-2017 21:24:25
4.jsp注释

jsp注释标记jsp容器应忽略的文本或语句。当您想要隐藏或注释掉jsp页面的一部分时,jsp注释很有用。

以下是jsp注释的语法 -

<%-- this is jsp comment --%>

以下示例显示了jsp注释 -

<html> 
   <head><title>a comment test</title></head> 

   <body> 
      <h2>a test of comments</h2> 
      <%-- this comment will not be visible in the page source --%> 
   </body> 
</html>

上述代码将产生以下结果 -

a test of comments

可以使用少量特殊结构,在各种情况下可以插入特别处理的注释或字符。下面是一个总结 -

编号 语法 说明
1 <%-- comment --%> jsp注释,它会被jsp引擎忽略。
2 <!-- comment --> html注释,它会被浏览器忽略。
3 <% 表示静态的<%字面值。
4 %> 表示静态的%>字面值。
5 ' 表示静态的单引号'字面值。
6 " 静态的单引号"字面值。
5.jsp指令

jsp指令影响servlet类的整体结构。它通常具有以下形式 -

<%@ directive attribute="value" %>

有三种类型的指令标签 -

编号 指令 描述
1 <%@ page ... %> 定义页面相关属性,如脚本语言,错误页面和缓冲要求等。
2 <%@ include ... %> 在编译阶段包括文件。
3 <%@ taglib ... %> 声明页面中使用包含自定义操作的标签库

我们将在另一章专门介绍jsp指令 - jsp指令

6.jsp动作

jsp动作使用xml语法中的结构来控制servlet引擎的行为。可以动态插入文件,重新使用javabeans组件,将用户转发到另一个页面,或为java插件生成html。

只有一个用于动作元素语法,因为它符合xml标准 -

<jsp:action_name attribute="value" />

动作元素基本上是预定义的功能,下表列出了可用的jsp动作 -

编号 动作 描述
1 jsp:include 在请求页面时包含一个文件。
2 jsp:usebean 查找或实例化一个javabean。
3 jsp:setproperty 设置javabean属性的值。
4 jsp:getproperty 将javabean属性的值输出。
5 jsp:forward 将请求者转发到新页面。
6 jsp:plugin 生成针对java插件创建object或embed标记的特定于浏览器的代码。
7 jsp:element 动态定义xml元素。
8 jsp:attribute 定义动态定义的xml元素属性。
9 jsp:body 定义动态定义的xml元素的正文。
10 jsp:text 用于在jsp页面和文档中编写模板文本。

我们将在单独的章节解释jsp动作 - jsp动作

7.jsp隐式对象

jsp支持九个自动定义的变量,也称为隐式对象。这些变量是 -

编号 对象 描述
1 request 这是与请求相关联的httpservletrequest对象。
2 response 这是与客户端的响应关联的httpservletresponse对象。
3 out 这是用于将输出发送到客户端的printwriter对象。
4 session 这是与请求相关联的httpsession对象。
5 application 这是与应用程序上下文相关联的servletcontext对象。
6 config 这是与该页面相关联的servletconfig对象。
7 pagecontext 它封装了使用服务器特定的功能,如更高性能的jspwriter对象。
8 page 这只是一个同义词,用于调用由编译的servlet类定义的方法。
9 exception 异常对象允许指定的jsp访问异常数据。

我们将在单独的章节讲解jsp隐式对象 - jsp隐式对象。

8.控制流程语句

在jsp编程中使用java的所有api和构建块,包括决策语句,循环等。如:if,if..else等语句。

9.决策语句

if...else块开始像一个普通的小脚本,但是小脚本在每一行都会被闭合,并且包含小脚本标签在html文本中。参考以下示例代码 -

文件:ifelse.jsp -

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>if...else示例</title>
</head>
<body>
    <%!int day = 3;%>
    <%
        if (day == 1 | day == 7) {
    %>
    <p>今天是周末,不用上班,oyes ~</p>
    <%
        } else {
    %>
    <p>今天是工作日,乖乖去上班 ~</p>
    <%
        }
    %>
</body>
</html>

上述代码将产生以下结果 -

现在看看下面的switch...case块,对于不同选项匹配使用out.println()输出不同结果 -

<%! int day = 3; %> 
<html> 
   <head><title>switch...case example</title></head> 

   <body>
      <% 
         switch(day) {
            case 0:
               out.println("it's sunday.");
               break;
            case 1:
               out.println("it's monday.");
               break;
            case 2:
               out.println("it's tuesday.");
               break;
            case 3:
               out.println("it's wednesday.");
               break;
            case 4:
               out.println("it's thursday.");
               break;
            case 5:
               out.println("it's friday.");
               break;
            default:
               out.println("it's saturday.");
         }
      %>
   </body> 
</html>

上述代码将产生以下结果 -

it's saturday.
10.循环语句

在java中使用三种基本类型的循环块:for, while 以及 do…while均可在jsp编程中使用。

下面来看看for循环语句的示例 -

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>for循环语句示例</title>
</head>
<body>
    <%!int fontsize;%>
    <%
        for (fontsize = 1; fontsize <= 5; fontsize++) {
    %>
    <font color="green" size="<%=fontsize%>"> jsp教程 </font>
    <br />
    <%
        }
    %>
</body>
</html>

上述代码将产生以下结果 -

以上示例可以使用while循环编写,代码如下:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>while循环语句示例</title>
</head>
<body>
    <%!int fontsize;%>
    <%
        while (fontsize <= 5) {
    %>
    <font color="green" size="<%=fontsize%>"> jsp教程 </font>
    <br />
    <%
        fontsize++;
    %>
    <%
        }
    %>
</body>
</html>

上述代码将产生以下结果 -

11.jsp运算符

jsp支持java支持的所有逻辑和算术运算符。下表列出了所有具有最高优先级的运算符放在表格的顶部,优先级较低的运算符放在底部。

在一个表达式中,将首先评估计算较高优先级的运算符。

分类 运算符 关联性
后缀 () [] . 左到右
一元运算符 ++ -- ! ~ 右到左
乘法 * / % 左到右
加法 + -
位移 >> >>> << 左到右
关系 > >= < <= 左到右
等于 == != 左到右
按位与 & 左到右
按位异或 ^ 左到右
按位或 左到右
逻辑与 &&
逻辑或 左到右
条件 ?: 右到左
分配 = += -= *= /= %= >>= <<= &= ^= 右到左
逗号 , 左到右
12.jsp文字

jsp表达式语言定义了以下文字 -

  • 布尔 - true和false
  • 整数 - 与java中的一样。
  • 浮点 - 与java中的一样。
  • 字符串 - 带单引号和双引号; "被转义为",'被转义为',被转义为。
  • 空 - null


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!