功能介绍
前台功能需求
(1)用户的登录:对已经注册的用户提供登录操作。
(2)用户的注册:针对还未注册的用户完成注册功能的使用,在注册的过程中涉及数据的合法性校验,以及利用ajax完成用户名是否已被注册的异步校验。
(3)商品展示模块:通过分页浏览商品,也可以通过关键词搜索商品。
(4)购物车:用于存放用户的购物内容,用户可根据自己的情况修改自己的购物车。
(5)订单模块:对于已经登录的用户可以对购物车内容进行付款生成订单,可以为自己的订单进行付款。
(6)前台页面的访问权限:对已有账号访问进行权限分类,用户只能进入前台。
系统的前台功能模块图如下:
l 后台功能需求
(1)管理员登录:管理者根据账户和密码进行登录。
(2)商品管理:管理员可以对前台显示的商品进行管理包括分页查看,添加,修改,删除,搜索的功能。
(3)订单管理:管理员可以订单进行查看、删除、发货和搜索。
(4)后台账户管理:管理员可以对后台账户进行增删改查。
(5)用户管理:管理员可以对注册用户进行增删改查。
(6)后台页面的访问权限:对已有账号访问时进行权限分类,管理员只能进入后台。
部分功能模块代码
package servlet.admin;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Admin;
import bean.PageBean;
import dao.AdminDao;
import dao.impl.AdminDaoImpl;
import util.DateUtil;
import net.sf.json.JSONObject;
/**
* Servlet implementation class UserServlet
*/
@WebServlet("/jsp/admin/AdminManageServlet")
public class AdminManageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String ADMINLIST_PATH="adminManage/adminList.jsp";//用户列表页面地址
private static final String ADMINADD_PATH="adminManage/adminAdd.jsp";//用户增加页面地址
private static final String ADMINEDIT_PATH="adminManage/adminEdit.jsp";//用户修改页面地址
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action=request.getParameter("action");
switch(action){
case "list":
adminList(request,response);
break;
case "add":
adminAdd(request,response);
break;
case "update":
adminUpdate(request,response);
break;
case "edit":
adminEdit(request,response);
break;
case "del":
adminDel(request,response);
break;
case "batDel":
adminBatDel(request,response);
break;
case "find":
adminFind(request,response);
break;
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
//查询用户列表
private void adminList(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
AdminDao ad=new AdminDaoImpl();
int curPage=1;
String page=request.getParameter("page");
if(page!=null){
curPage=Integer.parseInt(page);
}
//获取xml中设置的每页显示大小参数
int maxSize=Integer.parseInt(request.getServletContext().getInitParameter("maxPageSize"));
PageBean pageBean=new PageBean(curPage,maxSize,ad.cakeReadCount());
request.setAttribute("adminList", ad.userList(pageBean));
request.setAttribute("pageBean", pageBean);
request.getRequestDispatcher(AdminManageServlet.ADMINLIST_PATH).forward(request, response);
}
//增加用户
private void adminAdd(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
AdminDao ad=new AdminDaoImpl();
Admin admin=new Admin(request.getParameter("userName"),request.getParameter("passWord"),
request.getParameter("name"));
//添加之前判断用户名是否在库中存在
if(new AdminDaoImpl().findUser(admin.getUserName())){
request.setAttribute("adminMessage", "用户添加失败!用户名已存在");
request.getRequestDispatcher(AdminManageServlet.ADMINADD_PATH).forward(request, response);
}else{
//执行dao层添加操作
if(ad.userAdd(admin)){
request.setAttribute("adminMessage", "用户添加成功!");
adminList(request, response);//通过servlet中listUser跳到用户列表
}else{
request.setAttribute("adminMessage", "用户添加失败!");
request.getRequestDispatcher(AdminManageServlet.ADMINADD_PATH).forward(request, response);
}
}
}
//更新用户信息
private void adminUpdate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Admin admin=new Admin(Integer.parseInt(request.getParameter("id")),
request.getParameter("passWord"),
request.getParameter("name")
);
AdminDao ad=new AdminDaoImpl();
if(ad.userUpdate(admin)) {
request.setAttribute("adminMessage", "用户更新成功");
adminList(request, response);//通过servlet中listUser跳到用户列表
}else {
//更新失败跳转到修改页面
request.setAttribute("adminMessage", "用户更新失败");
request.setAttribute("adminInfo", ad.findUser(Integer.valueOf(admin.getId())));//这里回去是Admin对象
request.getRequestDispatcher(AdminManageServlet.ADMINEDIT_PATH).forward(request, response);
}
}
//修改用户
private void adminEdit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id=request.getParameter("id");
AdminDao ad=new AdminDaoImpl();
request.setAttribute("adminInfo",ad.findUser(Integer.valueOf(id)));//这里回去是Admin对象
request.getRequestDispatcher(AdminManageServlet.ADMINEDIT_PATH).forward(request, response);
}
//删除用户
private void adminDel(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
int id=Integer.parseInt(request.getParameter("id"));
AdminDao ad=new AdminDaoImpl();
if(ad.delUser(id)) {
request.setAttribute("adminMessage", "用户已删除");
}else {
request.setAttribute("adminMessage", "用户删除失败");
}
//用户删除成功失败都跳转到用户列表页面
adminList(request, response);//通过servlet中listUser跳到用户列表
}
//批量删除
private void adminBatDel(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String ids=request.getParameter("ids");
AdminDao ad=new AdminDaoImpl();
if(ad.batDelUser(ids)) {
request.setAttribute("adminMessage", "用户已批量删除");
}else {
request.setAttribute("adminMessage", "用户批量删除失败");
}
//用户删除成功失败都跳转到用户列表页面
adminList(request, response);//通过servlet中listUser跳到用户列表
}
//ajax判断用户名(param为接收的用户名)
private void adminFind(HttpServletRequest request, HttpServletResponse response) throws IOException {
String userName=request.getParameter("param");
AdminDao ad=new AdminDaoImpl();
//这里实例化json对象需要导入6个jar包(
//commons-lang-2.4.jar ,commons-collections-3.2.1.jar,commons-beanutils-1.8.3.jar
//json-lib-2.4-jdk15.jar ,ezmorph-1.0.6.jar ,commons-logging-1.1.3.jar)
JSONObject json=new JSONObject();
if(ad.findUser(userName)){
json.put("info", "用户名已存在");
json.put("status", "n");
}else{
json.put("info", "用户名可以使用");
json.put("status", "y");
}
response.getWriter().write(json.toString());
}
}
package dao.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import bean.Admin;
import bean.PageBean;
import dao.AdminDao;
import util.DateUtil;
import util.DbUtil;
public class AdminDaoImpl implements AdminDao {
/**
* @param user 传递要登录的用户信息
* @return 返回一个boolean值,true登录成功,false失败
*/
@Override
public boolean userLogin(Admin admin) {
boolean flag=false;
String sql="select * from s_admin where userName=? and passWord=?";
String sql2="update s_admin set lastLoginTime=? where id=?";
List<Map<String,Object>> list=DbUtil.executeQuery(sql, admin.getUserName(),admin.getPassWord());
if(list.size()>0){
flag=true;
//这里需要name值传入对象中
admin.setName((String)list.get(0).get("name"));
//通过登录成功用户的id更新最后登录时间
DbUtil.excuteUpdate(sql2, DateUtil.getTimestamp(),list.get(0).get("id"));
}
return flag;
}
/**
* @param pageBean 传递分页对象
* @return 返回一个list集合,这里是通过limit分页查询的结果
*/
@Override
public List<Admin> userList(PageBean pageBean) {
List<Admin> lu=new ArrayList<>();
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
String sql="select * from s_admin limit ?,?";
list=DbUtil.executeQuery(sql,(pageBean.getCurPage()-1)*pageBean.getMaxSize(),pageBean.getMaxSize());
if(list.size()>0) {
for(Map<String,Object> map:list) {
Admin u=new Admin(map);
lu.add(u);
}
}
return lu;
}
/**
* @param user 要增加的用户对象
* @return 返回一个boolean true用户增加成功 false用户增加失败
*/
@Override
public boolean userAdd(Admin user) {
String sql="insert into s_admin(userName,password,name) values(?,?,?)";
int i= DbUtil.excuteUpdate(sql, user.getUserName(),user.getPassWord(),user.getName());
return i>0?true:false;
}
/**
* @param id 根据id查找一个用户信息
* @return 返回一个list用户信息集合
*/
//查找指定id用户信息
@Override
public Admin findUser(Integer id) {
String sql="select * from s_admin where id=?";
Admin admin=null;
List<Map<String,Object>> list=DbUtil.executeQuery(sql, id);
if(list.size()>0) {
admin=new Admin(list.get(0));
}
return admin;
}
//查找用户名是否存在true存在
@Override
public boolean findUser(String userName) {
String sql="select * from s_admin where userName=?";
List<Map<String,Object>> list=DbUtil.executeQuery(sql, userName);
return list.size()>0?true:false;
}
/**
*
* @param admin 更新用户,根据传过来的id
* @return boolean
*/
@Override
public boolean userUpdate(Admin admin) {
String sql="update s_admin set password=? , name=? where id =?";
int i=DbUtil.excuteUpdate(sql, admin.getPassWord(),admin.getName(),admin.getId());
return i>0?true:false;
}
/**
* @param id 要删除的用户id
* @return 返回boolean true删除用户成功,false删除用户失败
*/
@Override
public boolean delUser(int id) {
String sql="delete from s_admin where id=?";
int i=DbUtil.excuteUpdate(sql, id);
return i>0?true:false;
}
/**
* @param ids 要批量删除id组的字符串
*/
@Override
public boolean batDelUser(String ids) {
String sql="delete from s_admin where id in ("+ids+")";
int i=DbUtil.excuteUpdate(sql);
return i>0?true:false;
}
@Override
public long cakeReadCount() {
long count=0;
String sql="select count(*) as count from s_admin";
List<Map<String, Object>> lm=DbUtil.executeQuery(sql);
if(lm.size()>0){
count=(long) lm.get(0).get("count");
}
return count;
}
}
论文目录