二 JSP 基本语法

JSP 基本语法

JSP 运行平台

  • Caucho 公司的 Resin 平台
  • Apache 公司的 Tomcat 平台
  • BEA 公司的 WebLogic 平台
  • IBM WebSphere Application Server 平台

注释方式

  • <%-- 注释内容 --%> 隐式隐藏,注释的内容不会传递到客户端
  • <!-- 注释内容 --> 显式隐藏,注释的内容会被传递到客户端
  • <% /* 注释内容 */ %><% //注释内容 %> 实际是利用了插入脚本的方式插入了注释,同样不会被传递给客户端

变量声明

<% %> 中声明的变量是局部变量,而在 <%! %> 中声明的变量是在整个 JSP 页面内有效的,在 JSP 被编译为类的实例对象时,这种变量就是对象的属性。所以当 JSP 第一次编译执行后,其中声明的全局变量是会被之后的请求共享的。如此,刷新 JSP 界面时,可以看到他的变化是连续性的。

注意在 <% %> 是不能声明方法的,这是因为其中的代码会被放到方法中去执行,而方法是无法嵌套声明的。

除了在 <% %> 中使用默认的 out 对象输出值外,还可以使用 <%=expression %> 输出值,expression 是可以计算的表达式。

内置对象

JSP 界面中存在着一些不需要声明就可以直接使用的对象,称为内置对象或隐藏对象。

包括:request、response、out、session、application、pageContext、config、page 以及 exception 。

默认对象 exception 是一个 java.lang.Throwable 对象,用来表示界面获取到的错误,但是该对象只有当 JSP 界面被设置为错误界面时才可使用。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ page isErrorPage="true" %>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误</title>
</head>
<body>
发生错误:<%=exception.getMessage() %>
</body>
</html>

要使用上述的错误界面,需要在可能发生错误的界面设置该错误界面。

<%@ page errorPage="error.jsp" %>

如此,当当前界面发生错误时,则返回指定的 error.jsp 错误界面。

指令元素

  • page 指令,用来定义 JSP 页面中的全局属性,常用来设置脚本语言、内容类型、导入包等。

    <%@ page language="java" contentType="text/html; charset=uft-8" %>	<%@ page import="java.util.Vector,java.util.Calendar" %>
    
  • include 指令

    JSP 中的 include 指令,用来包含一个静态的文件,当当前 JSP 被解析时,被包含的文件内容会被复制到当前页面中,同当前的 JSP 页面一起编译。

    指令格式:<%@ include file="file path"%>

    这个路径是相对路径,如果是以 / 开头,那么就是相对于 JSP 应用的上下关系路径,否则就是当前文件的路径。并且,这个路径不能是动态的,即不能是类似下面的变量。

    <% String filePath="header.htmlf"; %>
    <%@ include file="<%=filePath%>" %>

    如果一个 JSP 文件使用这种方式引用其他文件内容,那么就意味着引用的文件可以存在语法格式的错误(但是要修改文件后缀名以规避语法检查),主文件中的内容同样可以是不完整的,只要主文件在编译时,拷贝了引用的文件中的内容后,语法格式正确即可。

  • taglib 指令

    该指令可以用来定义一个自定义的标签库,语法格式为:<%@ taglib uri="tagLibUri" prefix="tagPrefix" %>

    uri 表示标签库的路径,可以是一个网络链接地址,也可以是本地相对地址。

动作元素

同 JSP 指令元素不同,其是在客户端请求时动态执行的,是通过 XML 语法格式的标记来实现控制 Servlet 引擎行为的。

<jsp:include> 同样可以包含静态或动态页面,只是被包含的页面是在主页面被请求时添加的。

<jsp:include page="filePath" flush="false|true" />

这种包含方式需要注意的是,包含动作是在各个文件编译完成后进行的,即被包含文件的语法格式必须是正确的。


<jsp:forward> 表示重定向到其他指定的网页,可以结合 Java 脚本来根据不同条件实现不同页面的跳转。

<%
if (condition) {
%>
<jsp:forward page="success.jsp">
	<jsp:param name="paramName" value="<%=value%>">
</jsp:forward>
<%}else {%>
<jsp:forward page="error.jsp" />
<%}%>

在进行跳转时,可以使用 <jsp:param> 传递参数。


<jsp:userBean> 、<jsp:setProperty> 和 <jsp:getProperty> 这三个动作元素通常一起使用。

这是一种在 JSP 中快速创建示例对象的一种方式,<jsp:userBean> 是用来在一个指定范围内声明一个指定类型的对象实例。

id 属性是声明的对象的名称,scope(page、request、session、application)是变量的有效范围,type 则表示变量的所属类型,他可以是该变量实际引用对象的类型名称,也可以是其超类,或者是其实现的接口之一。

beanName 表示使用 Bean 的名字,该属性和 type 属性可以确定具体的 bean 的类型。

class 属性表示具体的 Bean 的完整包,使用该属性,可以省略 type 和 beanName 属性,但是这就意味着变量类型和实际创建的实例对象类型一致。

<jsp:setProperty> 用来设置指定 bean 的指定属性的值。其 name 属性是已经声明的 bean 变量,property 则表示 bean 的属性,而 value 则指定该属性的值,或者使用 param 属性表示属性的值来自 param 所指定的参数的值。注意,value 和 param 不能同时存在。

如果 bean 的值来自参数,并且参数的名称同属性名称一致,则可以使用下面的方式来指定 bean 的属性值。

<jsp:setProperty name="beanID" property="*" />

否则,需要使用 param 将参数同属性一一对应起来。

<jsp:setProperty name="beanID" property="propertyName" param="paramName" />

还可以使用 value 直接指定属性的值,value 可以是一个表达式。

<jsp:setProperty name="beanID" property="propertyName" value="<%=2+5%>" />

<jsp:getProperty> 则十分简单,表示获取指定 bean 的指定属性的值。

<jsp:getPropery name="beanName" property="propertyName" />

但是,还可以有另一种取值方式,如下:

<%=beanName.getPropertyName()%>

实际是利用了 <%=expression%> 表达式。

实际上,只要是 bean 中声明的方法,都是可以利用脚本的方式进行调用的。


<jsp:plugin> 可以从 JSP 网页中加载 Java Applet 或 JavaBean 程序组件。

在加载 code 属性指定的类时,可以使用 <jsp:params> 指定参数,当然该标签下是使用 <jsp:param> 来指定具体参数的。

发布了129 篇原创文章 · 获赞 23 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u011374318/article/details/102655077