當前位置:首頁 » 編程語言 » 在java中使用

在java中使用

發布時間: 2022-08-26 17:16:46

java中怎麼使用session

不考慮框架下,在JAVA中使用session

大概有以下幾種使用方法:

1、前台設置:利用jsp的內置對象session進行設置。
<%
session.setAttribute("username",username);
%>
2、後台設置:
(1)Filter設置:
{
@Override
publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainchain)throwsIOException,ServletException{
//把請求和響應對象強制轉換為HttpServlet域對象
HttpServletRequestrequest=(HttpServletRequest)arg0;
HttpServletResponseresponce=(HttpServletResponse)arg1;
HttpSessionsession=request.getSession(false);
session.setAttribute("username",username);
}
}
(2)Servlet設置:
{
//doGet()與doPost()任選
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//創建session對象
HttpSessionsession=request.getSession(false);
session.setAttribute("username",username);
}
}

(1)在java中使用擴展閱讀:

Session:在計算機中,尤其是在網路應用中,稱為「會話控制」。Session
對象存儲特定用戶會話所需的屬性及配置信息。

這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session
對象中的變數將不會丟失,而是在整個用戶會話中一直存在下去。

當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web
伺服器將自動創建一個 Session 對象。當會話過期或被放棄後,伺服器將終止該會話。

Session
對象最常見的一個用法就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。

有關使用
Session 對象的詳細信息,請參閱「ASP 應用程序」部分的「管理會話」。注意 會話狀態僅在支持 cookie 的瀏覽器中保留。

session的工作原理:

1、當一個session第一次被啟用時,一個唯一的標識被存儲於本地的cookie中。

2、首先使用session_start()函數,php從session倉庫中載入已經存儲的session變數。

3、當執行PHP腳本時,通過使用session_register()函數注冊session變數。

4、當PHP腳本執行結束時,未被銷毀的session變數會被自動保存在本地一定路徑下的session庫中,這個路徑可以通過php.ini文件中的session.save_path指定,下次瀏覽網頁時可以載入使用。

㈡ 在java中能用private修飾類嗎

一般的類是不能用private修飾,類的可見性最少是包可見的,也就是默認的,不加任何修飾。
但是有一種特殊的情況,內部類是可以用private修飾的!不讓類以外的其他類訪問!這個問題在《java核心技術》里有講!

Java的外部類為什麼不能使用private、protected進行修飾?

對於頂級類(外部類)來說,只有兩種修飾符:public和默認(default)。因為外部類的上一單元是包,所以外部類只有兩個作用域:同包,任何位置。

因此,只需要兩種控制許可權:包控制許可權和公開訪問許可權,也就對應兩種控制修飾符:public和默認(default)。

如果類使用了private修飾符,說明是個內部類。內部類的上一級是外部類,那麼對應的有四種訪問控制修飾符:本類(private),同包(default),父子類(protected),任何位置(public)。

當一個內部類使用了private修飾後,只能在該類的外部類內部使用。可以想一下,一個java項目是不可能在一個class裡面完成的。

mvc模式中,是把類分為三層,一層層調用類。如果定義為私有的和受保護的就無法調用。換句話說,對於一個java文件,要麼就是自己單獨運行,要麼就是被其他程序作為庫調用。

如果一個java文件的類被private修飾,那麼是不是其他的程序或是類是無法使用它的,那麼他作為一個單獨的文件就沒啥用了。

如果它作為單個文件運行,類載入怎麼找到它呢,因為它對外不可見。同時,也失去了類的存在意義。因此,類只有public和默認修飾符。

㈢ 在java中boolean具體怎麼使用

boolean是java中的布爾型(邏輯型)數據類型,在java中boolean值只能是true和false,而不能用0和1代替,並且一定要小寫。

布爾值 true 代表「真」,false 代表「假」。一般關系運算符會返回布爾值的結果。另外,數值的 0、-0、特殊值的 null、NaN、undefined 以及空字元("")都會被解釋為 false ,其他值則會被解釋為 true 。

(3)在java中使用擴展閱讀

java中創建boolean對象的方法:

1、使用關鍵詞 new 來定義 Boolean 對象。下面的代碼定義了一個名為 myBoolean 的邏輯對象:

var myBoolean = new Boolean()

var myBoolean = new Boolean()

注釋:如果邏輯對象無初始值或者其值為 0、-0、null、""、false、undefined 或者 NaN,那麼對象的值為 false。否則,其值為 true(即使當自變數為字元串 "false" 時)!

2、下面的所有的代碼行均會創建初始值為 false 的 Boolean 對象。

var myBoolean = new Boolean();

var myBoolean = new Boolean(0);

var myBoolean = new Boolean(null);

var myBoolean = new Boolean("");

var myBoolean = new Boolean(NaN);

3、下面的所有的代碼行均會創初始值為 true 的 Boolean 對象:

var myBoolean = new Boolean(1);

var myBoolean = new Boolean(true);

var myBoolean = new Boolean("true");

var myBoolean = new Boolean("false");

var myBoolean = new Boolean("Bill Gates");

㈣ 幾種加密演算法在java中的應用

簡單的Java加密演算法有:
第一種. BASE
Base是網路上最常見的用於傳輸Bit位元組代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規范。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字元串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
第二種. MD
MD即Message-Digest Algorithm (信息-摘要演算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD的前身有MD、MD和MD。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD後都能生成唯一的MD值。好比現在的ISO校驗,都是MD校驗。怎麼用?當然是把ISO經過MD後產生MD的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD的串。就是用來驗證文件是否一致的。
MD演算法具有以下特點:
壓縮性:任意長度的數據,算出的MD值長度都是固定的。
容易計算:從原數據計算出MD值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改個位元組,所得到的MD值都有很大區別。
弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。
MD的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被」壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進制數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。
第三種.SHA
安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種「指紋」或是「摘要」所以對散列值的數字簽名就可以視為對此明文的數字簽名。
SHA-與MD的比較
因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。
對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-的運行速度比MD慢。
第四種.HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。

㈤ Scanner在java中有什麼用法怎麼用

1、首先在一個java工程下創建一個類名的ScannerDemo的類。

(5)在java中使用擴展閱讀:

Scanner類常用方法

1、String next():接收控制台輸入的字元串(備註:不能將空格作為字元串接收);

2、String nextLine():接收控制台輸入的字元串;

3、int nextInt():接收控制台輸入的int類型的數據;

4、double nextDouble:接收控制台輸入的double 類型的數據;

5、boolean nextBoolean():接收控制台輸入的boolean 類型的數據;

6、輸入char類型的數據;

Scanner類沒有直接輸入char類型的方法,可以通過charAt()方法從next()或nexyLine()獲取。

㈥ 如何在 Java 中正確使用 wait,notify 和 notifyAll

在Java中可以用wait、notify和notifyAll來實現線程間的通信。1)利用wait()來讓一個線程在某些條件下暫停運行。例如,在生產者消費者模型中,生產者線程在緩沖區為滿的時候,消費者在緩沖區為空的時候,都應該暫停運行。2)notify()方

㈦ 在Java中怎麼使用斷言

如果要開啟斷言檢查,則需要用開關-enableassertions或-ea來開啟。

assert關鍵字語法很簡單,有兩種用法:

1、assert <boolean表達式>
如果<boolean表達式>為true,則程序繼續執行。
如果為false,則程序拋出AssertionError,並終止執行。

2、assert <boolean表達式> : <錯誤信息表達式>
如果<boolean表達式>為true,則程序繼續執行。
如果為false,則程序拋出java.lang.AssertionError,並輸入<錯誤信息表達式>。

三、應用實例

下面給出一個例子,通過例子說明其用法:

public class AssertFoo {
public static void main(String args[]) {
//斷言1結果為true,則繼續往下執行
assert true;
System.out.println("斷言1沒有問題,Go!");

System.out.println("\n-----------------\n");

//斷言2結果為false,程序終止
assert false : "斷言失敗,此表達式的信息將會在拋出異常的時候輸出!";
System.out.println("斷言2沒有問題,Go!");
}
}

保存代碼到C:\AssertFoo.java,然後按照下面的方式執行,查看控制台輸出結果:

1、編譯程序:
C:\>javac AssertFoo.java

2、默認執行程序,沒有開啟-ea開關:
C:\>java AssertFoo
斷言1沒有問題,Go!

-----------------

斷言2沒有問題,Go!

3、開啟-ea開關,執行程序:
C:\>java -ea AssertFoo
斷言1沒有問題,Go!

-----------------

Exception in thread "main" java.lang.AssertionError: 斷言失敗,此表達式的信息將
會在拋出異常的時候輸出!
at AssertFoo.main(AssertFoo.java:10)

四、陷阱

assert關鍵字用法簡單,但是使用assert往往會讓你陷入越來越深的陷阱中。應避免使用。筆者經過研究,總結了以下原因:

1、assert關鍵字需要在運行時候顯式開啟才能生效,否則你的斷言就沒有任何意義。而現在主流的Java IDE工具默認都沒有開啟-ea斷言檢查功能。這就意味著你如果使用IDE工具編碼,調試運行時候會有一定的麻煩。並且,對於Java Web應用,程序代碼都是部署在容器裡面,你沒法直接去控製程序的運行,如果一定要開啟-ea的開關,則需要更改Web容器的運行配置參數。這對程序的移植和部署都帶來很大的不便。

2、用assert代替if是陷阱之二。assert的判斷和if語句差不多,但兩者的作用有著本質的區別:assert關鍵字本意上是為測試調試程序時使用的,但如果不小心用assert來控制了程序的業務流程,那在測試調試結束後去掉assert關鍵字就意味著修改了程序的正常的邏輯。

3、assert斷言失敗將面臨程序的退出。這在一個生產環境下的應用是絕不能容忍的。一般都是通過異常處理來解決程序中潛在的錯誤。但是使用斷言就很危險,一旦失敗系統就掛了。

五、對assert的思考

assert既然是為了調試測試程序用,不在正式生產環境下用,那應該考慮更好的測試JUint來代替其做用,JUint相對assert關鍵的所提供的功能是有過之而無不及。當然完全可以通過IDE debug來進行調試測試。在此看來,assert的前途一片昏暗。

因此,應當避免在Java中使用assert關鍵字,除非哪一天Java默認支持開啟-ea的開關,這時候可以考慮。對比一下,assert能給你帶來多少好處,多少麻煩,這是我們選擇是否使用的的原則。

以上僅僅代表我個人觀點,歡迎大家留言討論。

-----------------------------------------------------------------------------------
下面是一些Assert的例子:
assert 0 < value;
assert 0 < value:"value="+value;
assert ref != null:"ref doesn''t equal null";
assert isBalanced();

-----------------------------------------------------------------------------------
AssertinError類是Error的直接子類,因此代表程序出現了嚴重的錯誤,這種異常通常是不需要程序員使用catch語句捕捉的。

使用assert的准則:assert語句的作用是保證程序內部的一致性,而不是用戶與程序之間的一致性,所以不應用在保證命令行參數的正確性。可以用來保證傳遞給private方法參數的正確性。因為私有方法只是在類的內部被調用,因而是程序員可以控制的,我們可以預期它的狀態是正確和一致的。公有方法則不適用。此外,assert語句可用於檢查任何方法結束時狀態的正確性,及在方法的開始檢查相關的初始狀態 等等。

assert語句並不構成程序正常運行邏輯的一部分,時刻記住在運行時它們可能不會被執行。

-----------------------------------------------------------------------------------
兩類參數:
參數 -esa和 -dsa:
它們含義為開啟(關閉)系統類的assertion功能。由於新版本的Java的系統類中,也使了 assertion語句,因此如果用戶需要觀察它們的運行情況,就需要打開系統類的assertion功能 ,我們可使用-esa參數打開,使用 -dsa參數關閉。 -esa和-dsa的全名為-enablesystemassertions和-disenablesystemassertions,全名和縮寫名有同樣的功能。

參數 -ea和 -ea:
它們含義為開啟(關閉)用戶類的assertion功能:通過這個參數,用戶可以打開某些類或包的assertion功能,同樣用戶也可以關閉某些類和包的assertion功能。打開assertion功能參數為-ea;如果不帶任何參數,表示打開所有用戶類;如果帶有包名稱或者類名稱,表示打開這些類或包;如果包名稱後面跟有三個點,代表這個包及其子包;如果只有三個點,代表無名包。關閉 assertion功能參數為-da,使用方法與-ea類似。
-ea和-da的全名為-enableassertions和-disenableassertions,全名和縮寫名有同樣的功能。
下面表格表示了參數及其含義,並有例子說明如何使用。
參數 例子 說明
-ea java -ea 打開所有用戶類的assertion
-da java -da 關閉所有用戶類的assertion
-ea: java -ea:MyClass1 打開MyClass1的assertion
-da: java -da: MyClass1 關閉MyClass1的assertion
-ea: java -ea:pkg1 打開pkg1包的assertion
-da: java -da:pkg1 關閉pkg1包的assertion
-ea:... java -ea:... 打開預設包(無名包)的assertion
-da:... java -da:... 關閉預設包(無名包)的assertion
-ea:... java -ea:pkg1... 打開pkg1包和其子包的assertion
-da:... java -da:pkg1... 關閉pkg1包和其子包的assertion
-esa java -esa 打開系統類的assertion
-dsa java -dsa 關閉系統類的assertion

-----------------------------------------------------------------------------------
不要再public的方法裡面檢查參數是不是為null之類的操作,例如:
public int get(String s){
assert s != null;
}

如果需要檢查也最好通過 if s = null 拋出 NullPointerException來檢查。

不要用assert來檢查方法操作的返回值來判斷方法操作的結果,例如:
assert list.removeAll();這樣看起來好像沒有問題 但是想想如果assert 被disable呢,那樣他就不會被執行了,所以removeAll()操作就沒有被執行,可以這樣代替
boolean boo = list.removeAl();
assert boo;

-----------------------------------------------------------------------------------
另外,Java為了讓程序也能夠動態開啟和關閉某些類和包的assertion功能,Java修該了Class和ClassLoader的實現,增加了幾個用於操作assert的API。下面簡單說明一下幾個API的作用。
ClassLoader類中的幾個相關的API:
setDefaultAssertionStatus:用於開啟/關閉assertion功能
setPackageAssertionStatus:用於開啟/關閉某些包的assertion功能
setClassAssertionStatus: 用於開啟/關閉某些類的assertion功能
clearAssertionStatus:用於關閉assertion功能

㈧ 在Java語言中,使用___________等技術,實現軟體重用

在Java語言中,使用__平台無關___、___java虛擬機___等技術,實現軟體重用。

熱點內容
如何帳戶密碼 發布:2025-01-17 07:56:11 瀏覽:612
伺服器內網ip地址安全 發布:2025-01-17 07:33:18 瀏覽:186
華為新演算法 發布:2025-01-17 07:31:43 瀏覽:56
希沃如何存儲 發布:2025-01-17 07:31:00 瀏覽:552
演算法研讀 發布:2025-01-17 07:19:37 瀏覽:280
我的世界橙子生存之旅伺服器ip 發布:2025-01-17 07:19:27 瀏覽:618
用戶名密碼錯誤導致認證失敗是什麼意思 發布:2025-01-17 06:58:24 瀏覽:329
安卓空調遙控器在哪裡 發布:2025-01-17 06:43:54 瀏覽:196
安卓版什麼做視頻軟體好用 發布:2025-01-17 06:43:14 瀏覽:337
神超電腦配置哪個好 發布:2025-01-17 06:35:50 瀏覽:575