米米商城实现登陆
一、MD5密码加密
MD5Util.java:
1 import java.security.MessageDigest; 2 import java.security.NoSuchAlgorithmException; 3 4 public class MD5Util { 5 /** 6 * 1.MD5(message-digest algorithm 5)信息摘要算法, 7 * 它的长度一般是32位的16进制数字符串(如81dc9bdb52d04dc20036dbd8313ed055) 8 * 2.由于系统密码明文存储容易被黑客盗取 9 * 3.应用:注册时,将密码进行md5加密,存到数据库中,防止可以看到数据库数据的人恶意篡改。 10 * 登录时,将密码进行md5加密,与存储在数据库中加密过的密码进行比对 11 * 4.md5不可逆,即没有对应的算法,从产生的md5值逆向得到原始数据。 12 * 但是可以使用暴力破解,这里的破解并非把摘要还原成原始数据,如暴力枚举法。 13 * 14 */ 15 public final static String getMD5(String str){ 16 try { 17 MessageDigest md = MessageDigest.getInstance("SHA");//创建具有指定算法名称的摘要 18 md.update(str.getBytes()); //使用指定的字节数组更新摘要 19 byte mdBytes[] = md.digest(); //进行哈希计算并返回一个字节数组 20 21 String hash = ""; 22 for(int i= 0;i<mdBytes.length;i++){ //循环字节数组 23 int temp; 24 if(mdBytes[i]<0) //如果有小于0的字节,则转换为正数 25 temp =256+mdBytes[i]; 26 else 27 temp=mdBytes[i]; 28 if(temp<16) 29 hash+= "0"; 30 hash+=Integer.toString(temp,16); //将字节转换为16进制后,转换为字符串 31 } 32 return hash; 33 } catch (NoSuchAlgorithmException e) { 34 e.printStackTrace(); 35 } 36 return null; 37 } 38 }
二、业务逻辑层
在service包下创建实现业务逻辑的接口和对象。
AdminService.java:
1 public interface AdminService { 2 //登陆判断 3 Admin login(String name, String pwd); 4 }
AdminServiceImpl.java:
1 @Service 2 public class AdminServiceImpl implements AdminService { 3 //在业务逻辑层中一定会有数据访问层对象 4 @Autowired 5 AdminMapper adminMapper; 6 7 @Override 8 public Admin login(String name, String pwd) { 9 10 //根据传入的用户在数据库中查询相应用户 11 //如果有条件,则一定要创建Admin Example的对象,用来封装条件 12 AdminExample adminExample = new AdminExample(); 13 //如何添加条件 14 //select * from admin where a_name = 'admin' 15 //添加用户名a_name条件 16 adminExample.createCriteria().andANameEqualTo(name); 17 18 List<Admin> list = adminMapper.selectByExample(adminExample); 19 if (list.size() > 0) { 20 Admin admin = list.get(0); 21 //查询完用户进行密码比对(密文),将pwd进行md5加密,再与数据库查到的密码对比 22 String miPwd = MD5Util.getMD5(pwd); 23 if(miPwd.equals(admin.getaPass())) { 24 return admin; 25 } 26 } 27 return null; 28 } 29 }
三、界面层
在controller包下创建控制器类。
AdminAction.java:
1 @Controller 2 @RequestMapping("/admin") 3 public class AdminAction { 4 5 //注:在所有的界面层,一定会有业务逻辑层的对象 6 @Autowired 7 AdminService adminService; 8 9 //实现登录判断并跳转 10 @RequestMapping("/login") 11 public String login(String name, String pwd, HttpServletRequest request) { 12 13 Admin admin = adminService.login(name, pwd); 14 if (admin != null) { 15 //登陆成功 16 request.setAttribute("admin",admin); 17 return "main"; 18 } else { 19 //登陆失败 20 request.setAttribute("errmsg","用户名或密码不正确!"); 21 return "login"; 22 } 23 } 24 }

三、前端展示
login.jsp:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4 <!DOCTYPE html> 5 <html> 6 7 <head> 8 <meta charset="UTF-8"> 9 <link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.css" /> 10 <link rel="stylesheet" href="${pageContext.request.contextPath}/css/login.css" /> 11 <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script> 12 <script type="text/javascript" src="${pageContext.request.contextPath}/js/bootstrap.js"></script> 13 <title></title> 14 15 </head> 16 17 <body> 18 <div id="login"> 19 <div id="top"> 20 <img src="${pageContext.request.contextPath}/images/cloud.jpg" /><span>LOGIN</span> 21 </div> 22 <div id="bottom"> 23 <form action="${pageContext.request.contextPath}/admin/login.action" method="post"> 24 <table border="0px" id="table"> 25 <tr> 26 <td class="td1">用户名:</td> 27 <td><input type="text" placeholder="Username" class="td2" name="name"></td> 28 </tr> 29 <tr> 30 <td></td> 31 <td><span id="nameerr"></span></td> 32 </tr> 33 <tr> 34 <td class="td1">密码:</td> 35 <td><input type="password" placeholder="Password" class="td2" name="pwd"></td> 36 </tr> 37 <tr> 38 <td></td> 39 <td><span id="pwderr"></span></td> 40 </tr> 41 <tr> 42 <td></td> 43 <td><input type="submit" value="登录" class="td3"> 44 <a href="${pageContext.request.contextPath}/regist.jsp"><input type="button" value="注册" class="td3"></a> 45 </td> 46 </tr> 47 </table> 48 </form> 49 ${errmsg} 50 </div> 51 52 </div> 53 </body> 54 55 </html>
main.jsp:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 6 <head> 7 <meta charset="UTF-8"> 8 <link rel="stylesheet" href="${pageContext.request.contextPath}/css/bootstrap.css" /> 9 <link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css" /> 10 <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script> 11 <script type="text/javascript" src="${pageContext.request.contextPath}/js/bootstrap.js"></script> 12 <title></title> 13 <%--<link href="${pageContext.request.contextPath}/css/main.css" rel="stylesheet" >--%> 14 <style type="text/css"> 15 </style> 16 </head> 17 18 <body> 19 <!--整体部分--> 20 <div id="all"> 21 <!--上部分--> 22 <div id="top"> 23 <div id="top1"> 24 <span>商品管理系统</span> 25 </div> 26 <div id="top2"></div> 27 <div id="top3"> 28 <span>欢迎您,${admin.aName}</span> 29 </div> 30 </div> 31 <!--下部分--> 32 <div id="bottom"> 33 <!--下部分左边--> 34 <div id="bleft"> 35 <div id="ltop"> 36 <div id="lts"> 37 <img src="${pageContext.request.contextPath}/images/logo.jpg" /><br /> 38 <p style="text-align: center;">随机访客</p> 39 </div> 40 </div> 41 <div id="lbottom"> 42 <ul> 43 <a href="${pageContext.request.contextPath}/prod/split.action" target="myright" > 44 <li class="two"><span class="glyphicon glyphicon-book" style="color: white;"></span> 商品管理 <span class="glyphicon glyphicon-play" style="color: white;"></span> </li> 45 </a> 46 <a href="${pageContext.request.contextPath}/admin/err.jsp" target="myright"> 47 <li class="one"><span class="glyphicon glyphicon-sort" style="color: white;"></span> 订单管理 <span class="glyphicon glyphicon-play" style="color: white;"></span> </li> 48 </a> 49 <a href="${pageContext.request.contextPath}/admin/err.jsp" target="myright"> 50 <li class="one"><span class="glyphicon glyphicon-user" style="color: white;"></span> 用户管理 <span class="glyphicon glyphicon-play" style="color: white;"></span> </li> 51 </a> 52 <a href="${pageContext.request.contextPath}/admin/err.jsp" target="myright"> 53 <li class="one"><span class="glyphicon glyphicon-bullhorn" style="color: white"></span> 通知公告 <span class="glyphicon glyphicon-play" style="color: white;"></span> </li> 54 </a> 55 </ul> 56 </div> 57 </div> 58 <!--下部分右边--> 59 <div id="bright"> 60 <iframe frameborder="0" scrolling="no" name="myright" width="1235px" height="700px" ></iframe> 61 </div> 62 </div> 63 </div> 64 </body> 65 </html>
项目完整文件——百度网盘:https://pan.baidu.com/s/1GiUwEAyTbRdYZ0JMnZElAQ 密码:0529

浙公网安备 33010602011771号