嵌入式狗的JAVA之路 JavaBean

船頭尺發表於2021-09-09

繼續 中間耽誤了幾天~~ 嵌入式太苦逼,以前linux開發做的少,搞個小專案處處是坑,抽點時間出來繼續java
在Jsp頁面中如何使用Javabeans
方法二:在Jsp頁面中通常使用jsp動作標籤使用Javabean

作用:在jsp頁面中例項化或者在指定範圍內使用javabean


作用:給已經例項化的Javabean物件的屬性賦值,一共有四種形式
1)(跟表單關聯)
說明:JavaBean例項名 即 useBean 的 id; 表示對所有的屬性進行匹配
2)(跟表單相關聯)
說明:對部分屬性進行匹配
3)(手工設定)
4)(跟request引數關聯)

標籤的使用
作用:獲取指定JavaBean物件的屬性值。

JavaBean四個作用域範圍:
1.page範圍:範圍最小,與當前頁面相對應,JavaBean的生命週期存在於一個頁面之中,當頁面關閉時JavaBean被銷燬。
2.request範圍:與JSP的request生命週期相對應,JavaBean的生命週期存在於request物件之中,當request物件銷燬時JavaBean也被銷燬。
3.session範圍:與JSP的session生命週期相對應,JavaBean的生命週期存在於session會話之中,當session超時或會話結束時JavaBean被銷燬。
4.application範圍:與JSP的application生命週期相對應,在各個使用者與伺服器之間共享,只有當伺服器關閉時JavaBean才被銷燬。
這4種作用範圍與JavaBean的生命週期是息息相關的,當JavaBean被建立後,透過標籤與標籤呼叫時,將會按照page、request、session和application的順序來查詢這個JavaBean例項,直至找到一個例項物件為止,如果在這4個範圍內都找不到JavaBean例項,則丟擲異常。
JavaBean的四個作用域範圍
page //僅當前頁面有效
request //可以透過HttpRequest.getAttribute()方法獲得JavaBean物件。
session //可以透過HttpSession.getAttribute()方法獲得JavaBean物件。
application //可以透過application.getAttribute()方法獲得JavaBean物件。

javabean web開發模型
Model1:jsp+javabean,其中jsp為表示層和控制層,javabean為模式層
Model2:jsp+servlet+javabean,jsp為表示層,servlet為控制層,javabean為模式層
模式層Model,表示層View,控制層Control,合起來即為MVC。

Model1分為三層:
1.介面層:由JSP頁面進行與客戶端瀏覽器的互動,可以直接呼叫JavaBeans。
2.業務邏輯層:由JavaBeans進行處理業務邏輯,封裝資料,並與資料庫層進行互動。
3.資料庫層:底層資料庫,可被JavaBeans訪問。

http協議的無狀態性
1、無狀態是指,當瀏覽器傳送請求給伺服器的時候,伺服器會響應。但當同一個瀏覽器再次傳送請求時,伺服器不會知道是剛才那個瀏覽器。
2、簡單說,伺服器【不會儲存使用者狀態】,不會記得客戶端是否訪問過,所以這就是無狀態協議。

儲存使用者資料:session和cookie
cookie是web伺服器儲存在客戶端的一系列文字資訊,線上影片,購物車等使用者記錄
1、對特地物件的追蹤
2、儲存使用者網頁瀏覽記錄與習慣
3、簡化登入
安全風險:容易洩露使用者資訊

建立Cookie物件
Cookie cookie=new Cookie(String key,Object value);
寫入Cookie
response.addCookie(cookie);
讀取Cookie
Cookie[] cookies=request.getCookies();

  1. setMaxAge( expiry ) 設定cookie的有效期,以秒為單位 getMaxAge() 獲取cookie的有效時間,以秒為單位
  2. setValue(String value) 在cookie建立後,對cookie進行賦值 getValue() 獲取cookie的值
  3. getName() 獲取cookie的名稱
    4.setValue()和getValue()涉及的都是字串,對應前面提到的 Cookie是web伺服器儲存在客戶端的文字檔案。

解決Cookie中中文出錯
import="java.util.,java.net."
request.setCharacterEncoding("utf-8");
String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
//使用URLEncoder解決無法在Cookie當中儲存中文字串問題
username = URLDecoder.decode(c.getValue(),"utf-8");

session和cookie的對比
session在伺服器端儲存使用者資訊,cookie在客戶端儲存使用者資訊
session中儲存的是Object型別,cookie儲存的是String型別
session隨著會話結束將儲存的資料銷燬,cookie可以長期儲存在客戶端
session儲存重要資訊,cookie儲存不重要資訊

1.常用的三種指令:page,include,taglib。
2.page:位於頁面頂端,一個頁面可以包含多個page指令
include:將一個外部檔案嵌入jsp中,同時解析這個頁面中的jsp語句。
taglib:使用標籤庫,自定義新的標籤,在jsp中啟動定製行為。
3.include指令
1.語法 。
案例:顯示當前時間的頁面。(1)寫一個只輸出時間的方法的date.jsp。(2)用於顯示的頁面,包含

cookie是伺服器儲存在客戶端的一系列的文字資訊,主要的應用是,記錄使用者的登入資訊,以方便使用者下次登陸,實現購物車。cookie中常用的方法有setMaxAge(時間)設定生存期限,setName(string name)
設定cookie的名字,setValue(string value)設定cookie的值,getName()獲取cookie的名字,getValue()獲取cookie的值,是string型別的,getMaxage()獲得生存期限,建立cookie物件用Cookie c=new Cookie(string key,object value);新增cookie物件用response.addCookie(c);request.getCookies()獲取cookie的值,注意是一個cookie陣列,要獲取每個值還要遍歷,獲取核取方塊的值用request.getParameterValues()得到的是一個字串陣列,如果使用者選了儲存,則講cookie儲存,如果沒有儲存則將相應的值刪除。如果想在cookie中儲存漢字的話要用到一個方法,在java.net.*下,存的時候要進行編碼用URLEncoder.encoder(string s,"utf-8"),讀資料的時候要進行解碼用UrlDecoder.decode(string s,"utf-8"),cookie中存的資訊是有大小限制的。

include動作

page:包含的頁面
flush:被包含的頁面時否從緩衝區讀取

inlude指令與include動作的區別:
include指令是編譯階段的指令,是將主頁面和包含頁面轉換成一個servlet,因此編譯較慢,執行較快。
include動作在編譯階段是將主頁面和包含頁面編譯成倆個servlet,在執行期間呼叫頁面輸出。因此編譯較快,執行較慢。
因此include指令用於不經常變化的內容,難以維護;include動作方便維護。

forward動作
語法:

等同於:request.getRequestDispatcher("/url").forward(request,response);

param動作:
param動作,傳遞方法為post
1、語法:

實現DBHelper型別
private static final String driver="com.mysql.jdbc.Driver";//資料庫驅動
//連結資料庫的URL地址
private static final String url="jdbc:mysql://localhost(資料庫主機IP):3306(埠號)/shopping(資料庫名)?useUnicode=true(unicode是一個字元編碼方式,它保證了世界各國字元都能被覆蓋到)&characterEncoding=UTF-8(防止中文亂碼)";
private static final String username="root";//資料庫的使用者名稱
private static final String password="";//資料庫的密碼
//建立私有型別的連線物件
private static Connection conn=null;
//靜態程式碼塊負責載入驅動try/catch(防止出現異常)
static{
try{
class.forName(driver);
}catch(Exception ex){
ex.printStackTrace();
}
}
//單例模式,返回一個資料庫連結物件
public static Connection getConnection(){
if(conn==null){
conn=DriverManager.getconnection(url,username,password);
}
return conn;
}
//透過main函式判斷連線是否成功
public static void main(String[]args){
try{
Connection conn=DBHelper.getConnection();
if(conn!=null){
System.out.println("資料庫連線成功!");
}else{System.out.println("資料庫連線失敗!");}
}catch(Exception ex){
ex.printStacktrace();
}
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3016/viewspace-2798751/,如需轉載,請註明出處,否則將追究法律責任。

相關文章