JSP漸進學習教程

來源:互聯網
上載者:User
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



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.