如果提交時(shí)沒有輸入號(hào)碼,則$_POST['phone'];是不存在的。幫$phone也是未定義的。你首先就應(yīng)該用isset判斷
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的安圖網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
jsp一共有9個(gè)內(nèi)置對(duì)象,分別是以下9個(gè):
1.Request對(duì)象
發(fā)送請(qǐng)求時(shí),該對(duì)象被創(chuàng)建,一次請(qǐng)求結(jié)束后即銷毀。(一次請(qǐng)求產(chǎn)生一個(gè)request對(duì)象)
該對(duì)象封裝了用戶提交的信息,通過調(diào)用該對(duì)象相應(yīng)的方法要以獲取封裝的信息。即,使用該對(duì)象可以獲取用戶提交的信息。
當(dāng)Request對(duì)象獲取客戶提交的內(nèi)容為漢字字符時(shí),會(huì)出現(xiàn)亂碼現(xiàn)象,則必須進(jìn)行特殊處理。首先,將獲取的字符串用ISO8859-1進(jìn)行編碼,并將編碼存放到一個(gè)字節(jié)數(shù)組中,然后將這個(gè)數(shù)組轉(zhuǎn)化為字符串對(duì)象即可。如下代碼:
String text = request.getParameter("body");
byte [] b = text.getBytes("ISO8859-1"); //將text字符串轉(zhuǎn)換成字節(jié)數(shù)組---編碼的過程
text = new String(b); //構(gòu)造字符串,按照當(dāng)前操作系統(tǒng)的字符集進(jìn)行構(gòu)造。將字節(jié)轉(zhuǎn)換成字符串---解碼的過程
Request常用的方法:
getParameter(String s) ----- 獲取表單提交的信息
String s = request.getParameter("name");
getProtocol() -----獲取客戶使用的協(xié)議
String s = request.getProtocol() ;
getServletPath() ----獲取客戶提交信息的頁(yè)面
String s = request.getServletPath();
getMethod() -----獲取客戶提交信息的方式 get或post
String s = request.getMethod();
getHeader() ----- 獲取HTTP頭文件中的accept、accept-encoding和host的值
String s = request.getHeader("accept");
getRemoteAddr() --獲取客戶的ip地址
String s = request.getRemoteAddr();
getServerHost() ---獲取客戶機(jī)的名稱
String s = request.getServerHost();
getServerName() ---獲取服務(wù)器名稱
String s = request.getServerName();
getServerPort() ----獲取服務(wù)器的商口號(hào)
String s = request.getServerPort();
getPamameterNames() ----獲取客戶端提交的所有參數(shù)的名字
Enumeration enum = request.getParameterNames();
while(enum.hasMoreElements()){
String s = (String) enum.nextElement();
out.println(s);
}
2. Response對(duì)象:對(duì)客戶的請(qǐng)求做出動(dòng)態(tài)響應(yīng),向客戶端發(fā)送數(shù)據(jù)。響應(yīng)客戶請(qǐng)求時(shí)創(chuàng)建,響應(yīng)結(jié)束時(shí)銷毀。(一次響應(yīng)產(chǎn)生一個(gè)response對(duì)象)
動(dòng)態(tài)響應(yīng)contentType屬性
當(dāng)一個(gè)用戶訪問了一個(gè)jsp頁(yè)面時(shí),如果該頁(yè)面用page指令設(shè)置頁(yè)面的contentType屬性為text/html,那么jsp引擎將按照這個(gè)屬性值做出反應(yīng)。如果要?jiǎng)討B(tài)改變這個(gè)屬性值來響應(yīng)客戶,就需要使用Response對(duì)象的setContentType(String s);方法來改變contentType屬性的值。
格式:response.setContentType(String s) -----參數(shù)s可?。簍ext/html,application/x-msexcel,application/msword等
Response重定向
在某些情況下,當(dāng)響應(yīng)客戶時(shí),需要將客戶重新引導(dǎo)到另一個(gè)頁(yè)面,可以使用Response的sendRedirect(URL);方法,實(shí)現(xiàn)客戶的重定向
格式:response.sendRedirect("index.jsp");
3. Session對(duì)象: 在頁(yè)面的page指令加上session="true" 或缺省 情況下以及在servlet中使用request.getSession();的方式進(jìn)行創(chuàng)建。超時(shí)或服務(wù)停止時(shí),session結(jié)束。(一個(gè)用戶對(duì)應(yīng)一個(gè)session對(duì)象)
什么是session對(duì)象? ----- 它是一個(gè)jsp內(nèi)置對(duì)象,它在第一個(gè)jsp被裝載時(shí)自動(dòng)創(chuàng)建,完成會(huì)話期管理。從一個(gè)客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離 開這個(gè)服務(wù)器結(jié)束(或者超時(shí)),被稱為一個(gè)會(huì)話。當(dāng)一個(gè)客戶訪問一個(gè)服務(wù)器時(shí),可能會(huì)在這個(gè)服務(wù)器的幾個(gè)頁(yè)面之間切換,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是一個(gè)客戶,就需要?jiǎng)?chuàng)建session對(duì)象。
session對(duì)象的ID -----當(dāng)一個(gè)客戶首次訪問服務(wù)器上的一個(gè)jsp頁(yè)面時(shí),jsp引擎會(huì)產(chǎn)生一個(gè)session對(duì)象,同時(shí)分配一個(gè)String類型的的ID號(hào),jsp引擎同時(shí)將這個(gè)ID號(hào)發(fā)送到客戶端,存放在cookie中,這樣,session對(duì)象直到客戶關(guān)閉瀏覽器后,服務(wù)器端,該客戶的session對(duì)象才會(huì)消失,會(huì)并,和客戶的會(huì)話對(duì)應(yīng)關(guān)系消失。當(dāng)客戶重新打開瀏覽器再連接到該服務(wù)器時(shí),服務(wù)器為該客戶再創(chuàng)建一個(gè)新的session對(duì)象。
session對(duì)象的常用方法:
public String getId() ----獲取Session對(duì)象的編號(hào)
pulbic void setAttribute(String key,Object obj) --- 將參數(shù)object指定的對(duì)象obj添加到Session對(duì)象中,并為添加的對(duì)象指定一個(gè)索引關(guān)鍵字
public Object getAttribute(String key) --- 獲取session對(duì)象中含有關(guān)鍵字的對(duì)象
public Blooean isNew() ----判斷是否為一個(gè)新的客戶
4. Application對(duì)象:?jiǎn)?dòng)服務(wù)時(shí)創(chuàng)建,停止服務(wù)時(shí)銷毀。(整個(gè)程序只有一個(gè)application對(duì)象)
什么是Application對(duì)象? --- 服務(wù)器啟動(dòng)后就產(chǎn)生了這個(gè)Application對(duì)象,當(dāng)客戶在所訪問的的網(wǎng)站的各個(gè)頁(yè)面之間瀏覽時(shí),這個(gè)Application對(duì)象都是同一個(gè),直到服務(wù)器關(guān)閉。但是,與session對(duì)象不同的是,所有客戶的Application對(duì)象都是同一個(gè),即,所有客戶共享這個(gè)內(nèi)置的Application對(duì)象。
Application對(duì)象的常用方法
setAttribute(String key,Ojbect obj) ----將參數(shù)obj添加到Application對(duì)象中,并為添加的對(duì)象指定一個(gè)索引關(guān)鍵字
getAttribute(String key); ---- 獲取Application對(duì)象中含有關(guān)鍵字的對(duì)象
5.Out對(duì)象:請(qǐng)求時(shí),就創(chuàng)建,請(qǐng)求結(jié)束時(shí),銷毀。(一個(gè)請(qǐng)求,創(chuàng)建一個(gè)out對(duì)象)
Out對(duì)象是一個(gè)輸出流,用來向客戶端輸出數(shù)據(jù)。out對(duì)象用于各種數(shù)據(jù)的輸出。其常用方法如下:
out.print(); ---- 向?yàn)g覽器輸出各種類型數(shù)據(jù)
out.newLine(); --- 輸出一個(gè)換行符
out.close(); ---關(guān)閉流
6.cookie對(duì)象:
什么是cookie?----cookie是web服務(wù)器保存在用戶硬盤上的一段文本。cookie允許一個(gè)web站點(diǎn)在用戶電腦上保存信息并且隨后再取它。
舉例來說,一個(gè)web站點(diǎn)可能會(huì)為每一個(gè)訪問者產(chǎn)生一個(gè)唯一的ID、然后以cookie文件的形式保存在每個(gè)用戶的機(jī)器上。
如果用戶選擇的是IE瀏覽器訪問web,用戶就會(huì)看到所有保存在自己硬盤上的cookie。它們最常存放的地方是:c:/Windows/Cookies。cookie是以”關(guān)鍵字 key = 值 value“的格式來保存記錄的。
創(chuàng)建一個(gè)cookie對(duì)象
調(diào)用cookid對(duì)象的構(gòu)造函數(shù)就可以創(chuàng)建cookie對(duì)象。cookie的構(gòu)造函數(shù)有兩個(gè)字符串參數(shù):cookie名字和cookie值。
如:Cookie c = new Cookie("username","hyc");
將cookie對(duì)象傳送到客戶端
在jsp中,如果要將封裝好的cookie對(duì)象傳送到客戶端,可使用Response對(duì)象的addCookie()方法
如:Response.addCookie();
讀取保存在客戶端的cookie
使用request對(duì)象的getCookie()方法,執(zhí)行時(shí),將所有客戶端傳來的cookie對(duì)象以數(shù)組的形式排列。如果要取出更符合需求的cookie對(duì)象,就需要循環(huán)比較數(shù)組內(nèi)每個(gè)對(duì)象的關(guān)鍵字。
如:Cookie [] c = request.getCookies();
if (c! = null){
for (int i = 0;ic.length;i++){
if("username".equals("c,getName))
out.println(c.getValue());
}
}
設(shè)置cookie對(duì)象的有效時(shí)間
調(diào)用cookie對(duì)象的setMaxAge()方法,可以設(shè)置cookie對(duì)象的有效時(shí)間。如
Cookie c = new Cookie("username","hyc");
c.setMaxAge(3600);
cookie應(yīng)用
cookie對(duì)象的典型應(yīng)用是用來統(tǒng)計(jì)網(wǎng)站的訪問人數(shù)。由于代理服務(wù)器、緩存等的使用,唯一能幫助網(wǎng)站精確統(tǒng)計(jì)來訪人數(shù)的方法就是為每個(gè)訪問者建立一個(gè)唯 一的ID。使用cookie,網(wǎng)站可以完成以下工作
測(cè)試定多少人訪問過;
測(cè)定訪問者有多少是新用戶(即第一次來訪)、有多少老用戶;
測(cè)定一個(gè)用戶多久訪問一次網(wǎng)站
當(dāng)一個(gè)用戶第一次訪問時(shí),網(wǎng)站在數(shù)據(jù)庫(kù)中建立一個(gè)新的ID,并把ID通過Cookie傳送給用戶。用戶再次來訪時(shí),網(wǎng)站把該用戶的ID對(duì)應(yīng)的計(jì)數(shù)器加1,得到用戶來訪的次數(shù)。
7.config對(duì)象:配置對(duì)象
8.page對(duì)象:頁(yè)面對(duì)象
9.Exception對(duì)象:在處理異常的網(wǎng)頁(yè)中可以直接訪問exception隱式對(duì)象
mysql
偶爾掉線
如果你是
windows系統(tǒng)
那么可能是系統(tǒng)補(bǔ)丁造成的
進(jìn)入控制面板
---
添加和刪除程序
(
要勾選上方的“顯示更新”
),找到kb967723這個(gè)補(bǔ)丁,然后卸載掉。卸載中會(huì)提示你,如果卸載可能導(dǎo)致程序運(yùn)行出錯(cuò),沒關(guān)系,選擇“是”,繼續(xù)卸載。
卸載掉這個(gè)補(bǔ)丁問題就可以解決了
未定義錯(cuò)誤,這個(gè)根據(jù)你的PHP版本不同而確定。
在PHP5.2.6之前的版本中變量未定義的話,一般不會(huì)有提示。這個(gè)是在php.ini里默認(rèn)配置忽略了。
而在PHP5.3版本及以上,是打開的,如果你運(yùn)行的是5.3版本及以上。可以通過修改php.ini中的error_reporting配置項(xiàng),進(jìn)設(shè)置忽略。這樣不會(huì)提示這個(gè)錯(cuò)誤了。
不過還是建議你找到這兩處定義的位置,進(jìn)行聲明。
代碼需要規(guī)范,規(guī)范不是一個(gè)概念,是一點(diǎn)一點(diǎn)的積累。所以強(qiáng)化要求自己的代碼書寫吧。:)
希望對(duì)你有幫助。