欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JSP--循序漸進(jìn)教程
給大家帖個(gè)自己的總結
客戶(hù)端(client)與服務(wù)器端(server)的概念


服務(wù)器:廣義地說(shuō),服務(wù)器分兩種(硬件服務(wù)器、軟件服務(wù)器)
硬件服務(wù)器:指相對PC機而言,性能和穩定性較好的、采用特殊硬件的計算機。
軟件服務(wù)器:通俗的說(shuō),就是指安裝了某種服務(wù)軟件,并能提供相應的服務(wù)的機器,我們稱(chēng)之為服務(wù)器。
服務(wù)軟件有很多種,常見(jiàn)的有:
WWW服務(wù)的軟件:pWS、IIS、APACHE
J2EE中間件應用服務(wù)器:websphere、silverstream
JSP引擎(弱的WWW服務(wù)功能):TOMCAT,resin,weblogic,jrun
SMTP、 POP3:iis的smtp,exchange,lotus domino
FTP:iis所自帶
客戶(hù)端:相對服務(wù)器來(lái)說(shuō),就是享受了某種服務(wù)的一方,被稱(chēng)之為客戶(hù)端。但若要享有某種服務(wù)也必須安裝相應的軟件,
如(IE/NETSCAPE、OUTLOOK/FOXMAIL、CUTEFTP)


數據類(lèi)型


基本類(lèi)型有以下四種:
int長(cháng)度數據類(lèi)型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
float長(cháng)度數據類(lèi)型有:?jiǎn)尉龋?2bits float)、雙精度(64bits double)
boolean類(lèi)型變量的取值有:ture、false
char數據類(lèi)型有:unicode字符,16位
對應的類(lèi)類(lèi)型:
Integer、Float、Boolean、Character、Double、Short、Byte、Long


轉換原則:
從低精度向高精度轉換
byte 、short、int、long、float、double、char
注:兩個(gè)char型運算時(shí),自動(dòng)轉換為int型;當char與別的類(lèi)型運算時(shí),也會(huì )先自動(dòng)轉換為int型的,再做其它類(lèi)型的自動(dòng)轉換

基本類(lèi)型向類(lèi)類(lèi)型轉換

正向轉換:
通過(guò)類(lèi)包裝器來(lái)new出一個(gè)新的類(lèi)類(lèi)型的變量
Integer a= new Integer(2);

反向轉換:
通過(guò)類(lèi)包裝器來(lái)轉換
int b=a.intValue();
類(lèi)類(lèi)型向字符串轉換


正向轉換:
因為每個(gè)類(lèi)都是object類(lèi)的子類(lèi),而所有的object類(lèi)都有一個(gè)toString()函數,所以通過(guò)toString()函數來(lái)轉換即可

反向轉換:
通過(guò)類(lèi)包裝器new出一個(gè)新的類(lèi)類(lèi)型的變量
eg1: int i=Integer.valueOf(“123”).intValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Integer對象,然后再調用這個(gè)對象的intValue()方法返回其對應的int數值。
eg2: float f=Float.valueOf(“123”).floatValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Float對象,然后再調用這個(gè)對象的floatValue()方法返回其對應的float數值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Boolean對象,然后再調用這個(gè)對象的booleanValue()方法返回其對應的boolean數值。
eg4:Double d=Double.valueOf(“123”).doubleValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Double對象,然后再調用這個(gè)對象的doubleValue()方法返回其對應的double數值。
eg5: long l=Long.valueOf(“123”).longValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Long對象,然后再調用這個(gè)對象的longValue()方法返回其對應的long數值。
eg6: char=Character.valueOf(“123”).charValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Character對象,然后再調用這個(gè)對象的charValue()方法返回其對應的char數值。


基本類(lèi)型向字符串的轉換

正向轉換:
如:int a=12;
String b;
b=a+””;

反向轉換:
通過(guò)類(lèi)包裝器
eg1:
int i=Integer.parseInt(“123”)
說(shuō)明:此方法只能適用于字符串轉化成整型變量
eg2: float f=Float.valueOf(“123”).floatValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Float對象,然后再調用這個(gè)對象的floatValue()方法返回其對應的float數值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Boolean對象,然后再調用這個(gè)對象的booleanValue()方法返回其對應的boolean數值。
eg4:Double d=Double.valueOf(“123”).doubleValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Double對象,然后再調用這個(gè)對象的doubleValue()方法返回其對應的double數值。
eg5: long l=Long.valueOf(“123”).longValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Long對象,然后再調用這個(gè)對象的longValue()方法返回其對應的long數值。
eg6: char=Character.valueOf(“123”).charValue()
說(shuō)明:上例是將一個(gè)字符串轉化成一個(gè)Character對象,然后再調用這個(gè)對象的charValue()方法返回其對應的char數值。

JSP基本指令------1--腳本標記聲明將要用到的語(yǔ)言:<%@.page language=”java”%>指明jsp指令,表明后面的腳本代碼將采用java語(yǔ)言語(yǔ)法

引用包中的類(lèi):<%@.page import=”java.util.*”%>表示要用到j(luò )ava.util包里的類(lèi)

聲明變量:<%! int count=0;%>聲明一個(gè)整形變量,并賦初值0

聲明方法:<%! int show(int val){
{return val;}
%>
輸出表達式:<%=2*X%>直接輸出表達式的值,X必須是前面已聲明過(guò)的變量(不能用分號),相當于asp中的<%=%>

jsp注釋符:<%--Here are comments--%>表示是Jsp注釋?zhuān)诜?wù)器端將被忽略,也不轉化為HTML的注釋?zhuān)诳蛻?hù)端查看源碼時(shí)是看不到的。

包含另一個(gè)jsp文件:<%jsp:include page=”another:jsp”%>表示在當前頁(yè)面插入另一個(gè)文件another.jsp的內容

普通的jsp語(yǔ)句:
<% for(int i=0,i<10,i++)//jsp的正文部分
out.println(i+”<br>”);
%>
2.指令---Jsp的指令有page、include兩種page指令(屬性:6個(gè))language屬性:
<@ page language=”java” %>//指明所用的的語(yǔ)言

import屬性:
<@ page import=”java.util.*” %>//載入包
注意:在java中,要載入多個(gè)包,就用import分別指用,并用分號隔開(kāi);
在jsp中,如用一個(gè)import指明多個(gè)包,用逗號隔開(kāi)。
如:<%@ 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”,則會(huì )出現編譯錯。

errorPage屬性:
指當前頁(yè)面程序發(fā)生錯誤時(shí),由errorPage指定的程序來(lái)處理
寫(xiě)法: <@ page errorPage=”errorPage.jsp” %>
如:
test.jsp: <%@page errorPage=”errorPage.jsp”@>
<%!int i=0;%>
<%=7/i%>
errorPage.jsp: <%@page isErrorPage=”true”@>
<%=exception%>
運行test.jsp,將會(huì )看到被0除的錯誤信息。

isErrorPage屬性:
指明了當前程序是否為另一程序的例外處理程序。不論它是否設置,例外都會(huì )導向當前程序,
問(wèn)題在于當前程序能否得到此例外的對象。如設定為true,將會(huì )產(chǎn)生發(fā)生的例外的一個(gè)對象exception,
并可以在代碼中使用它;若設定了false,使用exception程序將將會(huì )在編譯時(shí)出錯。
如:將上例的true改為false,將會(huì )出現以下錯誤:
Error:500
Unable to compile class for JSP
寫(xiě)法:<%@page isErrorPage=”true”@>

contentType屬性:
指定了MIME的類(lèi)型和JSP文件的字符編碼方式,它們都是最先傳送給客戶(hù)端。
MIME類(lèi)型有:text/plain、text/html(缺省類(lèi)型)、text/html、image/gif、image/jpeg、image/jpeg
缺省的字符編碼方式:ISO8859-1
include指令作用:是用來(lái)向當前頁(yè)中插入一個(gè)靜態(tài)文件的內容,這個(gè)文件可能是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’s context!”;%>
<% out.pringln(str+”<br>”);%>
include file end here.<br>
運行native.jsp,結果如下:
native file start here.
include file start here.
Here is include’s context!
include file end here.
native file end here.
注意:因為include.inc文件是在編譯時(shí)才插入的,所以只改 include.inc文件內容,
而不對原JSP頁(yè)面做修改,得到的結果仍將是以前的結果。(因為一開(kāi)始JSP引擎就判斷了
JSP頁(yè)面沒(méi)被改動(dòng)過(guò),就直接執行已存在的字節碼,而不對源代碼重新編譯,這樣對
include做的修改也就在這沒(méi)有反映。)
腳本
JSP腳本就是用page指令language屬性指定的腳本語(yǔ)言編寫(xiě)的代碼塊,需要用JSP完成的功
能主要在此實(shí)現。目前用的基本是Java語(yǔ)言。
代碼塊里必須完全符合Java語(yǔ)法,但可以配合用HTML文本。其實(shí)不論是什么,都會(huì )被轉換
為Servlet,在Servlet中它們是一樣的。

如:先輸出5個(gè)空行,再輸出“hello”
正確的:<% for(int i=0;i<5;i++)%>
<br>
<%;%>
hello
<br>錯誤的:(一行br;一行hello)===============
<% for(int i=0;i<5;i++)%>
<br>
hello
錯誤的等價(jià)于:<% for(int i=0;i<5;i++){%>
<br>
hello
<%}%>


動(dòng)作(<%jsp%>)
jsp提供的動(dòng)作指令有:include、forward、useBean、getProperty、setProperty

include 動(dòng)作

jsp向當前頁(yè)面加入另一文件的方法。
<jsp:include page=”relativefileURL” flush=”true”/>


forward動(dòng)作

把當前頁(yè)面重導到另一頁(yè)面上,客戶(hù)端看到的地址是A頁(yè)面的地址,
而實(shí)際內容確是B頁(yè)面的內容。
<jsp:forward page=”relativefileURL| <%=expression%>}"/>
如:
<body>
here is aa.
<jsp:forward page=”aa.jsp” />
here is bb.
</body>
注意:在使用forward之前,不能有任何內容已經(jīng)輸出到客戶(hù)端,否則會(huì )發(fā)生例外。

useBean動(dòng)作

此動(dòng)作用來(lái)生成一個(gè)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引擎將認定最先被創(chuàng )建的那個(gè)。 scope=”page|request|session|application”:定義bean的活動(dòng)范圍,bean
只有在它定義的范圍里才能使用, 在它的活動(dòng)范圍外將無(wú)法訪(fǎng)問(wèn)到它。JSP為它設定的范圍有: page: bean的缺省使用范圍 request:作用于任何相同請求的JSP文件中,直到頁(yè)面執行完畢向客戶(hù)端發(fā)回響應
或在此這之前 已通過(guò)某種方式(如重定向、鏈接等方式)轉到另一個(gè)文件為止。還可通過(guò)使用
Request對象訪(fǎng)問(wèn) bean,如request.getAttribute(beanName) session:作用于整個(gè)session的生存周期內,在session的生存周期內,對此bean
屬性的任何改動(dòng), 都會(huì )影響到在此session內的另一page、另一request里對此bean的調用。但必
須在創(chuàng )建此bean的文件 里事先用page指令指定了session=true。 application:作用于整個(gè)application的生存周期內,在application周期內,
對此bean屬性的任何改動(dòng), 都會(huì )影響到此application內另一page、另一request以及另一session里對此
bean的調用。 class=”package.class”:用class屬性指下的類(lèi)示例一個(gè)bean,其中package
名必須是類(lèi)里用關(guān)鍵字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”); %> 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”時(shí),運行test.jsp文件,name的初始值為”aaaa”。雖然在jsp
文件中又重設為“wll”, 但刷新后仍為“aaaa” scope=”session”時(shí),運行test.jsp文件,name的初始值為”aaaa”。雖然在jsp
文件中又重設為“wll”, 但刷新后仍為“wll”,只要不關(guān)閉此窗口,任何刷新或打開(kāi)一個(gè)新窗口,都輸出
“wll”。直到關(guān)閉所有窗口, 再運行test.jsp文件,輸出才會(huì )為初始值”aaaa”。 scope=”application”時(shí),運行test.jsp文件,name的初始值為”aaaa”。
雖然在jsp文件中又重設為“wll” ,但刷新后仍為“wll”,只要不關(guān)閉此窗口,任何刷新或打開(kāi)一個(gè)新窗口,都輸出
“wll”。即使關(guān)閉所有窗口 ,再運行test.jsp文件,輸出仍為 “wll”。除非關(guān)閉服務(wù)后又重啟,再運行
test.jsp文件,name的輸出為初始值”aaaa”。 scope=”request”時(shí),新建一文件test1.jsp內容與test.jsp一樣。先在瀏覽器
中運行test.jsp文件,輸出name的 值為初始值”aaaa”。再在在瀏覽器中運行test1.jsp文件,此時(shí)輸出為“wll”,
因為它們算是相同的request。

getProperty動(dòng)作

作用:用來(lái)返回一個(gè)已被創(chuàng  )建的bean組件的屬性值:

<jsp:getProperty name=”beanId” property=”propertyName” />
name:對應著(zhù)用useBean創(chuàng  )建bean組件時(shí)id的值
property:指明要得到哪個(gè)屬性的值

如:得到前例中student組件的屬性值:
<jsp:getProperty name=”student” property=”classno” />等價(jià):
<%=student.classno %> <jsp:getProperty name=”student” property=”name” /> <jsp:getProperty name=”student” property=”age” /> 輸出結果為: 12345 aaaa 21

setProperty 動(dòng)作

作用:用來(lái)設定一個(gè)已被創(chuàng  )建的bean組件的屬性值:
<jsp:setProperty name=”beanId” property=”propertyName” 
value=”propertyValue”/> name:對應著(zhù)用useBean創(chuàng )建bean組件時(shí)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” />
等價(jià):<% student.age=33;%> 輸出結果為: 56789 bbbb 33
內部對象
out(向客戶(hù)端輸出各種數據類(lèi)型)
重要方法:
out.print(類(lèi)型) 或 out.println(類(lèi)型):換行輸出

out.newLine():輸出一個(gè)換行符號

out.flush():輸出緩沖區的數據

out.close():關(guān)閉輸出流

out.clearBuffer():清除緩沖區里的數據,并把數據寫(xiě)到客戶(hù)端

out.clear():清除緩沖區里的數據,但不把數據寫(xiě)到客戶(hù)端

out.getBufferSize():獲得緩沖區的大小,緩沖區的大小可用<%@page 
buffer=”size”%>設置 out.getRemaining():獲得緩沖區沒(méi)有使用的空間的大小 out.isAutoFlush():返回布爾值,若auto flush則返回true,否則返回false。
是否auto fush我們可用%@page is AutoFlush=”true/false”%來(lái)設置 注意:中文顯示問(wèn)題 若是直接賦值的中文字符串,用<%@ page contentType=”text/html;
charset=gb2312”%>就可正常顯示。但不能用getStr(String name)函數
或類(lèi)似的函數轉換內碼,否則不能正常顯示中文。 若是request傳過(guò)來(lái)的中文字符串,必須要用getStr(String name)函數
或類(lèi)似的函數轉換內碼,否則不能正常顯示中文。 如:String aa=str; byte[] aa=aa.getBytes(“ISO8859-1”); String bb=new String(aa); 在不同平臺、不同的服務(wù)器jsp中文問(wèn)題的解決方法各不相同,可自行試驗。

request(接受客戶(hù)端輸入的信息)
作用:主要用于接受客戶(hù)端通過(guò)http協(xié)議連接傳輸到服務(wù)器端的數據。
方法:
getCookies():返回客戶(hù)端的cookie對象,結果是一個(gè)cookie數組

getHeader(String name):獲得http協(xié)議定義的傳送文件頭信息,
如:request.getHeader(“User-agent”)返回客戶(hù)端瀏覽器的版本號、
類(lèi)型 getAttribute(String name):返回name指定的屬性值,若不存在指定的
屬性,就返回空值(null)。 getattributeNames():返回request對象所有屬性的名字,結果集是一個(gè)
Enumeration(枚舉)類(lèi)的實(shí)例 getHeaderNames():返回所有request header的名字,結果集是一個(gè)
Enumeration(枚舉)類(lèi)的實(shí)例 getHeaders(String name):返回指定名字的request header的所有值,
結果集是一個(gè)Enumeration(枚舉)類(lèi)的實(shí)例 getMethod():獲得客戶(hù)端向服務(wù)器端傳送數據的方法有GET、POST、PUT等類(lèi)型 getParameter(String name):獲得客戶(hù)端傳送給服務(wù)器端的參數值,該參數由
name指定 get parameterNames():獲得客戶(hù)端傳送給服務(wù)器端的所有的參數名,結果集
是一個(gè) Enumeration(枚舉)類(lèi)的實(shí)例 getParameterValues(String name):獲得指定參數所有值 getQueryString()獲得查詢(xún)字符串,該串由客戶(hù)端以GET方法向服務(wù)器端傳送 getRequestURI():獲得發(fā)出請求字符串的客戶(hù)端地址 getServletPath():獲得客戶(hù)端所請求的腳本文件的文件路徑 setAttribute(String name,Java.lang.Object o):設定名字為name的
request參數值,該值由Object類(lèi)型的o指定 getServerName():獲得服務(wù)器的名字 getServerPort():獲得服務(wù)器的端口號 getRemoteAddr():獲得客戶(hù)端的IP地址 getRemoteHost():獲得客戶(hù)端電腦的名字,若失敗,則返回客戶(hù)端電腦的IP地址 getProtocol():獲取客戶(hù)端向服務(wù)器端傳送數據所依據的協(xié)議名稱(chēng),如http/1.1

application(保存用戶(hù)信息)
作用:一旦創(chuàng )建,除非服務(wù)器關(guān)閉,否則將一直保持下去
application.setAttribute(“name”,val)
request.setAttribute(“name”,val)
方法:
getAttribute(String name):返回由name指定名字的application對象屬性
的值,這是個(gè)Object對象 getattributeNames():返回所有application對象屬性的名字,結果集是一個(gè)
Enumeration(枚舉)類(lèi)的實(shí)例 getInitParameter(String name): 返回application栽個(gè)屬性的初始值,此
屬性由name指定 getServerInfo():獲得當前版本Servlet編譯器的信息 setAttribute(String name,Object object):用object來(lái)初始化某個(gè)屬性,
該屬性由name指定
 
response(控制http連接)
作用:向客戶(hù)端發(fā)送數據,如Cookie、HTTP文件關(guān)信息等。
方法:
addCookie(Cookie cookie):添加1個(gè)Cookie對象,用來(lái)保存客戶(hù)端的用戶(hù)
信息。用request的getcookies()方法可獲得這個(gè)Cookie
如:<% Cookie mycookie=new Cookie(“uname”,”wsr”);
response.addCookie(mycookie);
Cookie delmycookie=new cookie(“mycookie”,null);
delmycookie .setMaxAge(0);
delmycookie .setPath(/”);
response.addCookie(delmycookie);
%>

addHeader(String name,String value):添加HTTP文件頭,該header將會(huì )
傳到客戶(hù)端,若同名的header存在,原來(lái)的header會(huì )被覆蓋 containsHeader(String name):判斷指定名字的HTTP文件頭是否存在并返回
布爾值 sendError(int sc):向客戶(hù)端發(fā)送錯誤信息,如:505:服務(wù)器內部錯誤;
404:網(wǎng)頁(yè)找不到錯誤 如:response.sendError(response.SC_NO_CONTENT); setHeader(String name,String value):設定指定名字的HTTP文件頭的值,
若該值存在,它將會(huì )被新值覆蓋 如1:讓網(wǎng)頁(yè)每隔5秒刷新一次 <% response.setHeader(“Refresh”,”5”);%> the current dateis:<%=new Date()%> 如2:利用response對象設定HTTP頭 <% response.setContentType(“Application/pdf”); response.setHeader(“content-disposition”,
”attachment;filename=\”syntax.pdf\””); %> sendRedirect(“error.html”) //重定向功能

exception(處理異常和錯誤)
作用:處理JSP文件在執行時(shí)所有發(fā)生的錯誤和異常。有3個(gè)內建方法。
注意:必須在<%@ page isErrorPage=”true”%>的情況下才可以使用
Exception對象

getMessage():返回錯誤信息

printStackTrace():以標準錯誤的形式輸出一個(gè)錯誤和錯誤的堆棧

toString():以字符串的形式返回1個(gè)對異常的描述

session(保存用戶(hù)信息)
作用:分別保存每一個(gè)用戶(hù)的信息
session.putValue(“name”,val)
session.getValue(“name”)
注意:session中保存和檢索的信息不能是基本數據類(lèi)型,而必須是JAVA的相應的
Object對象。
方法:
getAttribute(String name):獲得指定名字的屬性,若該屬性不存在,將返回
null getattributeNames():返回session對象中存儲的第一個(gè)屬性對象,結果集是
一個(gè)Enumeration類(lèi)的實(shí)例 getCreationTime():返回該session對象創(chuàng )建的時(shí)間,以毫秒計,從1970年
1月1日起 getId():每生成一個(gè)session對象,服務(wù)器都會(huì )給其一個(gè)不會(huì )重復的編號,
此方法返回當前session的編號 getLastAccessedTime():返回當前session對象最后1次被操作的時(shí)間,
返回自1970年1月1日起至今的毫秒數 getMaxInactiveInterval():獲得session對象的生存時(shí)間 removeAttribute(String name):刪除指定的屬性(包括屬性名、屬性值) setAttribute(String name,Java.lang.Object value):設定指定名字的
屬性值,并將其存儲在session對象中
使用Java Bean組件
特點(diǎn):是可以在任何地方重用包括了可以在應用程序中、其它組件、文檔、
web站點(diǎn)和應用程序構造器工具的多種方案中再利用。

JavaBean的概念
JavaBean是一種獨立于平臺和結構的應用程序接口,它本身可以忽略?xún)炔?的結構及細節問(wèn)題,只需定義其外部的特征及對外功能就行。

它有三種接口面可以獨立對外進(jìn)行開(kāi)發(fā),就是:屬性、方法和事件
JavaBean的屬性

JSP組件的屬性有兩種:?jiǎn)沃祵傩?、索引屬?單值屬性:
相當于平時(shí)編程中定義的一個(gè)成員變量,它只能有一個(gè)數據值,這個(gè)數據值的類(lèi)型
可以是Java中的任意數據類(lèi)型,包括類(lèi)和接口。 如: int counter; float tax; String name; Date datetime; 注:一種特殊的單值屬性(布爾屬性),它只有兩種允許的值:true、false 索引屬性: 相當于平時(shí)說(shuō)的數組,當存放一批同類(lèi)型的數據時(shí),需要用到索引屬性。 如:int ID[]; String name[]; Float score[];

JavaBean的方法
方法包括構造方法和訪(fǎng)問(wèn)方法。
構造方法:

類(lèi)似于類(lèi)中的構造器(即對它及它的成員變量進(jìn)行初始化),它的方法名要和此
JavaBean的類(lèi)相同。如: package student; public class student{ int counter; ind ID[]; String name[]; float score[]; boolean whiszkid; public student(){ ID=new int[50]; name=new String[50]; score=new float[50]; counter=0; } }

訪(fǎng)問(wèn)方法:
就是對組件中定義的屬性的訪(fǎng)問(wèn),包括讀和寫(xiě)(一般情況與在Java中定義和使用的
方法差不多),注意它的取名規則: 讀取一個(gè)屬性:getXXX() 改寫(xiě)一個(gè)屬性:setXXX() 訪(fǎng)問(wèn)單值屬性:如對上面的counter單值屬性,它的兩個(gè)訪(fǎng)問(wèn)方法可以為: 讀取屬性值: public int getCounter{ return counter; } 改寫(xiě)屬性值: public void setCounter(int counter){ this.counter=counter; } 訪(fǎng)問(wèn)布爾型的單值屬性:對讀取屬性值采用isXXX()方法 如對上面的布爾型的屬性whizkid的訪(fǎng)問(wèn)可以為: public boolean isWhizkid(){ return whizkid; } 訪(fǎng)問(wèn)索引屬性:有時(shí)要定義好幾個(gè)訪(fǎng)問(wèn)方法,但它們的取名規則還是一樣的, 如對上面的姓名屬性,它的讀取和改寫(xiě)方法需這樣定義: 讀取索引屬性中的一個(gè)屬性值: public String getName(int index){ return name[index]; } 讀取索引屬性中的所有屬性值: public String[] getName(){ return name; } 改寫(xiě)索引屬性中的一個(gè)屬性值: public void setName(int index,String str){ name[index]=str; } 改寫(xiě)索引屬性中的所有屬性值: public void setName(String[] str){ name=str;; }


在JSP中創(chuàng )建用JavaBean編寫(xiě)的一個(gè)bean,實(shí)際上就是創(chuàng )建此類(lèi)的一個(gè)對象。

客戶(hù)端與服務(wù)器端的工作


客戶(hù)端做的工作    

客戶(hù)端的工作可分兩部分:
一、向服務(wù)器端發(fā)出請求即向服務(wù)器端發(fā)出提交
二、在客戶(hù)端進(jìn)行校驗、以及頁(yè)面的修飾等功能


客戶(hù)端提交的方法
客戶(hù)端的提交方法分兩種:get與post提交

get可傳遞的信息只有2kb左右,而且是明碼傳送信息,所有的信息均可在地址欄中
看見(jiàn)。 post可傳遞大量信息,加密傳送,所有的信息均可在地址欄中是不可見(jiàn)的。 post提交 所有的post提交只能在form中產(chǎn)生,提交方式又分兩種:直接提交(submit提交)、
間接提交(腳本提交) 1)直接提交:點(diǎn)擊提交按鈕,立即發(fā)生提交 <form method=post action=*.asp> <input type=submit value=”注冊”> 注:submit按鈕有一個(gè)默認事件,就是提交 <input type=submit value=”注冊” onclick=”alert(‘hello’);
return ture or false;”> 注:在提交前,首先在屏幕上返回一個(gè)警告框”hello”,若return的是true,
則頁(yè)面發(fā)生提交;若return的是false,頁(yè)面不會(huì )發(fā)生提交。 </form> 2)間接提交:是指點(diǎn)擊按鈕本身并不能完成提交,而只有通過(guò)腳本才能完成的
提交,稱(chēng)為間接提交。 <input type=button value=”注冊” onclick=”check();submit();”> 注: 在onclick處還可為onmousedown、onmouseup等事件名稱(chēng) button只是普通按鈕,本身并不能發(fā)生提交,只能通過(guò)onclick指定的腳本程序
才能完成提交 點(diǎn)擊“注冊”后,先執行onclick事件觸發(fā)的函數,若返回值為true則發(fā)生提交,
否則提交中止。 get提交 get提交發(fā)生在form表單和url中 1)在form中產(chǎn)生的 <form method=get action=*.asp> 2)在所有的url中產(chǎn)生的 在地址欄中輸入url地址,后跟所要傳遞的參數http://*.asp?name=www&age=20 在超鏈接上<a href=”*.asp>mode=1&grade=1”>click me </a> 在圖片的src屬性中<img src=”*.asp?name=www”> 在幀里的src屬性中<frame src=” *.asp?name=www” name=框架名> 在asp重定向語(yǔ)句中response.redirect ” *.asp?name=www” 在客戶(hù)端對象document中:Document.location=” http:// *.asp?name=www” 在客戶(hù)端對象window中:window.open(” http:// *.asp?name=www”)

服務(wù)器端做的工作
獲得客戶(hù)端信息的方法是通過(guò)request對象來(lái)完成的。

客戶(hù)端提交到服務(wù)器端的信息分為三類(lèi):
第一類(lèi):客戶(hù)機信息(包括客戶(hù)端的ip地址、端口號、主機名、提交方式等等)
第二類(lèi):通過(guò)form或url方式提交到服務(wù)器端的信息
第三類(lèi):cookie信息

獲得第一類(lèi)信息用:

request.getHeader(“User-agent”)返回客戶(hù)端瀏覽器的版本號、類(lèi)型

getHeader(String name):獲得http協(xié)議定義的傳送文件頭信息,

request. getMethod():獲得客戶(hù)端向服務(wù)器端傳送數據的方法有GET、POST、
PUT等類(lèi)型 request. getRequestURI():獲得發(fā)出請求字符串的客戶(hù)端地址 request. getServletPath():獲得客戶(hù)端所請求的腳本文件的文件路徑 request. getServerName():獲得服務(wù)器的名字 request.getServerPort():獲得服務(wù)器的端口號 request.getRemoteAddr():獲得客戶(hù)端的IP地址 request.getRemoteHost():獲得客戶(hù)端電腦的名字,若失敗,則返回客戶(hù)端
電腦的IP地址 request.getProtocol(): request.getHeaderNames():返回所有request header的名字,結果集是
一個(gè)Enumeration(枚舉)類(lèi)的實(shí)例 request.getHeaders(String name):返回指定名字的request header的
所有值,結果集是一個(gè)Enumeration(枚舉)類(lèi)的實(shí)例


獲得第二類(lèi) get 信息用:

request. getQueryString(“變量名呀或控件名”)獲得查詢(xún)字符串,該串由
客戶(hù)端以GET方法向服務(wù)器端傳送


獲得第二類(lèi) post 信息用:

request.getParameter(String name):獲得客戶(hù)端傳送給服務(wù)器端的參數值,
該參數由name指定 request.getParameterNames():獲得客戶(hù)端傳送給服務(wù)器端的所有的參數名,
結果集是一個(gè)Enumeration(枚舉)類(lèi)的實(shí)例 request.getParameterValues(String name):獲得指定參數所有值


獲得第三類(lèi)Cookie信息用:

request.getCookies( “cookie變量名”):返回客戶(hù)端的cookie對象,結果是
一個(gè)cookie數組

數據庫初級部分 為了大家方便,以ACCESS為例
配置步驟: 在“開(kāi)始”——“設置”——“控制面板”——“管理工具”——“數據源(ODBC)”——“系統DSN”——“添加”——“選擇數據源驅動(dòng)程序”——“完成”
——“ODBC安裝填寫(xiě)數據源名,點(diǎn)擊‘確定’”——“完成”即可。

數據庫連接的五要素:

IP地址
端口號(端口號對某個(gè)數據庫服務(wù)是基本固定的,除非特別設定)意味著(zhù)對應的數據庫的驅動(dòng)程序
選擇數據庫
賬號、密碼(是分配給數據庫的)
發(fā)出SQL語(yǔ)句(通過(guò)Statement對象發(fā)送)

JDBC原理

JDBC是JAVA與數據的連接。因為ODBC是完全用C語(yǔ)言編寫(xiě)的,而JAVA中實(shí)現與C語(yǔ)言程序的通信是比較困難的,因此就產(chǎn)生了由JAVA語(yǔ)言編寫(xiě)的用于JAVA程序與數據庫連接的接口技術(shù)。
JDBC與數據庫的連接


JDBC與具體的某種數據庫連接,是直接通過(guò)JDBC API類(lèi)庫中的類(lèi)來(lái)自動(dòng)裝載驅動(dòng)程序的。此類(lèi)庫一般在java.sql包中,它包含了用于實(shí)現與數據庫連接的其它功能的類(lèi),包括與數據庫建立連接、傳送查詢(xún)和接受查詢(xún)結果。以下四個(gè)類(lèi)的詳細介紹:
作用:

與數據庫建立連接
發(fā)送SQL語(yǔ)句
處理結果
connection cn=DriverManager.getConnection(“jdbc:odbc:wombat”,”login”,”password”);
Statement stmt=cn.createStatement();//發(fā)送SQL語(yǔ)句
ResultSet rs=stmt.executeQuery(“select a,b,c from table1”);
while(rs.next()){
int x=rs.getInt(“a”);
String s=rs.getString(“b”);
float f=rs.getFloat(“c”);
}//處理結果

DriverManager類(lèi)此類(lèi)用于裝載驅動(dòng)程序,它所有的成員都是靜態(tài)成員,所以在程序中無(wú)須對它進(jìn)行實(shí)例化,直接通過(guò)類(lèi)名就可以訪(fǎng)問(wèn)它。DriverManager類(lèi)是JDBC的管理層,作用于用戶(hù)和驅動(dòng)程序間

加載驅動(dòng)程序
Class.forName(“公司名.數據庫名.驅動(dòng)程序名”)
如:Class.forName(“sun.jdbc.odbc.jdbcOdbcDriver”)

建立連接
加載Driver類(lèi)并在DriverManager類(lèi)注冊后,就可用來(lái)與數據庫建立連接。當調用Driver.Manager.getConnection()發(fā)出連連接請求時(shí),DriverManager將檢查每個(gè)驅動(dòng)程序,看它是否可以建立連接。

方法:Connection getConnection(String url,String user,String password)
其中user和password是登錄數據庫的用戶(hù)和密碼
第一個(gè)參數是指向數據庫的url,它的格式如下:
jdbc:(subprotocol):(subname)
subprotocol:子協(xié)議,指定連接何種數據庫或用什么方式連接數據庫
subname:確立一個(gè)連接,可以是一個(gè)數據源名,也可以是指向一個(gè)網(wǎng)上數據庫

如:以下是通常用驅動(dòng)程序(JDBC-ODBC橋驅動(dòng)程序),并連一個(gè)student數據源,用匿名登錄的的示例:
Class.forName(“sun.jdbc.odbc.jdbcOdbcDriver”);//加載驅動(dòng)程序
String url=”jdbc:odbc:student”;
Connection cn=DriverManager.getConnection(url,”anonymous”,””);
GetConnection():返回一個(gè)連接類(lèi)對象。若成功,此對象就指向此數據庫的一個(gè)連接;否則,此對象將為空null
Connection類(lèi)connection類(lèi)是指向同一個(gè)數據庫的連接。作用:管理指向數據庫的連接,如:向數據庫發(fā)送查詢(xún)和接收數據庫的查詢(xún)結果都是在它基礎上的;完成同數據庫的連接的所有任務(wù)之后關(guān)閉此連接。

方法:
Statement createStatment():新建一個(gè)Statement對象,此對象可以向數據庫發(fā)送查詢(xún)信息
void close():關(guān)閉同數據庫的連接并釋放占有的JDBC資源
Boolean isClose():判斷是否仍與數據庫連接Statement類(lèi)作用:Statement對象用于將SQL語(yǔ)句發(fā)送到數據庫中。 創(chuàng )建Statement對象建立了到特定數據庫的連接后,就可用該連接發(fā)送SQL語(yǔ)句。Statement對象用Connection的方法createStatement創(chuàng )建。
Connection cn=DriverManager.getconnection(rul,”sunny”,””);
statement stmt=cn.createStatement();
為了執行Statement對象,被發(fā)送到數據庫的SQL語(yǔ)句將被作為參數提供給Statement的方法
ResultSet rs=stmt.executeQuery(“select a,b,c from table2”);
使用Statement對象執行語(yǔ)句Statement接口提供了三種執行SQL語(yǔ)句的方法
executeQuery():用于產(chǎn)生單個(gè)結果集的語(yǔ)句,如:select語(yǔ)句

executeUpdate():用于執行insert、update或delete、語(yǔ)句等,
返回值是一個(gè)整數,指示受影響的行數(即更新計數)

execute():用于執行返回多個(gè)結果集、多個(gè)更新計數或二者組合的語(yǔ)句語(yǔ)句完成語(yǔ)句在已執行且所有結果返回時(shí),即認為已完成。對于返回一個(gè)結果集的executeQuery()方法,在檢索完ResultSet對象
的所有行時(shí)該語(yǔ)句完成。

對于方法executeUpdate(),當它執行時(shí)語(yǔ)句即完成

在少數調用execute()的情況下,只有在檢索所有結果集或它生成的更新計數之后語(yǔ)句才完成
關(guān)閉Statement對象 Statement對象將由Java垃圾收集程序自動(dòng)關(guān)閉。但我們最好顯示地關(guān)閉它們,因為會(huì )立即釋放數據管理系統資源,有助避免潛在內存問(wèn)題。主要方法
ResultSet executeQuery(String sql):返回一個(gè)靜態(tài)的sql查詢(xún)結果

int executeUpdate(String sql):查詢(xún)一行sql聲明中insert、update、delete的數目或返回0

void close():關(guān)閉同數據庫的連接和所占有的JDBC資源

ResultSet類(lèi)(紀錄集)作用:裝載查詢(xún)結果,并可以通過(guò)它的不同方法提取出查詢(xún)結果。ResultSet包含符合SQL語(yǔ)句中條件的所有行,且它通過(guò)一套get方法(這些get方法可以訪(fǎng)問(wèn)當前行中的不同列)提供了對這些行中數據的訪(fǎng)問(wèn)。
ResultSet.next():將紀錄指針移動(dòng)到ResultSet紀錄集的下一行,使之成為當前行。
注:紀錄集是一張二維表,其中有查詢(xún)所返回的列標題及相應的值。

對于方法executeUpdate(),當它執行時(shí)語(yǔ)句即完成
在少數調用execute()的情況下,只有在檢索所有結果集或它生成的更新計數之后語(yǔ)句才完
-------結束!PS:此教程為本人收集的內容,做了一些整理,是JSP的基礎。


>>點(diǎn)擊查看更多關(guān)于: JSP-----循序漸進(jìn)教程
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JSP內置對象
JSP中的九大內置對象
JSP內置對象_垂柳迎風(fēng)111
JSP 總結
j2ee四大作用域pagecontext,request,session,ServletContext
Servlet面試題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久