一、完善用户信息,实现用户注册和验证
--------------------------------------------------------
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>
购物平台商品实时推荐系统(二)
最新推荐文章于 2023-06-20 09:28:19 发布