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文件进行“注册” 配置