一、学习目标
理解JSP页面中的声明区域,在“<%!”和“%>”标记在JSP页面中的用途,即用于声明变量、方法、嵌入Java代码和类。
2、掌握变量声明的用法。
3、学习方法的声明和调用。
4、演示类的声明和使用。
二、教学过程
在 JSP 页面中可以声明变量、方法和类,其声明格式如下:
<%!声明变量、方法和类的代码%>
特别要注意,在“<%“与“!”之间不要有空格。声明的语法与在 Java 语言中声明变量和方法时的语法是一样的。
(一)声明变量
在“<%!”和“%>”标记之间声明变量,即在“<%!”和“%>”之间放置 Java 的变量声明语句。变量的类型可以是 Java 语言允许的任何数据类型。我们将这些变量称为 JSP 页面的成员变量。
例如变量声明
程序运行结果如下图所示。
这里,“<%!”和“%>”之间声明的变量在整个 JSP 页面内都有效,因为 JSP 引擎将 JSP 页面转译成 Java 文件时,将这些变量作为类的成员变量,这些变量的内存空间直到服务器关闭才被释放。
当多个客户请求一个 JSP 页面时,JSP 引擎为每个客户启动一个线程,这些线程由 JSP 引擎服务器来管理。这些线程共享 JSP 页面的成员变量,因此任何一个用户对 JSP 页面成员变量操作的结果,都会影响到其他用户。
(二)声明方法
在“<%!”和“%>”标记之间声明的方法,在整个 JSP 页面有效,但是,方法内定义的变量只在方法内有效。
例如声明方法如下图所示。
程序运行结果如下图所示。
(三)声明类
可以在“<%!”和“%>”之间声明一个类。该类在 JSP 页面内有效,即在 JSP 页面的 Java 程序段部分可以使用该类创建对象。下例中,定义了一个 User 类,该类的对象作用是输入用户的信息。当客户向服务器提交用户信息后,该对象把用户信息从页面上输出。
代码如下。
<%@ page cnotallow="text/html;charset=UTF-8"
language="java" %>
<%@page import="java.util.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%!
public class Users{
private String name;
private String pass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
@Override
public String toString() {
return "your name is "+this.name+",your pass is "+this.pass;
}
}
%>
<form actinotallow="" method="post">
<br/>name:<input type="text" name="name" />
<br/>pass:<input type="password" name="pass" />
<br/><input type="submit" value="提交" />
</form>
<%
Users users=new Users();
users.setName(request.getParameter("name"));
users.setPass(request.getParameter("pass"));
if(users != null){
out.println(users);
}
%>
</body>
</html>
程序执行的结果如下图所示。
三、掌握在JSP页面的脚本片段中编写Java程序段,包括如何使用变量、条件判断、循环控制等。
JSP 允许在“<%”和“%>”之间插入 Java 程序段。一个 JSP 页面可以有许多程序段,这些程序段将被 JSP 引擎按顺序执行。
在一个程序段中声明的变量叫作 JSP 页面的局部变量,它们在 JSP 页面内的相关程序段以及表达式内都有效。这是因为 JSP 引擎将 JSP 页面转译成 Java 文件时,将各个程序段的这些变量作为类中某个方法的变量,即局部变量。
利用程序段的这个性质,有时可以将一个程序段分割成几个更小的程序段,然后在这些小的程序段之间再插入 JSP 页面的一些其他标记元素。
当程序段被调用执行时,会为这些变量分配内存空间,当所有的程序段调用完毕后,这些变量即可释放所占的内存。
当多个客户请求一个 JSP 页面时,JSP 引擎为每个客户启动一个线程,一个客户的局部变量和另一个客户的局部变量会分配不同的内存空间。因此,一个客户对 JSP 页面局部变量操作的结果,不会影响到其他客户的这个局部变量。
例如下面代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.util.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%!
int x=100;
String str="I Love jsp";
public int add(int x,int y){
retrun x+y;
}
public class Users{
private String name;
private String pass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
@Override
public String toString() {
return "your name is "+this.name+",your pass is "+this.pass;
}
}
%>
<form action="" method="post">
<br/>name:<input type="text" name="name" />
<br/>pass:<input type="password" name="pass" />
<br/><input type="submit" value="提交" />
</form>
<%
x+=100;
out.println("x="+x);
out.println(str);
out.println("10+20="+add(10,20));
Users users=new Users();
users.setName(request.getParameter("name"));
users.setPass(request.getParameter("pass"));
if(users != null){
out.println(users);
}
%>
</body>
</html>
程序运行结果如下图所示
从上面的java代码段中可以看出,java代码段主要用于:
1、对jsp页面中的成员变量进行操作
2、对jsp页面中的成员方法进行操作
3、对jsp页面中的类进行操作