大数据项目实战之 --- 某购物平台商品实时推荐系统(二)

一、完善用户信息,实现用户注册和验证
--------------------------------------------------------
    0.更新pom.xml
        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>

            <groupId>com.test</groupId>
            <artifactId>eshop</artifactId>
            <version>1.0-SNAPSHOT</version>

            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.11</version>
                </dependency>
                <dependency>
                    <groupId>c3p0</groupId>
                    <artifactId>c3p0</artifactId>
                    <version>0.9.1.2</version>
                </dependency>

                <!-- hibernate -->
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>4.3.8.Final</version>
                </dependency>

                <!-- Spring 框架类库 -->
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context-support</artifactId>
                    <version>4.3.3.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-jdbc</artifactId>
                    <version>4.3.3.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-orm</artifactId>
                    <version>4.3.3.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-webmvc</artifactId>
                    <version>4.3.3.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-tx</artifactId>
                    <version>4.3.3.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjweaver</artifactId>
                    <version>1.8.10</version>
                </dependency>

                <!-- mysql -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.17</version>
                </dependency>

                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                    <version>2.5</version>
                </dependency>

                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>jstl</artifactId>
                    <version>1.2</version>
                </dependency>

            </dependencies>

        </project>

    1.完善用户信息
        a.User类添加新的字段
            email
            nickname
            class User{
                    //...
                    private String email;
                    private String nickName ;
                    //getXxx/setXxx
                }

        b.修改mysql数据库
            mysql> alter table users add email varchar(20) ;
            mysql> alter table users add nickname varchar(20) ;

        c.修改映射文件resources/User.hbmx.xml
            <property name="email" column="email" type="string" />
            <property name="nickname" column="nickname" type="string" />

    2.编写工具类 -- 校验用户信息
        package com.test.eshop.util;

        import java.util.Collection;

        /**
         * 用户校验工具类
         */
        public class ValidateUtil {

            /**
             * 判断集合有效性
             */
            public static boolean isValid(Collection col){
                if(col == null || col.isEmpty())
                    return false ;
                return true ;
            }

        }

    3.拓展用户服务接口UserService.java
        public interface UserService extends  BaseService<User>{

            //判断邮箱是否注册
            public boolean isRegisted(String email) ;

        }

    4.完善用户服务接口的实现类UserServiceImpl.java
        package com.test.eshop.service.impl;


        import com.test.eshop.dao.BaseDao;
        import com.test.eshop.model.User;
        import com.test.eshop.service.UserService;
        import com.test.eshop.util.ValidateUtil;
        import org.springframework.stereotype.Repository;
        import org.springframework.stereotype.Service;

        import javax.annotation.Resource;
        import java.util.List;

        @Service("userService")
        public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {

            /**
             * 重新该方法,需要注入指定的UserDao对象
             */
            @Resource(name = "userDao")
            public void setDao(BaseDao<User> dao) {
                super.setDao(dao);
            }

            /**
             * 判断邮箱是否注册
             */
            public boolean isRegisted(String email) {
                String hql = "from User u where u.email = ?" ;
                List<User> list = this.findByHQL(hql,email);
                return ValidateUtil.isValid(list) ;
            }
        }



    5.编写控制器UserController.java
        package com.test.eshop.web.controller;

        import com.test.eshop.model.User;
        import com.test.eshop.service.UserService;
        import org.springframework.stereotype.Controller;
        import org.springframework.ui.Model;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RequestMethod;

        import javax.annotation.Resource;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpSession;
        import java.util.List;

        /**
         * 用户Controller
         */
        @Controller
        public class UserController {

            //注入userService给us变量
            @Resource(name = "userService")
            private UserService us;

            /**
             *去注册页面
             */
            @RequestMapping(value = "/toRegPage",method = RequestMethod.GET)
            public String toRegPage(){
                return "userReg" ;
            }

            /**
             *去登录页面
             */
            @RequestMapping(value = "/toLoginPage",method = RequestMethod.GET)
            public String toLoginPage(){
                return "login" ;
            }

            /**
             * 从注册页面取得注册用户和密码,并跳转到登录界面
             */
            /**
             * 完成注册
             */
            @RequestMapping(value = "/doReg",method = RequestMethod.POST)
            public String doReg(User user, HttpServletRequest req, Model m){
                //得到确认密码
                String confirmPass = req.getParameter("confirmPass");

                //1.判断密码是否一致
                if(!user.getPassword().equals(confirmPass)){
                    m.addAttribute("error.password.nosame","两次密码输入不一致,确认后请重新输入!!");
                    return "userReg" ;
                }

                //2.判断email是否唯一
                boolean b = us.isRegisted(user.getEmail());
                if(b){
                    m.addAttribute("error.email.registed","邮箱已经注册!");
                    return "userReg" ;
                }

                //保存用户
                us.saveEntity(user);
                System.out.println("注册成功了!");
                return "login" ;
            }

            /**
             * 登录用户验证程序
             */
            @RequestMapping(value = "/doLogin",method = RequestMethod.POST)
            public String doLogin(User u, HttpSession hs , Model m){
                String hql = "from User u where u.name = ? and u.password = ?";
                List<User> list = us.findByHQL(hql, u.getName(), u.getPassword());
                if (list == null || list.isEmpty()) {
                    System.out.println("登录失败" + u.getName() + ":" + u.getPassword());
                    //向客户端回传数据
                    m.addAttribute("error","用户名/密码验证失败,请重试!!");

                } else {
                    //验证成功,将用户信息放入session中,作为会话保存
                    User user = list.get(0);
                    hs.setAttribute("name",user.getName());
                    System.out.println("登录成功" + u.getName() + ":" + u.getPassword());
                }
                return "index" ;
            }

        }


    6.编写首页index.html
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>首页.html</title>
        </head>
        <body>
            this is a page!
            <a href="/toRegPage">用户注册</a>

        </body>
        </html>

    7.编写注册界面userReg.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <html>
        <head>
            <title>用户注册页面.jsp</title>
        </head>
        <body>
        <form action="/doReg" method="post">
            Username :<input type="text" name="name"><br>
            Password :<input type="password" name="password"><c:out value="${requestScope['error.password.nosame']}"/><br>
            ConfirmPass :<input type="password" name="confirmPass"><br>
            Email :<input type="text" name="email"><c:out value="${requestScope['error.email.registed']}"/><br>
            NickName:<input type="text" name="nickName"><br>
            <input type="submit">
        </form>
        </body>
        </html>

    8.编写登录界面login.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <html>
        <head>
            <title>用户登录页面.jsp</title>
        </head>
        <body>
            <form action="/doLogin" method="post">

                Username : <input name="name" type="text"><br>
                Password : <input name="password" type="password"><br>
                <input type="submit" value="登录">
            </form>


        </body>
        </html>


    9.编写欢迎界面index.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <!-- 引入c标签库 -->
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <!-- 打开sessionScope容器 -->
        <%@ page session="true" %>

        <html>
          <head>
            <title>欢迎页面index.jsp</title>
          </head>
          <body>
            <c:if test="${sessionScope.name == null}">
                <c:out value="${requestScope.error}"></c:out>
            </c:if>
            <c:if test="${sessionScope.name != null}">
                欢迎<c:out value="${sessionScope.name}"></c:out>
            </c:if>
          </body>
        </html>


二、添加用户管理员
-------------------------------------------------------
    1.BaseService.java
        //添加方法声明
        public List<T> findAllEntities();

    2.基本服务实现类BaseServiceImp.java
        //添加方法的实现
        /**
         * BaseService实现类.
         */
        public abstract class BaseServiceImpl<T> implements BaseService<T> {

            ...
            private Class<T> clazz ;

            public BaseServiceImpl(){
                ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
                clazz = (Class)type.getActualTypeArguments()[0];
            }
            ...

            //查询所有实体
            public List<T> findAllEntities(){
                String hql = "from " + clazz.getSimpleName() ;
                return this.findByHQL(hql) ;
            }
        }


    3.添加管理员控制器AdminController.java
          package com.test.eshop.web.controller;

          import com.it18zhang.eshop.model.User;
          import com.it18zhang.eshop.service.UserService;
          import org.springframework.stereotype.Controller;
          import org.springframework.ui.Model;
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.RequestMethod;

          import javax.annotation.Resource;
          import java.util.List;

          /**
           * 管理员控制器
           */
          @Controller
          public class AdminController {

             @Resource
             private UserService us ;

             /**
              * 查看用户列表
              */
             @RequestMapping(value = "/admin/userlist",method = RequestMethod.GET)
             public String userList(Model m){
                List<User> allUsers = us.findAllEntities();
                m.addAttribute("allUsers",allUsers);
                return "userList" ;
             }
          }

    4.编写userList.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <html>
          <head>
            <title>userList.jsp</title>
          </head>
          <body>
            <table border="1">
              <tr>
                <td>ID</td>
                <td>Name</td>
                <td>password</td>
                <td>nickName</td>
                <td>email</td>
                <td>regDate</td>
              </tr>
              <c:forEach items="${allUsers}" var="u">
                <tr>
                  <td><c:out value="${u.id}" /></td>
                  <td><c:out value="${u.name}" /></td>
                  <td><c:out value="${u.password}" /></td>
                  <td><c:out value="${u.nickname}" /></td>
                  <td><c:out value="${u.email}" /></td>
                  <td><c:out value="${u.regDate}" /></td>
                </tr>
              </c:forEach>
            </table>
          </body>
        </html>


三、添加管理员功能 -- 删除用户/查看用户/更改用户信息
--------------------------------------------------
    1.编辑控制器AdminController.java
        package com.test.eshop.web.controller;

        import com.test.eshop.model.User;
        import com.test.eshop.service.UserService;
        import com.test.eshop.service.impl.UserServiceImpl;
        import org.springframework.stereotype.Controller;
        import org.springframework.ui.Model;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RequestMethod;
        import org.springframework.web.bind.annotation.RequestParam;

        import javax.annotation.Resource;
        import java.util.List;

        @Controller
        public class AdminController {


            @Resource(name = "userService")
            private UserService us ;

            /**
             * 查看用户列表
             */
            @RequestMapping(value = "/admin/userlist",method = RequestMethod.GET)
            public String userList(Model m){
                List<User> allUsers = us.findAllEntities();
                m.addAttribute("allUsers",allUsers);
                return "userList" ;
            }

            /**
             * 删除用户
             */
            @RequestMapping(value="/admin/delUser",method = RequestMethod.GET)
            public String delUser(@RequestParam("uid") int uid){
                User u = new User();
                u.setId(uid);
                us.deleteEntity(u);
                //重定向到新的url地址
                return "redirect:/admin/userlist";
            }

            //查看用户信息
            @RequestMapping(value="/admin/viewUser",method = RequestMethod.GET)
            public String viewUser(@RequestParam("uid") int uid,Model m){
                User u = us.getEntity(uid);
                m.addAttribute("user",u);
                return "/viewUser";
            }

            //编辑用户信息
            @RequestMapping(value="/admin/editUser",method = RequestMethod.GET)
            public String editUser(@RequestParam("uid") int uid,Model m){
                User u = us.getEntity(uid);
                m.addAttribute("user",u);
                return "editUser";
            }

            //提交更改的用户信息
            @RequestMapping(value="/admin/updateUser",method = RequestMethod.POST)
            public String updateUser(User u){
                us.updateEntity(u);
                return "redirect:/admin/userlist";
            }
        }


    2.修改userList.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <html>
        <head>
            <title>展示用户列表界面.jsp</title>
        </head>
        <body>
        <table border="1">
            <tr>
                <td>ID</td>
                <td>Name</td>
                <td>password</td>
                <td>nickName</td>
                <td>email</td>
                <td>regDate</td>
                <td>删除</td>
            </tr>
            <c:forEach items="${allUsers}" var="u">
                <tr>
                    <td><c:out value="${u.id}" /></td>
                    <td><c:out value="${u.name}" /></td>
                    <td><c:out value="${u.password}" /></td>
                    <td><c:out value="${u.nickname}" /></td>
                    <td><c:out value="${u.email}" /></td>
                    <td><c:out value="${u.regDate}" /></td>
                    <td><a href="/admin/delUser?uid=<c:out value="${u.id}"/>">删除</a></td>
                    <td><a href="/admin/viewUser?uid=<c:out value="${u.id}"/>">查看</a></td>
                    <td><a href="/admin/editUser?uid=<c:out value="${u.id}"/>">编辑</a></td>
                </tr>
            </c:forEach>
        </table>
        </body>
        </html>

    3.添加editUser.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <html>
        <head>
            <title>编辑用户信息界面.jsp</title>
        </head>
        <body>
        <form action="/admin/updateUser" method="post">
            <input type="hidden" name="id" value="<c:out value="${user.id}" />">
            Username :<input type="text" name="name" value="<c:out value="${user.name}" />"><br>
            Password :<input type="password" name="password" value="<c:out value="${user.password}" />"><c:out value="${requestScope['error.password.nosame']}"/><br>
            ConfirmPass :<input type="password" name="confirmPass"><br>
            Email :<input type="text" name="email" value="<c:out value="${user.email}" />"><c:out value="${requestScope['error.email.registed']}"/><br>
            NickName:<input type="text" name="nickname" value="<c:out value="${user.nickname}" />"><br>
            <input type="submit">
        </form>
        </body>
        </html>

    4.添加viweUser.jsp
        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <html>
        <head>
            <title>查看用户信息界面.jsp</title>
        </head>
        <body>
        <table border="1">
            <tr>
                <td>ID</td>
                <td><c:out value="${user.id}"/></td>
            </tr>
            <tr>
                <td>Name</td>
                <td><c:out value="${user.name}"/></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><c:out value="${user.password}"/></td>
            </tr>
            <tr>
                <td>Email</td>
                <td><c:out value="${user.email}"/></td>
            </tr>
            <tr>
                <td>NickName</td>
                <td><c:out value="${user.nickname}"/></td>
            <tr>
                <td>regDate</td>
                <td><c:out value="${user.regDate}"/></td>
            </tr>
        </table>
        </body>
        </html>


















猜你喜欢

转载自blog.csdn.net/xcvbxv01/article/details/84392089
今日推荐