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 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 ( 注意:构造函数函数是定义在类中而且和类是同 样名称的方法,而且可以用传递参数的形式 ) |
JSP基本语法与定义
最新推荐文章于 2022-04-02 10:21:50 发布