JSP渐进学习教程

80酷酷网    80kuku.com

  js|教程

//-------------------------------------------------------------------------------------------

客户端(client)与服务器端(server)的概念服务器:

广义地说,服务器分两种(硬件服务器、软件服务器)

硬件服务器:指相对PC机而言,性能和稳定性较好的、采用特殊硬件的计算机。

软件服务器:通俗的说,就是指安装了某种服务软件,并能提供相应的服务的机器,我们称之为服务器。

服务软件有很多种,常见的有:

WWW服务的软件:PWS、IIS、APACHE

J2EE中间件应用服务器:websphere、silverstream

JSP引擎(弱的WWW服务功能):TOMCAT,resin,weblogic,jrun

SMTP、 POP3:iis的smtp,exchange,lotus domino

FTP:iis所自带

客户端:相对服务器来说,就是享受了某种服务的一方,被称之为客户端。但若要享有某种服务也必须安装相应的软件,如(IE/NETSCAPE、OUTLOOK/FOXMAIL、CUTEFTP)

数据类型

基本类型有以下四种:

int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)

float长度数据类型有:单精度(32bits float)、双精度(64bits double

boolean类型变量的取值有:ture、false

char数据类型有:unicode字符,16位

对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long

转换原则:

从低精度向高精度转换

byte 、short、int、long、float、double、char

注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

基本类型向类类型转换

正向转换:

通过类包装器来new出一个新的类类型的变量

Integer a= new Integer(2);

反向转换:

通过类包装器来转换

int b=a.intValue();

类类型向字符串转换

正向转换:

因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可

反向转换:

通过类包装器new出一个新的类类型的变量

eg1: int i=Integer.valueOf("123").intValue()

说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。

eg2: float f=Float.valueOf("123").floatValue()

说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b=Boolean.valueOf("123").booleanValue()

说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4:double d=Double.valueOf("123").doubleValue()

说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l=Long.valueOf("123").longValue()

说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char=Character.valueOf("123").charValue()

说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

基本类型向字符串的转换

正向转换:

如:int a=12;String b;b=a+"";

反向转换:

通过类包装器

eg1:int i=Integer.parseInt("123")

说明:此方法只能适用于字符串转化成整型变量

eg2: float f=Float.valueOf("123").floatValue()

说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b=Boolean.valueOf("123").booleanValue()

说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4:double d=Double.valueOf("123").doubleValue()

说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l=Long.valueOf("123").longValue()

说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char=Character.valueOf("123").charValue()

说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

JSP基本指令------

1--脚本标记

声明将要用到的语言:<% page language="java" %> 指明jsp指令,表明后面的脚本代码将采用java语言语法

引用包中的类:<% page import="java.util.*" %> 表示要用到java.util包里的类

声明变量:<%! int count=0;%>声明一个整形变量,并赋初值0

声明方法:

<%!

int show(int val){

return val;

}

%>

输出表达式:<%=2*X%> 直接输出表达式的值,X必须是前面已声明过的变量(不能用分号),相当于asp中的 <%=%>

jsp注释符:<%--Here are comments--%> 表示是Jsp注释,在服务器端将被忽略,也不转化为HTML的注释,在客户端查看源码时是看不到的。

包含另一个jsp文件:<% jsp:include page="another:jsp" %> 表示在当前页面插入另一个文件another.jsp的内容

普通的jsp语句:

<%

for(int i=0,i<10,i++)//jsp的正文部分

out.println(i+"<br>");

%>

2.指令---Jsp的指令有page、include两种

page指令(属性:6个)

language属性:

<% page language="java" %>//指明所用的的语言

import属性:

<% page import="java.util.*" %>//载入包

注意:在java中,要载入多个包,就用 import 分别指用,并用分号隔开;

在jsp中,如用一个 import 指明多个包,用逗号隔开。

如:<% page import="java.util.*,java.lang.*" %>

也可<% page import="java.util.*" %>

<% page import=" java.lang.*" %>(但不主张这样用,不规范。

session属性:

<% page session="true or false" %>缺省情况下session的值为true

如:<% page session="true"%>

<%

if(session.getValue("name")==null)

session.putValue("name","123456");

else

session.putValue("name",session.getValue("name")+"1");%>

<% out.println(session.getValue("name"));%>若session="false",则会出现编译错。

errorPage属性:

指当前页面程序发生错误时,由errorPage指定的程序来处理写法:

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

如:test.jsp: <% page errorPage="errorPage.jsp" %>

<%!int i=0;%>

<%=7/i%>

errorPage.jsp:

<% page isErrorPage="true" %>

<%=exception%>

运行test.jsp,将会看到被0除的错误信息。

isErrorPage属性:

指明了当前程序是否为另一程序的例外处理程序。不论它是否设置,例外都会导向当前程序,问题在于当前程序能否得到此例外的对象。如设定为true,将会产生发生的例外的一个对象exception,并可以在代码中使用它;若设定了false,使用exception程序将将会在编译时出错。如:将上例的true改为false,将会出现以下错误:

Error:500

Unable to compile class for JSP

写法:<% page isErrorPage="true" %>

contentType属性:

指定了MIME的类型和JSP文件的字符编码方式,它们都是最先传送给客户端。MIME类型有:text/plain、text/html(缺省类型)、text/html、image/gif、image/jpeg、image/jpeg

缺省的字符编码方式:ISO8859-1

include指令

作用:是用来向当前页中插入一个静态文件的内容,这个文件可能是html文件、jsp文件或其它文本文件,格式如下:

<% include file="include.inc" %>

如:

native.jsp:

<body>native file start here.<br>

<% include file="include.inc" %>

native file end here.<br>

</body>

include.inc:include file start here.<br>

<%! String str="Here is include

//---------------------------------------------------------------

脚本

JSP脚本就是用page指令language属性指定的脚本语言编写的代码块,需要用JSP完成的功能主要在此实现。目前用的基本是Java语言。

代码块里必须完全符合Java语法,但可以配合用HTML文本。其实不论是什么,都会被转换为Servlet,在Servlet中它们是一样的。

如:先输出5个空行,再输出"hello"

正确的:<% for(int i=0;i<5;i++)%>

<br>

<%;%>

hello

<br>错误的:(一行br;一行hello)===============

<% for(int i=0;i<5;i++)%>

<br>

hello

错误的等价于:<% for(int i=0;i<5;i++){%>

<br>

hello

<%}%>

动作(<%jsp%>)

jsp提供的动作指令有:include、forward、useBean、getProperty、setProperty

include 动作

jsp向当前页面加入另一文件的方法。

<jsp:include page="relativefileURL" flush="true"/>

forward动作

把当前页面重导到另一页面上,客户端看到的地址是A页面的地址,

而实际内容确是B页面的内容。

<jsp:forward page="relativefileURL| <%=expression%>}"/>

如:

<body>

here is aa.

<jsp:forward page="aa.jsp" />

here is bb.

</body>

注意:在使用forward之前,不能有任何内容已经输出到客户端,否则会发生例外。

useBean动作

此动作用来生成一个bean组件,并设定它的id号及使用范围

<jsp:useBean id="beanName" scope="page|request|session|application|" class="package.class" type="package.class" beanName="{package.class|<%=expression%>}" type="package.class">action for bean </jsp:useBean>

id="beanName":定义生成bean组件的名字,不能重名且scope的值也最好一样,否则JSP引擎将认定最先被创建的那个。

scope="page|request|session|application":定义bean的活动范围,bean只有在它定义的范围里才能使用,

在它的活动范围外将无法访问到它。

JSP为它设定的范围有:

page: bean的缺省使用范围

request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如重定向、链接等方式)转到另一个文件为止。还可通过使用Request对象访问bean,如:request.getAttribute(beanName)

session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page、另一request里对此bean的调用。但必须在创建此bean的文件里事先用page指令指定了session=true。

application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page、另一request以及另一session里对此bean的调用。

class="package.class":用class属性指下的类示例一个bean,其中package名必须是类里用关键字package指定的。

type="package.class"

class="package.class" type="package.class"

beanName="{package.class|<%=expression%>}" type="package.class"

如:tt.jsp

<jsp:useBean id="student" scope="page" class="mime.student" />

<%=student.getName()%><br>

<% student.setName("wll"); %>

//=====tt.jsp文件到此============

student.java//此处开始为student.java的内容

package mine;

public class student{

long classno;

String name;

int age;

Boolean sex;

public student(){

classno=12345;

name="aaaa";

age=21;

sex=true;

}

public long getClassno(){

return classno;

}

public void setClassno(long no){

this.classno=no;

}

public String getName(){

return name;

}

public void setName(String name){

this.name=name;

}

public int getAge(){

return age;

}

public void setAge(int age){

this.age=age;

}

public boolean getSex(){

return sex;

}

public void setSex(Boolean sex){

this.sex=sex;

}

}

//----------------------------------------------------------------------------------------

注:

scope="page"时,运行test.jsp文件,name的初始值为"aaaa"。虽然在jsp文件

中又重设为"wll",但刷新后仍为"aaaa"

scope="session"时,运行test.jsp文件,name的初始值为"aaaa"。虽然在jsp文

件中又重设为"wll",但刷新后仍为"wll",只要不关闭此窗口,任何刷新或打

开一个新窗口,都输出"wll"。直到关闭所有窗口,再运行test.jsp文件,输

出才会为初始值"aaaa"。

scope="application"时,运行test.jsp文件,name的初始值为"aaaa"。虽然在jsp

文件中又重设为"wll",但刷新后仍为"wll",只要不关闭此窗口,任何刷新或

打开一个新窗口,都输出"wll"。即使关闭所有窗口,再运行test.jsp文件,输

出仍为 "wll"。除非关闭服务后又重启,再运行test.jsp文件,name的输出为

初始值"aaaa"。

scope="request"时,新建一文件test1.jsp内容与test.jsp一样。先在浏览器中运

行test.jsp文件,输出name的值为初始值"aaaa"。再在在浏览器中运行test1.jsp文件,此时输出为"wll",因为它们算是相同的request。

getProperty动作

作用:用来返回一个已被创建的bean组件的属性值:

<jsp:getProperty name="beanId" property="propertyName" />

name:对应着用useBean创建bean组件时id的值

property:指明要得到哪个属性的值

如:得到前例中student组件的属性值:

<jsp:getProperty name="student" property="classno" />

等价:<%=student.classno %>

<jsp:getProperty name="student" property="name" />

<jsp:getProperty name="student" property="age" />

输出结果为:

12345 aaaa 21

setProperty 动作

作用:用来设定一个已被创建的bean组件的属性值:<jsp:setProperty name="beanId" property="propertyName" value="propertyValue"/>name:对应着用useBean创建bean组件时id的值property:指明要想设定属性值的属性名value:为设定的属性值如:前例中student组件,在setProperty中设定的属性<jsp:setProperty name="student" property="classno" value="56789" /><jsp:setProperty name="student" property="name" value="bbbb" /><jsp:setProperty name="student" property="age" value="33" />等价:<% student.age=33;%>输出结果为:56789 bbbb 33



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: