JSP基本语法与定义

来源:互联网 发布:易迅数据 编辑:程序博客网 时间:2024/06/07 18:23
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的脚本元素有四种:注释、声明、表达式和程序段。这四种脚本元素都是用一对<%%>符号所封装构成的,用来包含JSPJAVA程序

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         ApplicationJSP引擎正在执行的内容

l         Pagecontext:管理网页的属性

l         Config:表示servlet的配置

l         PageJSP网页本身

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()获得客户端向服务器传送数据的方法,有GETPOST、或者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对象,用来保存客户端信息,用requestgetCookie()方法可以获得这个对象

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对象创建的时间,以毫秒为单位,从197011日起。

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

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

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

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

原创粉丝点击