Fork me on Github

米米商城实现登陆

一、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>&nbsp;&nbsp;&nbsp;&nbsp;商品管理&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;订单管理&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;用户管理&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;通知公告&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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

posted @ 2022-03-18 23:38  昂昂呀  阅读(179)  评论(0)    收藏  举报