JSP基本语法与定义

JSP基本语法与定义


先来看一段简单的小程序:

程序: 1.jsp

<html>

<head>

<title>example</title>

</head>

1   <%@ page language=”java” %>

2   <%@ page contentType=”text/html,charset=”GB2312””>

3   <body>

4   <% !int value=0;%>

5   <%

6   for (int i=1;i<=100;i++)

7   {            

8   value=value+i;

9   }

10   %>     

11   <p> 1 加到 100 的结果为: <%=value%></p>

12   <p> 今天是: <%=new java.util.Date()%></p>

</body>

</html>

JSP 元素是嵌入在普通的 HTML 页面里面的, JSP 标记都是以 ”<%” 或者 ”<jsp:” 开头,相对应的以 ”%>” 或者 ”/>” 结束

在这段程序中

语句 1  这条指令定义了本程序所使用的是 JAVA 语言。当然也可以不写, JSP 页面自动认

    为是 JAVA 语言

语句 4  定义了一个整型变量,(注意每个变量声明后 的语句要加上分号 . )在 JSP 中,用 <% ! 做起始标记,用 %> 做结束标记,用来声明 JSP 程序中所要用到的变量和方法,语句间用分号隔 开

语句 5 到语句 10 是一个程序段元素,程序段元素封装了 JAVA 程序代码,用 <% 做起始标记,用 %> 做结束标记

语句 11  是一个 JSP 表达式, JSP 表达式是用来在 JSP 页面中输出作为运行结果的字符串或者数值变 量。在 JSP 中用 <% = 做起始标记,用 %> 做结束标记。本句是用来输出 1 加到 100 的值

语句 12  同样是一个 JSP 表达式 ,通过调用 JAVA 类库中的 DATE ()函数,并且转换为字符串在页面输出

 

 

 

 

 

1.2 脚本元素语法

 

JSP 的脚本元素有四种:注释、声明、表达式和程序段。这四种脚本元素都是用一对 <% %> 符号所封装构成的,用来包含 JSP JAVA 程序

1.2.1               注释

JSP 程序中可以包含三种不同类型的注释,一种是 JSP 标准注释。一种是 JAVA 语言的注释,第三种是沿用 HTML 的注释方法,我们在这里只介绍 JSP 的注释方法

JSP 注释通常用来描述 JSP 文档,是不会被 JSP 语句所执行

其语法形式 是 <%--comment--%> 其中 comment 是注释的内容

 

1.2.2               声明

JSP 中可以声明合法的变量和方法。

JSP 中的声明用来声明 JSP 程序中要用到的一个或多个变量(普通变量和类 变量)和方法,

<% ! 做起始标记,用 %> 做结束标记。可以一次性声明多个变量和方法, 只要以 ; 结尾就行了。

JSP 声明的语法形式为 <%!declaration;[declaration;]…….%>

例如: <%!int i=0;%>

<%!int x,y,z.;%>

<%!String str1=”hello”;int value; char ch=’v’;%>

<%!Circle a=new Circle(5,0);%>

对于在 <%!..%> 这样的 JSP 声明中定义的变量将作为全局变量,可以在 JSP 程序中的其他地方使用 ; 而在 <%...%> 这样的 JSP 程序段中定义的变量则是局部变量

1.2.3               表达式

JSP 表达式是用来在 JSP 页面中输出作为运行结果的字符串或者数值变 量。在 JSP 中用 <% = 做起始标记,用 %> 做结束标记。 JSP 表达式可以看作是一种简单的输出形式。在运行 JSP 事后, JSP 表达式被自动转化为字符串输出,因此可以在一 行文本中插入 JSP 表达式。

JSP 表达式的语法格式: <%=expression%>

例如: <%=(new java.util.Date()).toString())%>

1.2.4    程序段

程序段就是 一段程序代码。 JSP 程序段元素封装了 JSP 页面的处理逻辑 ---JAVA 代码    

<% 做起始标记,用 %> 做结束标记,在程序段中,我们可以:

1.        声明所要用 到的变量,类或是方法(局部)

2.        编写 JAVA 语句

3.        编写 JSP 表达式,结尾要用分号。

4.        使用任何内 置对象和任何用 <jsp:useBean> 声明过的对象

JSP 的语法格式为 <%JAVA SCRIPTLET%>

例如 <%int i=24; the number is<%=i%>>

我们来看一个例子:

2.jsp

<html>

<head>

<title>example2<title>

<body>

<%

   Double num=0;

   num=20;

   if(num>0)

   { %>

 <h2>num 的值大于 10</h2>

<%}

  Else out.println(“num 的值小于 10”);

%>

</body>

</html>

 

 

 

 

1.3 动作类语法

l          <jsp:include> 在页面被请求时包含进一个文件

l          <jsp:forward>. 将当前页面请求导向至一个新的页面

 

 

1.3.1 <jsp:include>

动作 <jsp:include> 引入一个静态或动态的页面到一个 JSP 程序文件中,这个指令允许在请求时刻在当前的 JSP 文件中包括静态或动态的资源,这个资源在 page 属性中用 URL 的形式指定。

动作 <jsp:include> 语法格式为:

1.<.jsp:include page=”{relativeURL|<%=expression%> flush=”true”/}

( page=”{relativeURL|<%=expression%>” 属性 page 是用来设置所要包含的文件的绝对路径和相对路 径的表达式。 flush=”true”   这里必须使用 flush=”true” ,若动作 <jsp:include> 的属性中没有显式地设置属性 flush 的值,系统默认使用 flush 的缺省值,即 false)

例如:

<jsp:include page=”aaa/login.jsp”/>.

<jsp:inclue page=”main.jsp”/>

<jsp:inclue page=”aaa.html” flush=”true”/>

2<jsp:param name=”parameterName” value=”{parameterValue|<%%=expression>}”>

(<jsp:param> 子句能传递一个或多个参数给动态文件,可以在 JSP 页面中使用多个 <jsp:param 传递多个参数 >)

例如:

<jsp:param name=”user” value=”baby”/>

 

 

 

1.3.2<jsp:forward>

动作 <jsp:forward> 是用来实现这种页面重定向功能的动作,它可以 重定向到一个 HTML 文件,一个 JSP 文件,甚至是一个程序段

动作 <jsp:forward> 的语法格式为:

1.<jsp:forward page=”{relativeURL|<%=expression%>}”/>

(page=”{relativeURL|<%=expression%>}” 这里属性 page 的值是一个表达式或字符串,它用于说明将要定 向的文件或 URL. 这个文件可以是 JSP 文件, HTML 文件或是一个程序段。 )

例如

<jsp:forward page=”ddd/login.jsp”>

2. <jsp:forward name=”parameterName” value=”{parameterValue|<%%=expression>}”>

(向目标文件发送一个或多个参数。如果想传递 多个参数,可以在一个 JSP 文件中使用多个 <jsp:param>,name 指定参数, value 指定参数值 .

例如 :

<jsp:param name=”user” value=”baby”/>

 

 

 

 

               1.4 内置对象

JSP 中共有 9 种基本的内置对象:

l          Out: 用来输出各种类型的数据流

l          Request :来自客户端的请求,包含来自 GET/POST 请求的参数

l          Response :网页传回给客户端的响应

l          Session :为发送请求的客户建立会话,并只对 HTTP 请求有效

l          Application JSP 引擎正在执行的内容

l          Pagecontext :管理网页的属性

l          Config :表示 servlet 的配置

l          Page JSP 网页本身

l          Exception :运行时候的异常

 

 

1.4.1out 对象

JSP 中的内置对象 out 表示为客户打开的输出流,可以使用它向客户发 送各种类型的数据流,作用域是本页面。

下面介绍 out 的一些常用方法:

l          Out.print() 输出带 HTML 格式的数据内容,不换行

l          Out.println() 输出带 HTML 格式的数据内容,换行

l          Out.newLine() 输出一个换行符号

l          Out.flush() 输出缓冲区的内容

l          Out.close() 关闭输出流

l          Out.clearBuffer() 清除缓冲区的内容,把数据写到客户端去

l          Out.clear() 清除缓冲区的内容,但不把数据写到客户端去

 

 

 

1.4.2request 对象

Request 对象代表了客户端的请求信息,主要用于接受客 户端通过 HTTP 协议传送到服务器端的数据,其作用域就是一次 request 请求

Request 对象的一些常用方法:

l          request.getAttribute(String str) 返回 str 指定的属性值,如果不存在指定的属性值,那么 返回空值( NULL

l          request.getAttributeNames() 返回 request 对象所有属性的名字,结果集是一个枚举类型的 值的实例

l          request.getMethod() 获得客户端向服务器传送数据的方法,有 GET POST 、或者 PUT 等类型

l          request.getParameter(String str) 获得客户端传送给服务器的参数值,参数名又 str 指定

l          request.getParameters() 获得客户端传送给服务器的所有的参数名字,结 果是一个枚举类的实例

l          request.getParameterValues(String str) 获得指定参数的所有值

 

 

 

1.4.3response 对象

response 对象用于向客户端发送数据,并将响应返回给客 户端,其作用域是它所在的页面

response 对象的一些重要方法

l          response.addCookie(Cookie,cookie) 添加一个 Cookie 对象,用来保存客户端信息,用 request getCookie() 方法可以获得这个对象

l          response.setHeader(String name,String value) 设置指定名字的 HTTP 文件头的值,如果该值存在,那么它就会被新的 值覆盖(最常用的例子就是常常对一个网页进行定时刷新,以便更新要显示的信息

l          response.sendRedirect(String URL) 从当前所在的页面重定向到另外的 URL ,这里的 URL 可以是相对路径或者绝对路径

 

 

 

 

1.4.4session 对象

session 对象用来为发送请求的每一个会话,作用域是一 次会话

session 对象对于每一个会话都会创建一个实例,也就是说,两个不同的客户端会在服务 器端产生两个不同的 session 实例。每个客户端与服务器的整个交互过程被称 为一个会话,一个会话可以由很多次的 请求 / 响应所组成噶,在一个会话中, session 对象能够一直存在,直到会话结束。例如当用户 从浏览器登陆某一网站时,服务器会为他创建一个唯一的 session 对象来记录该用户的所有信息,一旦该用户退出网站,那该 session 会被注销

session 对象的一些方法?

l          Session.getAttribute(String name) 获得指定名字的变量,如果该变量不存在,将会返回 NULL

l          Session.getAttributeName() 返回 session 对象所存储的每一个变量的名字,其结果集是一 个枚举类的实例

l          Session.getCreationTime() 返回该 session 对象创建的时间,以毫秒为单位,从 1970 1 1 日起。

l          Session.getID() 每生成一个 session 对象,服务器就会给该 session 对象一个编号,这个编号不会重复,此方法用来 返回当前 session 的编号

l          Session.getLastAccessedtime() 返回当前 session 对象最后一次被操作执行的时间,返回自 1970 1 1 日起至今的毫秒数量

l          Session.getMaxInactiveInterval() 获取 session 对象的生存时间

l          Session.removeAttribute(String name) 删除指定的变量(包括变量名和变量值)

l          Session.setAttribute(String name,java.lang.Object value) 设定指定名字的变量的值,并且把它存储在 session 对象中 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  2  参数传递

在这一节里我们着重谈论以下表单之间的参数传 递

表单之间传递参数可以用 GET 方法或者 POST 方法。在使用 GET 方法提交数据时候,所有表单中被提交的参数都 将附加在页面的 URL 后面,而且值可见,这种方法尤其是对于密码传 送来说,是极不安全的,所以我们只介绍 POST 的提交方法,其原理是:访问者在网页中用 POST 的方法提交表单后,表单中的数据会传送给 JSP 引擎,病保存在内置对象 request 中。 JSP 引擎处理完 request 对象后,会将处理后的数据结果返回给 JSP 页面。 JSP 服务器就将这个处理好了的 JSP 页面发送给客户端,所以我们就能从客户端的浏 览器中看到提交表单后的结果了。现在来看一个简单的例子

Post.html

<html>

<head>

<body>

<center>

<form action=”request.jsp” method=post name=frm>

<p> 姓名: <input type=text name=username></p>

<p> 密码: <input type=password name=psw></p>

<input type=”submit” value=” 登陆 ” name=sub>

<input type=”reset” value=” 取消 ” name=reset>

</form>

</center>

</body>

</html>

 

 

request.jsp

这里我们将用 request 对象的 getParameter 方法获取表单中的信息

<%@page contentType=”text/html;charset=”GB2312”%>

<html>

<head>

<body>

<%=request.getParameter(“username”)%>

你的密码是: <%=request.getParameter(“psw”)%>

</body>

</html>

由于表单中元素众多,我们将在下面的章节了解 各个元素间是怎样进行参数传递的

 

 

 

 

 

 

 

 

2.1 文本区域传递信息

这节将介绍文本区 textarea 传递信息的方法。

Textarea.html

<html>

<head>

<body>

<center>

<form action=”textarea.jsp” method=”post name=frm>

<textarea rows=7 cols=40 name=text></textarea><br>

<input type=”submit” value=” 发送 =sub>

<input type=”reset” value=” 取消 ” name=reset>

</form>

</center>

</body>

</html>

 

 

textarea.jsp

<%@page contentType=”text/html;charset=”GB2312”%>

<html>

<head>

<body>

<center>

<font size=4 color=red> 收到 </font><br>

</center><br>

<%=request.getParameter(“text”)%>

</body>

</html>

 

 

Textarea 传递数据起作用的语句就是 <%=request.getParameter(“text”)%>

 

 

 

2.2 单选按钮和复选框

Post.html

 

<html>

<head>

<body>

<center>

<form action=”request.jsp” method=post name=frm>

<p> 姓名: <input type=text name=username></p>

<p>

<input type=radio name=dan value=”boy”>

<input type=radio name=dan value=”girl”>

</p>

<p>

<input type=checkbox name=fu value=” 周星星 ”> 周星星

<input type=checkbox name=fu value=” 大星星 ”> 大星星

<input type=checkbox name=fu value=” 黑星星 ”> 黑星星

<input type=checkbox name=fu value=” 小星星 ”> 小星星

</p>

 

<input type=”submit” value=” 提交 name=sub>

<input type=”reset” value=” 取消 ” name=reset>

</form>

</center>

</body>

</html>

 

 

 

Request.jsp

 

<%@page contentType=”text/html;charset=”GB2312” import=”java.lang.reflect.*”>

<html>

<head>

<body>

<center>

<font size=4 color=red> 收到 </font><br>

</center><br>

<%=request.getParameter(“username”)%>

<%=request.getParameter(“dan”)%>

你选择了:

<%

  String fu1[]=request.getParameterValues(“fu”);

  Int fu2=Array.getlenth(fu1);

  For(int i=0;i<fu2;i++)

{

  Out.println(fu1);

}

%>

</body>

</html>

从程序中我们可以看见,在判断复选框时候我们 将用到 request.getParameterValues 这个方法,获得全部参数,在下面获取多选列表 框中我们还会用到。

 

2.3 列表框

列表框包括单选列表框和多选列表框

Post.html

<html>

<head>

<body>

<center>

<form action=”request.jsp” method=post name=frm><center>

<p> 你想去哪里旅行: <select name=”list” size=1>

                    <option value=” 北京 ”> 北京 </option>

<option value=” 上海 ”> 上海 </option>

<option value=” 天津 ”> 天津 </option>

<option value=” 重庆 ”> 重庆 </option>

</select></center>

<p> 你想使用什么交通工具: <select name=”multilist” size=4><center>

                          <option value=” 汽车 ”> 汽车 </option>

                          <option value=” 火车 ”> 火车 </option>

                          <option value=” 轮船 ”> 轮船 </option>

                          <option value=” 飞机 ”> 飞机 </option></select></center>

<input type=”submit” value=” 发送 name=sub>

<input type=”reset” value=” 取消 ” name=reset>

</form>

</center>

</body>

</html>

 

 

Request.jsp

<%@page contentType=”text/html;charset=”GB2312” import=”java.lang.reflect.*”>

<html>

<head>

<body>

<center>

<font size=4 color=red> 你将去 <%=request.getParameter(“list”)%> 旅行

 

</center><br>

你选择了:

<%

  String multilist1[]=request.getParameterValues(“multilist”);

  Int multilist2=Array.getlenth(multilist1);

  For(inti=0;i< multilist2;i++)

{

  Out.println(multilist1);

%>

<br>

<%

}

%>

</body>

</html>

 

 

 

最后将给大家一个综合的表格实例

 

 

 

 

 

          3   jsp 数据类型转换

在程序执行过程中。有时必须将某一类型的数据 类型转换成另一类型的数据类型,如函数返回值的运算以及使用者输入数据的处理

3.1 基本数据类型转换:

基本数据类 型转换方式很简单,只需要在数据前加上要转换的数据类型

例子:

<%

Int a=3,b,c;

Double d=9.33,e;

B=(int)d;

C=(int)4.444

E=(double)(a);

Out.print(“b=”+b+”<br>”);

Out.print(“c=”+c+”<br>”);

Out.print(“d=”+d+”<br>”);

%>

输出  b=9

输出   c=4

输出   e=3.0

 

3.2 字符串转换

字符串与基 本数据类型间的转换必须使用 JSP 中的对象函数,对象函数有两种

1.        字符串转换 成基本数据类型

2.        基本数据类 型转换成字符串

Boolean.getBoolean( 字符串 )      字符串转换成布尔值

Byte.parseByte( 字符串 )         字符串转换成位整数

Short.parseShort( 字符串 )        字符串转换成短整型

Integer.parseInt( 字符串 )         字符串转换成整型

Long.garseLont( 字符串 )         字符串转换成长整型

Float.parseFloat( 字符串 )         字符串转换成浮点型

Double.parseDouble( 字符串 )        字符串转换成双精度浮点型

String.valueOF( 数据 )          数据转换成字符串

3.3 数组类型声明

例子:

Int abc[]=new int[4]; 声明一个 5 个元素的整型数组

Float def[]=new float[3]; 声明一个 4 个元素的浮点数组

Char c[]=new char[2]; 声明一个 5 个元素的字符型数组

数组声明时 候必须用关键词 new 来声明元素的个数,如 Int abc[]=new int[4] 表示元素 abc[0],abc[1],abc[2],abc[3],abc[4]

 

 

 

 

             4 类与对象

汽车,飞机,轮船属于交通工具类,都是交通工 具的对象,在汽车里面又可以分为奔驰,宝马,福特等,所以我们要建立同类而不同属性的对象,只需利用类中的方法来改变对象的属性。

4.1 建立类

类中有很多 变量和函数的集合

Class 类名

{

   定义 变量 ;

      定义方法 ;

}

实际上,我 们可以把类中定义的变量看成是从类中衍生出来对象的属性,而函数可以看成是对象所用的方法,例如:

Class mobile

{

  String type;
      String price;

  String mobile_type(String mobile_type)

  {

    This.type= mobile_type;

    Return(this.type);

  }

String mobile_price(String mobile_price)

{

  This.price=mobile_price;

  Return(this.price);

}

}

 

 

 

 

 

 

 

 

4.2 对象

 

定义了类之 后,便可以利用类来生成对象

类对象 =new 类() ;

如:

<%

  Class mobile

{

   Mobile aaa=new mobile();

   Out.println(“mobile_type:”);

   Out.println(aaa.mobile_type(“Nokia”));

   Out.println(“mobile_price:”);

   Out.println(aaa.mobile_price(“6666”));

}

%>

 

输出结果:

Mobile_type:nokia

Mobile_price:6666

 

 

 

String mobile_type(String mobile_type)

  {

    This.type= mobile_type;

    Return(this.type);

  }

This 字符串代表对象本身, This.type= mobile_type; 就是将对象的 type 属性设定为 mobile_type, aaa.mobile_type(“Nokia”) 就是调用 mobile_type 的方法传入参数 Nokia ,并将 Nokia 设定为 aaa 对象的 type 属性。

附:关键字 this

关键字 this 有以下几个意思:

1.        我们用 this 表示一个对象。

2.        this 表示的是当前对象。

3.        当前对象是指正在操作的对象

Class c1

{

  Int a1=1;

  Int a2=2;

  Void ss()

  {

Int a1=10;

Int a2=20;

A1=this.a1;

System.out.println(a1);

System.out.println(a2);

}

}

Public class abc1

{

  Public static void main(String args[]);

{

 C1 aa=new c1();

 aa.ss();

}

输出结果

A1   1

A2  20

 

 

 

 

 

4.3 继承和构造函数

  我们建立了一个类。而又有其他类来继承这个类时,那就产生继承关系,被继承 的类叫父类,继承父类的类叫子类,子类可以使用父类的所有变量和方法,并可以定义本身的属性

1.        一个类可以 通过关键字 extends 继承另外一个类

2.        继承的类统 称为自类,被继承的类统称为父类

3.        类的方法和 变量统称为类的成员

4.        子类具有父 类所有的非私有成员

5.        子类在继承 父类成员的同时还可以创建自己的新成员

构造函数则 是定义在类中的一个函数

 

例子:

<%

  Class mobile

{

  String type;

  String price;

  Sring mobile_type(String mobile_type)

{

This.type=mobile_type;

Return(this.type);

}

}

Class phone extends mobile

{

  String user;

  String mobile_user(String mobile_user)

  {

     This.user=mobile_user;

     Return(this.user);

   }

}

%>

<%

   Phone aaa=new phone();

Out.println(“mobile_type:”);

   Out.println(aaa.mobile_type(“Nokia”));

   Out.println(“mobile_price:”);

   Out.println(aaa.mobile_price(“6666”));

Out.printl(“mobile_user:”);

Out.print(aaa.mobile_user(“henry”));

%>

输出结果:

Mobile_type:nokia

Mobile_price:6666

Mobile_user:henry

 

( 注意:用关键字 final 修饰的类称为 final 类,所有的 final 类都没有子类,不能被继承。用关键字 abstract 修饰的类称为 abstract 类。 abstract 类不能创建对象,但是可以被继承,击沉它的子 类可以创建对象 )

附:关键字 super

如果子类定义的某个变量的名称、类型和父类中的变量完全相同,则父亲的该变量不能被继承,即该变量被完全隐藏起来。如果子类定义的某 个方法的名称、返回类型、参数和父类中的某个方法完全相同,则该父类方法不能被继承,即该方法被隐藏

通过关键字 super ,可以在子类中访问被隐藏的父类的变量或方法。

Class mobile

{

   String type=”Nokia”;

   String user_name=”pires”;

   Long price=6666;

}

  Class mobile1 extends mobile

{

  String type;

  String user_name;

  Long price;

  Void aaa()

   {

     Type=”nec”;

     Price=”5555”;

     User_name=”pires”;

     //Type=super.type;

// Price=super.price;

System.out.println(“type:”+type);

System.out.println(“price:”+price);

System.out.println(“user_name:”+user_name);

}

}

 

Public class mobile2

{

   Public static void main(String args[])

   {

      Mobile1 abc=new mobile2();

     Abc.aaa();

}

}

 

 

隐藏父类中的相同变量,输出结果是

Type;NEC

Price:5555

User_name:pires

 

斜杠去掉以后:

Type;Nokia

Price:6666

User_name:pires

 

 

 

 

    

 

构造函数例 子:

<%

  Class mobile

{

String type;

    String price;

    Sring mobile_type(String mobile_type)

{

This.type=mobile_type;

Return(this.type);

}

Sring mobile_price(String mobile_price)

{

This. price =mobile_ price;

Return(this. price);

}

   Mobile(0

{

  This.type=”       Nokia”;

  This.price=”6666”;

}

}

Mobile aaa=new mobile();

 

Out.println(“mobile_type:”);

   Out.println(aaa.mobile_type(“Nokia”));

   Out.println(“mobile_price:”);

   Out.println(aaa.mobile_price(“6666”));

}

%>

 

输出结果:

Mobile_type:nokia

Mobile_price:6666

( 注意:构造函数函数是定义在类中而且和类是同 样名称的方法,而且可以用传递参数的形式 )

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭