目标:
1、客户管理的展示(查询数据库之后)
2、登录校验—Md5
3、客户的新增(BeanUtils)
问题:
1、展示页面错乱—少导入jstl的jar
2、页面乱码— 没有写jsp的头
3、后台包“dataSource”找不到—web项目,加载driud.properties的时候跟java项目是不一样的。
规律:等我有时间了,我就干什么,真正有时间了,大把的时间,你其实什么都不干。
一、项目编程的三层架构(约定俗称的东西)
controller 层 —> 页面数据的获取以及返回 —> Servlet
service 层 —> 编写业务(具体的需求)逻辑 —> 自己编写的service类
规矩:一般任何业务,都需要写接口
dao层 —> 数据的增删改查 —> JdbcTemlpate
二、MD5加密
md5加密实现方式有很多,我们学习的是spring框架给我们写好的一个加密方法
md5加密是不可逆的: 可以通过明文推导出密文,无法通过密文推导明文
相对比较安全的。
// 给我一个明文密码,我返回给你一个密文密码
public static String md5(String password){
byte[] bytes = password.getBytes();
String miwen= DigestUtils.md5DigestAsHex(bytes);
return miwen;
}
如果你所在项目没有使用spring框架,我们也犯不着为了一个工具导入spring的jar包,可以去网络上找一个md5的源码类,写在项目中的utils包下。
md5是无法根据密文知道明文的,但是可以通过对撞的方式破解。
https://www.cmd5.com/ 可以进行在线的加密与解密。
通过穷举字符组合的方式,创建了明文密文对应查询数据库,创建的记录约90万亿条。
如果我们使用md5的话,最好使用比较复杂的字符串当做密码,不要使用简单的字符串进行密码设置。
一般的加密方式会根据强大的数据库记录查询出明文,所以我们编写一个方法用于增强我们的加密的密文:
public static String md5Strong(String password){
byte[] bytes = password.getBytes();
String miwen= DigestUtils.md5DigestAsHex(bytes);
//进行二次加密
String str = miwen.substring(9,19);
String salt = "laoyan";//盐
miwen = DigestUtils.md5DigestAsHex((miwen+str+salt).getBytes());
return miwen;
}
三、在jsp页面动态获取虚拟路径名(项目名)
牢牢地记住 ${pageContext.request.contextPath}
在servlet中,String path= req.getContextPath(); 获取虚拟路径名
四、web项目为什么难?
不是代码逻辑多复杂,而是路径很长
jsp—>servlet->service—>dao—>jdbcTemplate—>数据库
页面跳转来,跳转去。
作业:
随堂练习全部搞定
批量删除 编辑 查询 等