一、完善用户信息,实现用户注册和验证 -------------------------------------------------------- 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
今日推荐
周排行