day19_MD5加密_Apache DBUtils_监听器 知识回顾
MD5加密
MD5概述
用戶名密碼保存在客戶端是一種十分危險的行為。所以需要進行加密后保存。
其中MD5就是一種比較常用的加密算法。
與其說MD5算法是一種加密算法,不如說是一種數據指紋(數據摘要)算法。
其特點如下:
任意大小的二進制數經過MD5計算后都能得到一個獨一無二的128位二進制數。
不同的數據算出的MD5絕對不相同。
相同的數據算出的MD5一定相同。
只能有明文算出密文,密文是永遠也無法算成明文的。
MD5大量應用于計算機中。如數據庫中保存的密碼通常都是經過MD5加密后的數據。如用戶下載文件時可以進行MD5校驗防止數據被篡改。
在記住用戶名案例中,我們可以使用MD5進行加密后再保存在客戶端,從而保證數據安全。
在數據庫中保存的密碼也不宜直接存儲為明文。也要經過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代碼時發現大量的代碼都是重復的,能不能簡化JDBC的操作呢?Apache組織為我們提
供了一套開源jar包,大大簡化了JDBC操作。
commons-dbutils 是 Apache 組織提供的一個開源 JDBC工具類庫,它是對JDBC的簡單封裝,
學習成本極低,并且使用dbutils能極大簡化jdbc編碼的工作量,同時也不會影響程序的性能。
因此dbutils成為很多不喜歡hibernate的公司的首選。
QueryRunner!!!
(1)如果需要事務控制必須用這組方法 ,
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)如果不需要進行事務控制,可以使用這組方法,不需要每次都傳入連接,底層會自己去找數據源要連接
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)
?
?
概述
以下代碼只需理解:被監聽對象、監聽器對象、注冊監聽。
----------------------------
!public class MyJFrame {
public static void main(String[] args) {
//frame就是被監聽對象
//new MmL()監聽器對象
//當frame窗體上有鼠標移動或拖動時,分別觸發監聽器對象的mouseMove、mouseDragger
JFrame frame = new JFrame();
class Mml implements MouseMotionListener{
public void mouseDragged(MouseEvent e) {
System.out.println("鼠標拖動了");
}
public void mouseMoved(MouseEvent e) {
System.out.println("鼠標移動");
}
}
frame.addMouseMotionListener(new Mml());
frame.setVisible(true);
}
}
監聽器:就是一個實現特定接口的普通java程序,這個程序專門用于監聽另外一個java對象(被監聽對象)
的方法調用或屬性改變,當被監聽對象發生以上事件時,監聽器的某一個方法會被立即執行。
分析圖見:“監聽器.png”
監聽器分為:普通監聽器和Servlet監聽器
5.2、Servlet監聽器
5.2.1八大監聽器
JavaEE中提供了八大監聽器,用來監聽Servlet中指定事件。
它們監聽的事件源分別是ServletContext,HttpSession,ServletRequest這三個域對象進行監聽。
Servlet規范針對這三個對象上的操作,又把這多種類型的監聽器劃分為三種類型:
監聽這三個對象的創建與銷毀操作
監聽域對象中屬性的添加或刪除操作
監聽綁定到HttpSession域中的某個對象的狀態改變的操作。
5.2.2開發步驟:
1、創建一個類實現特定的接口,并實現對應的抽象方法
和編寫其他事件監聽器一樣,編寫servlet監聽器也需要實現特定的接口,并針對
響應的動作實現對應的方法。
2、在web.xml文件進行“注冊” 配置
轉載于:https://www.cnblogs.com/buyucgb/p/5975283.html
總結
以上是生活随笔為你收集整理的day19_MD5加密_Apache DBUtils_监听器 知识回顾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ConfigUtil读取配置文件
- 下一篇: 建立触发器