天行健,君子以自強不息。
這句話我雖然理解不深,但我認為學習絕非一個人的事,它需要與其它人交流,如果只是悶頭學,可能一天就能理解了的東西,你要理解一年,甚至更長。
希望各位高人能對我的學習進行指導,部分問題在此處提出,如果你知道或有理解,請予以評論,謝謝。
-------------------------------------------
1、標簽庫
我知道了標簽庫的概念,但我不知道在現在這種框架開發模式下,是否還需要學習標簽庫的開發等,請指導。此處的學習我先略過了,等需要時再看吧。
2、用戶跟蹤
對訪問站點的用戶進行跟蹤,可以有以下方法(三種主要機制):Cookies、URL 重寫、隱藏式表單域
操作Cookies:
<%
Cookie mycookie=new Cookie("user","wuxs");//創建一個Cookie對象
mycookie.setMaxAge(24*60*60);//設置Cookie的存活期
response.addCookie(mycookie);//將Cookie存儲
%>
<%
//獲取Cookie
Cookie[] cookielist=request.getCookies();
..........
Cookie mycookie=cookielist[i];
if (mycookie.getName.equals("user")){out.println(mycookie.getValue());}
%>
使用會話,Session:
使頁面可以支持會話:<% page language="java" import="java.util.*" session="true" %>,默認是支持的,如果要使其不支持會話,則可以將其設為false
在Session中存儲數據:
Integer i=new Integer(1);
session.setAttribute("userAccessTimes",i);
如上,保存會話的屬性值用的是整型對象而不是簡單數據類型int。因為 Session 對象只能存儲對象,而不能保存像int 這樣的簡單數據類型。
獲取Session中的數據:
Integer i=(Integer) session.getAttribute("user");
檢查新會話:
if (session.isNew()){....} //什么是新會話?
獲取會話標識符:
String sid=session.getId();
刪除會話:
當不需要會話時,可以立即將會話失效。session.invalidate();
會話超時:
由于http 協議是無狀態的,因此判斷用戶是否活動的唯一機制是超時。所以要確保會話定期刷新。
可以使用session.getMaxInactiveInterval()方法獲取最大超時時間,可以用session.setMaxInactiveInterval()方法進行設置。
在配置文件中web.xml這樣設置:
<webapp>
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
</webapp>
可以將會話設為永不超時。
會話范圍:有page , session ,request , application ,但沒有理解
application 對象:
application 對象提供方法:getAttribute()、setAttribute()、getAttributeNames()、removeAttribute()
邊學邊更新中....
1、如何從表單獲取參數值?
request.getParameter("pname");
如何從表單獲取多個值?
request.getParameterValus("pname");
request 是J2EE Web容器提供的隱含變量,request 對象的類型是HTTPServletRequest。
2、java.io.Serializable 是做什么用的?
3、 每個JavaBean 或類在修改后,都要重新執行編譯才能使用,目前知道的方法是重新啟動服務器,不知道還有沒有其它方法;
4、JavaBean 與 EJB 有很大的不同,JavaBean 可以理解為單個類來使用,它可以在服務器端(<%%>)使用,也可以在客戶端(使用標簽:jsp:userBean)使用;而EJB 是具有事務處理,數據庫連接池、安全等功能的服務器組件,EJB 很復雜。
要把一個類作為JavaBean 使用,其構造函數必須為空。
5、標簽庫:
標簽庫處理程序類、標簽庫描述符(TLD)、標簽庫指示這三部分是使用標簽庫的最重要的概念。
6、Java 中的類的概念
抽象類與接口的區別:
a、抽象類可以實現一部分方法,而接口所有的方法都沒有實現;b、子類只可以從一個超類繼承,但可以實現多個接口
方法的重載:
類中的同名方法,如果參數不同,則為方法的重載;
如果類實現了父類的方法,也為重載。
main() 方法:每個JAVA應用程序都有一個main() 方法,這個方法是應用程序的入口點,它的定義為:
public static void main(String[] args)
7、集(Collection)的概念,集框架提供了一組設計好的接口,把集分成三類:
集合(java.util.Set)
列表(java.util.List)
映射(java.util.Map)
集合(Sets)是一組無序的對象;
列表(Lists)是一組有序的對象;
映射(Maps)是一組成對保存的對象;
在java.util 中,有9種集類用來操作上述三種接口的集;列表如下:
接口 集類
Set HashSet , TreeSet
List Vector , Stack , ArrayList , LinkedList
Map HashTable , TreeMap , HashMap , WeakHashMap
最常用的三個集類是:ArrayList , Stack , HashMap
8、ArrayList 的容量:capacity ,是指可存放的對象的多少;
ArrayList 的大小:Size ,是指當前存放的對象的多少;
9、集的循環接口 Iterator
引入類:java.util.Iterator
然后對集類調用iterator()方法,得到一個循環子 iterator,該類具有三個方法:next() , hasNext() , remove()
import java.util.Iterator;
Iterator userIter=userList.iterator();
while(userIter.hasNext()){
User usr=(User) userIter.next();
out.println(usr.getUserName());
}
10、ArrayList 的排序
ArrayList 可以排序,這個功能是由集框架的一個靜態方法提供的,引入:java.util.Collections
舉例:
ArrayList names=new ArrayList();
names.add("aaaa");
names.add("cccc");
names.add("bbbb");
此時,如果用循環子輸出,得到的結果同上;
Collections.sort(names);
此時再用循環子輸出,得到的是aaaa,bbbb,cccc
但,要對自定義的類進行排序,就需要在類中實現java.lang.Comparable 接口。
11、棧集,Stack,先進后出
類:java.util.Stack
基本操作:
push() ,向棧中放入一個項
pop(),從棧頂刪除一個項
----
peek(),從棧頂返回一個項,但不刪除
empty(),棧是否為空
search(),在棧中查找某個對象,,找到后返回離棧頂的偏移;否則,返回-1
12、HashMap 集
類:java.util.HashMap
基本操作:
put(),放入一對值;
get(),根據鍵獲取關聯值;
----
remove(),從映射中刪除指定鍵的值,并返回該值
size(),返回鍵值對的數量
putAll(),將某個“鍵--值對”對象傳遞給另一個“鍵-值對”
13、Date類和Time類
日期的比較:
Date myDate=new Date();
Date currentDate=new Date();
myDate.compareTo(currentDate);
如果相等返回0,如果調用方法的值晚,則返回正數;如果調用方法的值早,則返回負數;
日歷類:
java.util.Calendar,其中包含了多種日歷類;
羅馬日歷類:GregorianCalendar
格式化日期:
java.text.SimpleDateFormat,允許我們自定義格式化模式;
14、錯誤處理
錯誤有兩種,一種是Error,叫錯誤,代碼中不能處理;一種是Exception ,叫異常,代碼中可處理;
拋出異常用 throw 語句。如:throw new Exception("Bad things just happened");
處理異常的方式:
內部方式:在try塊中可以捕獲拋出的異常,可以在catch 塊中處理;
外部方式:拋出異常的方法聲明了該異常可以處理,如下:
public void validateUser(pageContext page) throws Exception
實例:
public void validateUser() throws Exception(){
if(!userpwd.equals("wuxs")){
Exception trouble=new Exception("密碼不正確。");
throw trouble;
}
}
14、JSP中的錯誤處理頁
錯誤處理頁和其它JSP頁面頁一樣,但增加了隱含的對象用于跟蹤錯誤。
創建一個錯誤處理頁有4步:
A)、讓JSP頁面知道一旦出錯要用哪個錯誤處理頁。<%@ page errorPage="error.jsp" %>
B)、構建錯誤處理頁面;
C)、在錯誤處理頁,設置page指示的isErrorPage 屬性為真。這個屬性告訴JSP容器為錯誤處理頁面去創建一個exception 隱含對象。<% page isErrorPage="true" %>
D)、在錯誤處理頁面中,exception 隱含對象指向一個在原始JSP頁面中出現的異常,可以通過代碼進行處理。
學習就像游泳,剛開始學的時候,總是怕被水嗆著,于是總想把頭露出來;可是發現身子總往下沉;等學會游泳了,發現想往水下游是那么的不容易,身子總往水上漂。
而學一門技術,一開始總是發現有很多很深奧的東西想知道,卻怎么也弄不明白;等你學會了,卻發現有好多一開始清楚的概念反而模糊了。
--------------------------------------------
Java 是門語言;J2EE 是個平臺,用來在其上建筑其它的內容。
JavaBean 是類包;(在第二天的學習中發現,JavaBean 是類,并且是一個構造函數不帶任何參數的類,是否正確,還要繼續驗證)
Servelet 是可以與JavaBean 及Jdk 打交道的一個東西,Jsp 其實就編譯成了一個Servelet。
EJB 還說不清;
框架是基于Java 基礎類庫,為解決各類問題而設計的一種解決方案;
Spring 、Struts、Hibernate、DWR都是框架;
框架并不是互相不兼容的,而是多種框架可以共存。
MyEclipse 和Eclipse是開發環境,類似于.Net 的Visual Studio ,開發環境并沒有提供任何框架的技術,而是允許你將各種技術在這個環境中更容易的使用。
---------------------------------------------------------
新手學習筆記,僅供高手指導,不要以我為參考。