日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

day19_MD5加密_Apache DBUtils_监听器 知识回顾

發(fā)布時間:2025/7/14 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 day19_MD5加密_Apache DBUtils_监听器 知识回顾 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MD5加密

MD5概述
用戶名密碼保存在客戶端是一種十分危險的行為。所以需要進行加密后保存。
其中MD5就是一種比較常用的加密算法。
與其說MD5算法是一種加密算法,不如說是一種數(shù)據(jù)指紋(數(shù)據(jù)摘要)算法。
其特點如下:
任意大小的二進制數(shù)經(jīng)過MD5計算后都能得到一個獨一無二的128位二進制數(shù)。
不同的數(shù)據(jù)算出的MD5絕對不相同。
相同的數(shù)據(jù)算出的MD5一定相同。
只能有明文算出密文,密文是永遠(yuǎn)也無法算成明文的。
MD5大量應(yīng)用于計算機中。如數(shù)據(jù)庫中保存的密碼通常都是經(jīng)過MD5加密后的數(shù)據(jù)。如用戶下載文件時可以進行MD5校驗防止數(shù)據(jù)被篡改。
在記住用戶名案例中,我們可以使用MD5進行加密后再保存在客戶端,從而保證數(shù)據(jù)安全。
在數(shù)據(jù)庫中保存的密碼也不宜直接存儲為明文。也要經(jīng)過MD5加密后存儲。
public class MD5 {
public static String md5(String plainText) {
byte[] secretBytes = null;
if(plainText==null){
return null;
}
try {
secretBytes = MessageDigest.getInstance("md5").digest(
plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("沒有md5這個算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);
for (int i = 0; i < 32 - md5code.length(); i++) {
md5code = "0" + md5code;
}
return md5code;
}
}

修改之前的程序:
注冊時:RegistServlet
user.setPassword(MD5.md5(user.getPassword()));
service.regist(user);
登錄時:
|-普通登錄
User user = service.login(username,MD5.md5(password));
|-30天自動登錄保存cookie
Cookie alc = new Cookie("autologin",URLEncoder.encode(
user.getUsername()+":"+MD5.md5(user.getPassword()),"utf-8"));

?

?

Apache DBUtils

Apache DBUtils介紹
我們編寫JDBC代碼時發(fā)現(xiàn)大量的代碼都是重復(fù)的,能不能簡化JDBC的操作呢?Apache組織為我們提
供了一套開源jar包,大大簡化了JDBC操作。
commons-dbutils 是 Apache 組織提供的一個開源 JDBC工具類庫,它是對JDBC的簡單封裝,
學(xué)習(xí)成本極低,并且使用dbutils能極大簡化jdbc編碼的工作量,同時也不會影響程序的性能。
因此dbutils成為很多不喜歡hibernate的公司的首選。

QueryRunner!!!
(1)如果需要事務(wù)控制必須用這組方法 ,
QueryRunner()
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh)
<T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
int update(Connection conn, String sql)
int update(Connection conn, String sql, Object... params)
int update(Connection conn, String sql, Object param)
(2)如果不需要進行事務(wù)控制,可以使用這組方法,不需要每次都傳入連接,底層會自己去找數(shù)據(jù)源要連接
QueryRunner(DataSource ds)
<T> T query(String sql, ResultSetHandler<T> rsh)
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
int update(String sql)
int update(String sql, Object... params)
int update(String sql, Object param)

?

?

概述
以下代碼只需理解:被監(jiān)聽對象、監(jiān)聽器對象、注冊監(jiān)聽。
----------------------------
!public class MyJFrame {
public static void main(String[] args) {
//frame就是被監(jiān)聽對象
//new MmL()監(jiān)聽器對象
//當(dāng)frame窗體上有鼠標(biāo)移動或拖動時,分別觸發(fā)監(jiān)聽器對象的mouseMove、mouseDragger
JFrame frame = new JFrame();
class Mml implements MouseMotionListener{
public void mouseDragged(MouseEvent e) {
System.out.println("鼠標(biāo)拖動了");
}
public void mouseMoved(MouseEvent e) {
System.out.println("鼠標(biāo)移動");
}
}
frame.addMouseMotionListener(new Mml());
frame.setVisible(true);
}
}
監(jiān)聽器:就是一個實現(xiàn)特定接口的普通java程序,這個程序?qū)iT用于監(jiān)聽另外一個java對象(被監(jiān)聽對象)
的方法調(diào)用或?qū)傩愿淖?#xff0c;當(dāng)被監(jiān)聽對象發(fā)生以上事件時,監(jiān)聽器的某一個方法會被立即執(zhí)行。
分析圖見:“監(jiān)聽器.png”

監(jiān)聽器分為:普通監(jiān)聽器和Servlet監(jiān)聽器

5.2、Servlet監(jiān)聽器

5.2.1八大監(jiān)聽器
JavaEE中提供了八大監(jiān)聽器,用來監(jiān)聽Servlet中指定事件。
它們監(jiān)聽的事件源分別是ServletContext,HttpSession,ServletRequest這三個域?qū)ο筮M行監(jiān)聽。

Servlet規(guī)范針對這三個對象上的操作,又把這多種類型的監(jiān)聽器劃分為三種類型:
監(jiān)聽這三個對象的創(chuàng)建與銷毀操作
監(jiān)聽域?qū)ο笾袑傩缘奶砑踊騽h除操作
監(jiān)聽綁定到HttpSession域中的某個對象的狀態(tài)改變的操作。

5.2.2開發(fā)步驟:
1、創(chuàng)建一個類實現(xiàn)特定的接口,并實現(xiàn)對應(yīng)的抽象方法
和編寫其他事件監(jiān)聽器一樣,編寫servlet監(jiān)聽器也需要實現(xiàn)特定的接口,并針對
響應(yīng)的動作實現(xiàn)對應(yīng)的方法。
2、在web.xml文件進行“注冊” 配置

轉(zhuǎn)載于:https://www.cnblogs.com/buyucgb/p/5975283.html

總結(jié)

以上是生活随笔為你收集整理的day19_MD5加密_Apache DBUtils_监听器 知识回顾的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。