-
Java spring MVC+easyUI+mybatis实现网站后台管理系统(菜单管理、操作员管理、角色管理、操作员授权)
2020-11-14 22:13:16博客目录spring MVC+easyUI+mybatis实现网站后台管理系统功能实现截图技术点介绍主要代码写在最后 spring MVC+easyUI+mybatis实现网站后台管理系统 最近开发一个通用的后台管理系统,管理员登录后,可以对角色、菜单...spring MVC+easyUI+mybatis实现网站后台管理系统
最近开发一个通用的后台管理系统,管理员登录后,可以对角色、菜单按钮进行控制和管理,十分的方便
功能实现截图
登录页面:
修改用户密码:
菜单管理:
操作员管理:
角色管理:
操作员授权:
编辑菜单:
编辑角色:
技术点介绍
使用Java平台,采用SpringMVC+Mybatis等主流框架
数据库:使用免费MYSQL
前端:使用Jquery和Easyui技术.界面清晰简洁,易操作
权限:对菜单,按钮控制.仅展示有权限的菜单和按钮.
拦截:对所有无权限URL进行拦截,防止手动发送HTTP请求,确保系统全性.
代码生成:根据表生成对应的Bean,Service,Mapper,Action,XML等。提高开发效率.主要代码
mode层:
BaseMode.javapackage com.yiya.model; import org.apache.commons.lang.StringUtils; import com.yiya.utils.Pager; import com.yiya.utils.StringUtil; public class BaseModel { private Integer page = 1; private Integer rows =10; private String sort; private String order; /** * 分页导航 */ private Pager pager = new Pager(); public Pager getPager() { pager.setPageId(getPage()); pager.setPageSize(getRows()); String orderField=""; if(StringUtils.isNotBlank(sort)){ orderField = sort; } if(StringUtils.isNotBlank(orderField) && StringUtils.isNotBlank(order)){ orderField +=" "+ order; } pager.setOrderField(orderField); return pager; } public void setPager(Pager pager) { this.pager = pager; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getRows() { return rows; } public void setRows(Integer rows) { this.rows = rows; } public String getSort() { return sort; } public void setSort(String sort) { this.sort = sort; } public String getOrder() { return order; } public void setOrder(String order) { this.order = order; } }
SysMenuModel.java
package com.yiya.model; public class SysMenuModel extends BaseModel { private Integer id;// 主键 private String name;// 菜单名称 private String url;// 系统url private Integer parentId;// 父id 关联sys_menu.id private Integer deleted;// 是否删除,0=未删除,1=已删除 private java.sql.Timestamp createTime;// 创建时间 private java.sql.Timestamp updateTime;// 修改时间 private Integer rank;// 排序 private String actions; //注册Action 按钮|分隔 public String getActions() { return actions; } public void setActions(String actions) { this.actions = actions; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public Integer getParentId() { return parentId; } public void setParentId(Integer parentId) { this.parentId = parentId; } public Integer getDeleted() { return deleted; } public void setDeleted(Integer deleted) { this.deleted = deleted; } public java.sql.Timestamp getCreateTime() { return createTime; } public void setCreateTime(java.sql.Timestamp createTime) { this.createTime = createTime; } public java.sql.Timestamp getUpdateTime() { return updateTime; } public void setUpdateTime(java.sql.Timestamp updateTime) { this.updateTime = updateTime; } public Integer getRank() { return rank; } public void setRank(Integer rank) { this.rank = rank; } }
service层
sysMenuService.javapackage com.yiya.service; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.yiya.bean.SysMenu; import com.yiya.bean.SysMenuBtn; import com.yiya.bean.SysRoleRel; import com.yiya.bean.SysRoleRel.RelType; import com.yiya.mapper.SysMenuMapper; /** * * <br> * <b>功能:</b>SysMenuService<br> * <b>作者:</b>罗泽军<br> * <b>日期:</b> Dec 9, 2011 <br> * <b>版权所有:<b>版权所有(C) 2011,WWW.VOWO.COM<br> */ @Service("sysMenuService") public class SysMenuService<T> extends BaseService<T> { private final static Logger log= Logger.getLogger(SysMenuService.class); @Autowired private SysRoleRelService<SysRoleRel> sysRoleRelService; @Autowired private SysMenuBtnService<SysMenuBtn> sysMenuBtnService; @Autowired private SysMenuMapper<T> mapper; /** * 保存菜单btn * @param btns * @throws Exception */ public void saveBtns(Integer menuid,List<SysMenuBtn> btns) throws Exception{ if(btns == null || btns.isEmpty()){ return; } for (SysMenuBtn btn : btns) { if(btn.getId()!= null && "1".equals(btn.getDeleteFlag())){ sysMenuBtnService.delete(btn.getId()); continue; } btn.setMenuid(menuid); if(btn.getId() == null){ sysMenuBtnService.add(btn); }else{ sysMenuBtnService.update(btn); } } } public void add(SysMenu menu) throws Exception { super.add((T)menu); saveBtns(menu.getId(),menu.getBtns()); } public void update(SysMenu menu) throws Exception { super.update((T)menu); saveBtns(menu.getId(),menu.getBtns()); } /** * 查询所有系统菜单列表 * @return */ public List<T> queryByAll(){ return mapper.queryByAll(); } /** * 获取顶级菜单 * @return */ public List<T> getRootMenu(Integer menuId){ Map<String, Integer> map = new HashMap<String, Integer>(); map.put("menuId", menuId); return mapper.getRootMenu(map); } /** * 获取子菜单 * @return */ public List<T> getChildMenu(){ return mapper.getChildMenu(); } /** * 根据用户id查询父菜单 * @param roleId * @return */ public List<T> getRootMenuByUser(Integer userId){ return getMapper().getRootMenuByUser(userId); } /** * 根据用户id查询子菜单 * @param roleId * @return */ public List<T> getChildMenuByUser(Integer userId){ return getMapper().getChildMenuByUser(userId); } /** * 根据权限id查询菜单 * @param roleId * @return */ public List<T> getMenuByRoleId(Integer roleId){ return getMapper().getMenuByRoleId(roleId); } @Override public void delete(Object[] ids) throws Exception { super.delete(ids); //删除关联关系 for(Object id : ids){ sysRoleRelService.deleteByObjId((Integer)id, RelType.MENU.key); sysMenuBtnService.deleteByMenuid((Integer)id); } } public SysMenuMapper<T> getMapper() { return mapper; } }
action层
SysMenuAction.javapackage com.yiya.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.yiya.bean.SysMenu; import com.yiya.bean.SysMenuBtn; import com.yiya.bean.TreeNode; import com.yiya.bean.BaseBean.DELETED; import com.yiya.model.SysMenuModel; import com.yiya.service.SysMenuBtnService; import com.yiya.service.SysMenuService; import com.yiya.utils.HtmlUtil; import com.yiya.utils.TreeUtil; @Controller @RequestMapping("/sysMenu") public class SysMenuAction extends BaseAction{ private final static Logger log= Logger.getLogger(SysMenuAction.class); // Servrice start @Autowired(required=false) //自动注入,不需要生成set方法了,required=false表示没有实现类,也不会报错。 private SysMenuService<SysMenu> sysMenuService; @Autowired private SysMenuBtnService<SysMenuBtn> sysMenuBtnService; /** * ilook 首页 * @param url * @param classifyId * @return */ @RequestMapping("/menu") public ModelAndView menu(SysMenuModel model,HttpServletRequest request) throws Exception{ Map<String,Object> context = getRootMap(); model.setDeleted(DELETED.NO.key); List<SysMenu> dataList = sysMenuService.queryByList(model); //设置页面数据 context.put("dataList", dataList); return forword("sys/sysMenu",context); } /** * 顶级菜单 json * @param menuId 此菜单id不查询,可以为空 * @param response * @throws Exception */ @RequestMapping("/rootMenuJson") public void rootMenu(Integer menuId,HttpServletResponse response) throws Exception{ List<SysMenu> dataList = sysMenuService.getRootMenu(menuId); if(dataList==null){ dataList = new ArrayList<SysMenu>(); } HtmlUtil.writerJson(response, dataList); } /** * json 列表页面 * @param url * @param classifyId * @return * @throws Exception */ @RequestMapping("/dataList") public void dataList(SysMenuModel model,HttpServletResponse response) throws Exception{ List<SysMenu> dataList = sysMenuService.queryByList(model); //设置页面数据 Map<String,Object> jsonMap = new HashMap<String,Object>(); jsonMap.put("total",model.getPager().getRowCount()); jsonMap.put("rows", dataList); HtmlUtil.writerJson(response, jsonMap); } /** * 添加或修改数据 * @param url * @param classifyId * @return * @throws Exception */ @RequestMapping("/save") public void save(SysMenu bean,HttpServletRequest request,HttpServletResponse response) throws Exception{ if(true){ new Exception(" Test Error"); } //设置菜单按钮数据 List<SysMenuBtn> btns = getReqBtns(request); bean.setBtns(btns); if(bean.getId() == null){ bean.setDeleted(DELETED.NO.key); sysMenuService.add(bean); }else{ sysMenuService.update(bean); } sendSuccessMessage(response, "保存成功~"); } @RequestMapping("/getId") public void getId(Integer id,HttpServletResponse response) throws Exception{ Map<String,Object> context = new HashMap<String,Object>(); SysMenu bean = sysMenuService.queryById(id); if(bean == null){ sendFailureMessage(response, "没有找到对应的记录!"); return; } List<SysMenuBtn> btns = sysMenuBtnService.queryByMenuid(id); bean.setBtns(btns); context.put(SUCCESS, true); context.put("data", bean); HtmlUtil.writerJson(response, context); } @RequestMapping("/delete") public void delete(Integer[] id,HttpServletResponse response) throws Exception{ if(id != null && id.length > 0){ sysMenuService.delete(id); sendSuccessMessage(response, "删除成功"); }else{ sendFailureMessage(response, "未选中记录"); } } @RequestMapping("/getMenuTree") public void getMenuTree(Integer id,HttpServletResponse response) throws Exception{ List<TreeNode> menuTree = treeMenu(); HtmlUtil.writerJson(response, menuTree); } /** * 构建树形菜单 * @return */ public List<TreeNode> treeMenu(){ List<SysMenu> rootMenus = sysMenuService.getRootMenu(null);//根节点 List<SysMenu> childMenus = sysMenuService.getChildMenu();//子节点 List<SysMenuBtn> childBtns = sysMenuBtnService.queryByAll(); TreeUtil util = new TreeUtil(rootMenus,childMenus,childBtns); return util.getTreeNode(); } /** * 获取请求的菜单按钮数据 * @param request * @return */ public List<SysMenuBtn> getReqBtns(HttpServletRequest request){ List<SysMenuBtn> btnList= new ArrayList<SysMenuBtn>(); String[] btnId = request.getParameterValues("btnId"); String[] btnName = request.getParameterValues("btnName"); String[] btnType = request.getParameterValues("btnType"); String[] actionUrls = request.getParameterValues("actionUrls"); String[] deleteFlag = request.getParameterValues("deleteFlag"); for (int i = 0; i < btnId.length; i++) { if(StringUtils.isNotBlank(btnName[i]) && StringUtils.isNotBlank(btnType[i])){ SysMenuBtn btn = new SysMenuBtn(); if(StringUtils.isNotBlank(btnId[i]) && NumberUtils.isNumber(btnId[i])){ btn.setId(NumberUtils.toInt(btnId[i])); } btn.setBtnName(btnName[i]); btn.setBtnType(btnType[i]); btn.setActionUrls(actionUrls[i]); btn.setDeleteFlag(deleteFlag[i]); btnList.add(btn); } } return btnList; } }
dao
BaseDao.javapackage com.yiya.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class BaseDao { static Connection conn = null; static Statement stmt = null; static ResultSet rs = null; static PreparedStatement ps = null; private final static String deriver = "com.mysql.jdbc.Driver"; private final static String url = "jdbc:mysql://59.53.66.227/diyStartext?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"; private final static String user = "jony"; private final static String password = "123456"; public static Connection getConnection() { try { Class.forName(deriver); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (conn == null) { conn = DriverManager.getConnection(url, user, password); System.out.println("sussess"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } /** * 执行 SQL * * @param sql * @return */ public static ResultSet getResultSet(String sql) { try { BaseDao.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs; } /** * 执行 SQL * 只取出第一条数据 * @param sql * @return */ public static ResultSet getFirstResultSet(String sql) { try { BaseDao.getConnection(); ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = ps.executeQuery(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs; } /** * 获取表达式 * * @return */ public static Statement Statement() { try { if (conn == null) { stmt = conn.createStatement(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return stmt; } /** * 释放资源 * */ public static void closeDBConnection() { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { BaseDao.getConnection(); ResultSet r = BaseDao.getResultSet("select * from babyinfo"); try { while(r.next()){ System.out.println(rs.getString("name")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
写在最后
如果有问题(或需要完整源码参考)可以加博主V交流:Code2Life2
-
用java做的新闻网站设计实现(包含后台管理系统)
2018-10-16 15:07:03其后台数据库采用Mysql数据库进行支持,界面美化是利用Adobe PhotoshopCS6图片处理软件进行处理的。本系统从使用者角度出发,界面友好美观,人机信息交互灵活、方便、快捷,安全可靠,系统同时具有很大的可扩充性。... -
自由宿主Asp.net网站通用后台管理系统 v3.2.rar
2019-08-30 17:23:27自由宿主后台管理系统是一套通用后台管理系统,之所以给他加上“宿主”2个字,是因为这套系统本身没有自己的数据库,而必须依赖于其他数据库才能运行,自由指的是系统灵活性强,能够根据数据库表结构做一些简单的... -
自由宿主Asp.net网站通用后台管理系统 v3.2.zip
2019-07-09 01:46:37自由宿主后台管理系统是一套通用后台管理系统,之所以给他加上“宿主”2个字,是因为这套系统本身没有自己的数据库,而必须依赖于其他数据库才能运行,自由指的是系统灵活性强,能够根据数据库表结构做一些简单的... -
网站后台管理系统框架(精美实用).rar
2019-07-09 03:20:26发布一个网站的后台管理框架.源作者非本人.只是借用做了下修改,感觉蛮实用的. 仅仅是一个Access数据库来实现的后台框架,比较精美实用 可以实现菜单的多级控制并结合js进行动态显示 后台地址:manage/... -
基于javaweb(springboot)酒类商城项目(数据库+源码+论文)实现了客户端酒类的浏览、分类查看、订单管理、...
2021-03-03 16:17:59具体功能模块: ...(2) 、个人信息的管理: ①用户信息的修改操作,其中包括会员名、密码、性别、联系方式 e-mail 和个人介 绍等用户信息的修改操作。但是会员邮箱是绑定账号的,会员邮箱不能进行更改具体功能模块:
(1) 用户注册和登录登录功能:
①用户的注册功能 : 访问网站的人根据网站的提示注册自己的账户
②用户的登录功能 : 用户可以输入用户名和密码进行登录操作,当没有该账户的时 候,提示错误,用户必须通过注册完成或者从数据库中获取才能进行会员权限级别的操 作。登录成功之后可以购买商品,查询订单的详细信息
(2) 、个人信息的管理:
①用户信息的修改操作,其中包括会员名、密码、性别、联系方式 e-mail 和个人介 绍等用户信息的修改操作。但是会员邮箱是绑定账号的,会员邮箱不能进行更改操作。
②订单管理操作:订单只能查询和删除操作,不能有修改操作,修改操作是属于管理员的权限。
③用户退出操作:当点击用户退出时,就会退出当前用户的登录状态,恢复到游客 状态。
(3) 、商品的操作:
①搜索商品操作: 当在 Search 栏输入想搜索的家居用品时, 会使用模糊查询, 搜索 出客户想到查询的家居用品。
②商品列表展示:在全部列表中会有很多分列表目录,这些目录都是不同的种类, 当我们点击不同的目录,就会查询不同的商品。
③商品详细信息展示:会根据该目录下的商品类型展示出全部的商品。包括信息包 括商品的图片、价格、售价等信息。这些信息都不带有分页,如果商品列表下的商品很 多,就会分很多页进行分页查询。
(4) 、购物车的管理操作:
①显示商品信息:当我们一进入购物车页面,就会显示出商品的详细信息,以及购 物车界面的功能信息。
②修改商品的数量:用户可以自己输入不同数量的商品,当商品的数量变动时,商 品的库存就会相应的减少,也会根据商品的数量得到购买这一种商品的金额小计。
③删除购物车中的商品:当我们点击删除时,会弹出一个提示框提示我们是否删除 商品,当点击‘确定’,就删除成功,点击 ‘取消’,对话框消失并且没有任何操作执行。
④购物流程变动:从到了购物车页面,就会显示购物流程,当每执行一步操作,购 物流程就会相应的变动。
⑤继续购物操作: 当点击继续购物按钮, 就会回到全部商品列表, 让我们再次购物。
⑥结账操作:当点击结账时,如果没有登录,那么就会提醒登录,如果登录了,就 会到结算中心界面进行结算。
(5) 、订单管理操作:
①订单生成:进入结算中心,会提示用户已经登录成功并来到结算中心,然后在提 交订单的时候生成了一份订单,会显示在确认订单页面。
②确认订单:当点击确认订单的时候会进入支付页面,那里会真正的付款操作。
③订单查询:在我的订单页面会显示订单的详细信息,我们可以查询我们想要的订 单信息。
④订单管理:在我的订单页面会显示所有订单的信息,可以在那里删除订单,查询 订单等。
3.1.2后台管理员主要设计
系统的后台是专门为管理家居商城系统的人员设计的,功能如下:
(1) 、超级管理员:拥有管理该系统的最大权限,他有两个特有的功能
①数据字典:可以对后台的不同分类的分类列表具有增删改查的操作。
②角色管理:将拥有不同权限的管理员分成不同的角色,每个不同角色有自己的权
限,不能执行越权操作,分配不同的权限的角色也是为了方便更好的管理。
(2) 、商品分类的管理:
①添加分类:点击添加按钮,会跳转到分类添加页面,需要编写分类名称,分类描
述信息。
②编辑分类:点击编辑分类按钮,会跳转到分类编辑页面,需要编写分类名称,分
类描述信息。另外会有数据回显,当什么都不操作时,保持原来不变。
③删除分类:当点击删除按钮时,会弹出一个提醒框,当点击确定,删除分类,点
击取消,保持原来不变。
(3) 、商品管理功能:
①查询商品 : 查询所有商品列表, 还有通过商品的名称、 商品的类别和价格区间查询
指定商品或符合条件的商品,并且可以查询商品的详细信息。
②添加商品 : 点击添加商品会转到添加商品页面, 需要提供商品名称、 商品图片、商 5 6 品类别、商品价格、库存数量、商品描述等内容。
③修改商品 : 当点击编辑操作时,修改商品的信息,包括商品名称、商品图片、商品 类别、商品价格、库存数量、商品描述等内容
④删除商品:删除已过时或者库存为零的商品。
给大家截一部分效果图吧
系统客户端首页
登录注册以及后台用户管理
后台商品信息管理
功能选择
用户信息管理修改
主要技术:springmvc springboot mybatis mysql jquery layui 等技术
-
基于javaweb(springboot)网上家具商城项目(数据库+源码+论文)实现了客户端商品的浏览、分类查看、订单...
2021-02-25 16:51:50具体功能模块: ...(2) 、个人信息的管理: ①用户信息的修改操作,其中包括会员名、密码、性别、联系方式 e-mail 和个人介 绍等用户信息的修改操作。但是会员邮箱是绑定账号的,会员邮箱不能进行更改具体功能模块:
(1) 用户注册和登录登录功能:
①用户的注册功能 : 访问网站的人根据网站的提示注册自己的账户
②用户的登录功能 : 用户可以输入用户名和密码进行登录操作,当没有该账户的时 候,提示错误,用户必须通过注册完成或者从数据库中获取才能进行会员权限级别的操 作。登录成功之后可以购买商品,查询订单的详细信息
(2) 、个人信息的管理:
①用户信息的修改操作,其中包括会员名、密码、性别、联系方式 e-mail 和个人介 绍等用户信息的修改操作。但是会员邮箱是绑定账号的,会员邮箱不能进行更改操作。
②订单管理操作:订单只能查询和删除操作,不能有修改操作,修改操作是属于管理员的权限。
③用户退出操作:当点击用户退出时,就会退出当前用户的登录状态,恢复到游客 状态。
(3) 、商品的操作:
①搜索商品操作: 当在 Search 栏输入想搜索的家居用品时, 会使用模糊查询, 搜索 出客户想到查询的家居用品。
②商品列表展示:在全部列表中会有很多分列表目录,这些目录都是不同的种类, 当我们点击不同的目录,就会查询不同的商品。
③商品详细信息展示:会根据该目录下的商品类型展示出全部的商品。包括信息包 括商品的图片、价格、售价等信息。这些信息都不带有分页,如果商品列表下的商品很 多,就会分很多页进行分页查询。
(4) 、购物车的管理操作:
①显示商品信息:当我们一进入购物车页面,就会显示出商品的详细信息,以及购 物车界面的功能信息。
②修改商品的数量:用户可以自己输入不同数量的商品,当商品的数量变动时,商 品的库存就会相应的减少,也会根据商品的数量得到购买这一种商品的金额小计。
③删除购物车中的商品:当我们点击删除时,会弹出一个提示框提示我们是否删除 商品,当点击‘确定’,就删除成功,点击 ‘取消’,对话框消失并且没有任何操作执行。
④购物流程变动:从到了购物车页面,就会显示购物流程,当每执行一步操作,购 物流程就会相应的变动。
⑤继续购物操作: 当点击继续购物按钮, 就会回到全部商品列表, 让我们再次购物。
⑥结账操作:当点击结账时,如果没有登录,那么就会提醒登录,如果登录了,就 会到结算中心界面进行结算。
(5) 、订单管理操作:
①订单生成:进入结算中心,会提示用户已经登录成功并来到结算中心,然后在提 交订单的时候生成了一份订单,会显示在确认订单页面。
②确认订单:当点击确认订单的时候会进入支付页面,那里会真正的付款操作。
③订单查询:在我的订单页面会显示订单的详细信息,我们可以查询我们想要的订 单信息。
④订单管理:在我的订单页面会显示所有订单的信息,可以在那里删除订单,查询 订单等。
3.1.2后台管理员主要设计
系统的后台是专门为管理家居商城系统的人员设计的,功能如下:
(1) 、超级管理员:拥有管理该系统的最大权限,他有两个特有的功能
①数据字典:可以对后台的不同分类的分类列表具有增删改查的操作。
②角色管理:将拥有不同权限的管理员分成不同的角色,每个不同角色有自己的权
限,不能执行越权操作,分配不同的权限的角色也是为了方便更好的管理。
(2) 、商品分类的管理:
①添加分类:点击添加按钮,会跳转到分类添加页面,需要编写分类名称,分类描
述信息。
②编辑分类:点击编辑分类按钮,会跳转到分类编辑页面,需要编写分类名称,分
类描述信息。另外会有数据回显,当什么都不操作时,保持原来不变。
③删除分类:当点击删除按钮时,会弹出一个提醒框,当点击确定,删除分类,点
击取消,保持原来不变。
(3) 、商品管理功能:
①查询商品 : 查询所有商品列表, 还有通过商品的名称、 商品的类别和价格区间查询
指定商品或符合条件的商品,并且可以查询商品的详细信息。
②添加商品 : 点击添加商品会转到添加商品页面, 需要提供商品名称、 商品图片、商 5 6 品类别、商品价格、库存数量、商品描述等内容。
③修改商品 : 当点击编辑操作时,修改商品的信息,包括商品名称、商品图片、商品 类别、商品价格、库存数量、商品描述等内容
④删除商品:删除已过时或者库存为零的商品。
给大家截一部分效果图吧
系统客户端首页
登录注册以及后台用户管理
后台商品信息管理
功能选择
用户信息管理修改
主要技术:springmvc springboot mybatis mysql jquery layui 等技术
-
Java 交友网站(前台+后台)源码+数据库+文档+视频
2021-02-27 23:05:12管理员可以查看到所有会员上传的相册,以及其照片的点赞数量,列出点赞数量前10名,将其照片设计成规模多样的照片墙形式显示在网站首页的最中间,此照片墙将由管理员三天更新一次,会员可以点击照片墙中的照片进入到... -
基于JSP的旅游网站设计的设计与实现(源码+数据库+论文).zip
2019-12-20 10:01:14塞北村镇旅游网站设计主要用于实现旅游景点信息管理,基本功能包括:主界面模块设计,用户注册模块,旅游景点模块,酒店预订模块,后台管理模块等。本系统结构如下: (1)主界模块设计: 首页效果、首页塞北人文、... -
javaweb实验室研究成果管理系统网站ssm和springboot框架mysql数据库idea开发
2021-02-09 08:34:03实验室网站管理系统主要分为前台用户和后台管理员。不同的用户有不同的权限。一般用户只能实现管理员指定的信息,系统管理员可以对整个系统进行操作。前台用户实现的功能有:登录、注册、修改登录密码、修改详细资料...实验室网站管理系统主要分为前台用户和后台管理员。不同的用户有不同的权限。一般用户只能实现管理员指定的信息,系统管理员可以对整个系统进行操作。前台用户实现的功能有:登录、注册、修改登录密码、修改详细资料、我的研究成果管理、新闻、搜索、留言板;后台管理员实现的功能有:系统管理、新闻管理、研究成果管理、注册会员管理。
表5 Document研究成果
字段名称
自动增长
字段大小
字段类型
说明
id
-
4
int
-
title
-
255
varchar
标题
url
-
255
varchar
图片
address
-
255
varchar
附件
content
-
255
varchar
内容
addtime
-
255
varchar
日期
flag
-
255
varchar
标志
type
-
4
int
类型
erwei
-
255
varchar
图片
userid
-
255
varchar
用户Id
package com.action; import java.io.IOException; import java.util.List; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.bean.SystemBean; import com.bean.wendangClassBean; import com.util.Constant; import com.util.Filter; import com.util.SmartFile; import com.util.SmartUpload; public class WendangClassServlet extends HttpServlet { private ServletConfig config; /** * Constructor of the object. */ public WendangClassServlet() { super(); } final public void init(ServletConfig config) throws ServletException { this.config = config; } final public ServletConfig getServletConfig() { return config; } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(Constant.CHARACTERENCODING); response.setContentType(Constant.CONTENTTYPE); String sysdir = new SystemBean().getDir(); HttpSession session = request.getSession(); String method = null; wendangClassBean tb=new wendangClassBean(); SmartUpload mySmartUpload = new SmartUpload();//init int count = 0; try{ mySmartUpload.initialize(config,request,response); mySmartUpload.upload(); method = mySmartUpload.getRequest().getParameter("method").trim(); if(method.equals("delwendangclass")){ String id=mySmartUpload.getRequest().getParameter("id").trim(); //String id=request.getParameter("id").trim(); int flag = tb.delwendangclass(id); if(flag == Constant.SUCCESS){ request.setAttribute("message", "操作成功!"); request.getRequestDispatcher("admin/wendangclass/index.jsp").forward(request, response); } else{ request.setAttribute("message", "系统维护中,请稍后再试!"); request.getRequestDispatcher("admin/wendangclass/index.jsp").forward(request, response); } } else if(method.equals("addwendangclass")){//增加 String title = mySmartUpload.getRequest().getParameter("title").trim(); int flag = tb.addwendangclass(title); if(flag == Constant.SUCCESS){ request.setAttribute("message", "操作成功!"); request.getRequestDispatcher("admin/wendangclass/index.jsp").forward(request, response); } else{ request.setAttribute("message", "系统维护中,请稍后再试!"); request.getRequestDispatcher("admin/wendangclass/index.jsp").forward(request, response); } } //update else if(method.equals("upwendangclass")){ String id=mySmartUpload.getRequest().getParameter("id").trim(); String title = mySmartUpload.getRequest().getParameter("title").trim(); int flag = tb.updatewendangclass(Integer.parseInt(id),title); if(flag == Constant.SUCCESS){ request.setAttribute("message", "操作成功!"); request.getRequestDispatcher("admin/wendangclass/index.jsp").forward(request, response); } else{ request.setAttribute("message", "系统维护中,请稍后再试!"); request.getRequestDispatcher("admin/wendangclass/index.jsp").forward(request, response); } } }catch(Exception ex){ ex.printStackTrace(); request.getRequestDispatcher("error.jsp").forward(request, response); } } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init() throws ServletException { // Put your code here } }
-
javaweb二手回收平台网站管理系统之二手藏酒回收ssm和springboot框架mysql数据库idea开发
2021-02-07 15:56:40二手藏酒回收网站管理系统主要分为前台用户和后台管理员。不同的用户有不同的权限。一般用户只能实现管理员指定的信息,系统管理员可以对整个系统进行操作。前台用户实现的功能有:登录、注册、修改登录密码、修改... -
基于Springboot+Mybatis+ SpringMvc+springsecrity+Redis完整网站后台管理系统
2019-10-31 10:30:22菜单管理:菜单列表、添加菜单、修改菜单、删除菜单、权限配置、菜单图标设置、菜单排序 角色管理:角色查询、添加角色、修改角色、删除角色 代码生成:根据表名生成bean、controller、dao、Mapper.xml、列表页、... -
【tornado】系列项目之基于领域驱动模型的区域后台管理+前端easyui实现
2016-09-20 09:29:46本文主要介绍后台管理中的区域管理,以及前端基于easyui插件的使用。本次增删改查因数据量少,因此采用模态对话框方式进行,关于数据量大采用跳转方式修改,详见博主后续博文。 后台界面展示: 地区管理... -
javaweb月嫂预约服务管理系统平台网站(保姆/育儿嫂)ssm和springboot框架mysql数据库idea开发
2021-02-09 08:44:15后台管理员实现的功能有:系统管理(公告管理、发布公告、网站留言管理、管理员设置、后台登录日志)、管理(管理、发布)、月嫂服务管理(月嫂服务管理、添加月嫂服务)、注册会员管理、预定报名管理。 表... -
【tornado】系列项目(二)基于领域驱动模型的区域后台管理+前端easyui实现
2016-09-20 09:12:00本文主要介绍后台管理中的区域管理,以及前端基于easyui插件的使用。本次增删改查因数据量少,因此采用模态对话框方式进行,关于数据量大采用跳转方式修改,详见博主后续博文。 后台界面展示: 地区管理包含省市... -
javaweb城市管理和综合执法局网站城管局网站(城市违法广告投诉举报)ssm和springboot框架mysql数据库idea...
2021-02-09 08:30:09智慧城管信息网站管理系统主要分为前台用户和后台管理员。不同的用户有不同的权限。一般用户只能实现管理员指定的信息,系统管理员可以对整个系统进行操作。前台用户实现的功能有:登录、注册、修改登录密码、修改... -
使用Java脚手架5分钟快速开发网站与管理后台
2020-08-05 09:39:36这里以导航站为例,使用Java脚手架快速开发,也可用此框架实现复杂的后台管理系统。 技术框架:Springboot2.x Bootstrap 导入工程 用Eclipse或IDEA导入Maven工程,等待jar包下载完成。 修改配置文件:... -
cms后台管理系统
2018-07-22 15:32:57BootDo主要定位于后台管理系统学习交流,已内置后台管理系统的基础功能和高效的**代码生成**工具, 包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成等。 前端... -
[JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
2019-07-06 19:43:34本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础、网页布局、数据库基础、Servlet、前端后台数据库交互、DAO等知识。 前一篇文章讲解了通过Servlet获取所提交的... -
jsp宠物销售管理系统+数据库
2017-04-26 11:21:41宠物入库、宠物管理信息管理[->出售]、出售记录管理、评论管理 宠物的统计信息 宠物用品 添加宠物用品 用品信息管理 宠物知识 添加宠物知识 宠物知识信息...强大的后台管理功能:可以对整个网 站,全面的管理。 -
基于JavaWeb的美食网站(源码+数据库+论文)
2020-03-11 13:38:47本网站提供各种与美食相关的信息,实现了对信息数据的浏览、查询、编辑和删除等基本数据库操作,采用了模块化设计方法,实现了前台功能模块和后台功能模块,前台功能模块包括名店介绍、特色美食、名店加盟、美食教程... -
java及jsp实现电子政务网(含数据库).rar
2021-01-11 22:49:53主要用于实现政府机关的政务管理,基本功能包括:前台管网展示、留言板、后台登陆、修改密码、网站公告、政府网站、领导信箱、表格下载、政务公开、便民电话、新闻动态、地区概况、留言管理等。本系统结构如下: ... -
宝塔面板设置网站和数据库定期备份到阿里云oss
2018-08-28 15:31:38网站最重要的除了SEO,就是网站的备份了,你不知道你...首先进入你的宝塔后台,如果你不知道什么是宝塔可以百度一下,很好用的一个网站面板,进入到宝塔后台后点击软件管理。 点击系统工具,选择阿里云oss安装。... -
MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作
2019-07-07 21:36:42本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础、网页布局、数据库基础、Servlet、前端后台数据库交互、DAO等知识。前一篇文章讲解了通过Servlet获取所提交的... -
JSP第九次课:网上商城后台--首页设计及管理员功能实现
2015-03-27 21:59:18零、准备工作1、下载后台管理系统模板(框架结构模板)、了解相关功能及网站结构、分析需求2、分析后台关于管理员相关功能:管理员登录,统计登录次数、注册时间、修改自己密码、注销3、数据库新建Admin表,Bean设计... -
cms后台管理
2012-06-26 10:41:19系统管理后台登录:http://localhost:8080/jeecms/jeeadmin/jeecms/index.do 用户名:admin 密 码:password 图文安装步骤如下: 将解压后得到的ROOT文件夹拷贝到tomcat安装目录下的webapps文件夹下(例如:D:... -
基于Java ee 的影视创作论坛的设计与实现源码+数据库+文档+项目辅导视频
2021-02-27 23:23:49(1)后台管理: 管理模块:管理员的登录与退出、管理员个人信息的设置 电影管理模块:实现电影信息的增加、删除、修改、查看功能 实现电影分类信息的增加、删除、修改、查看功能 影评管理模块:实现影评信息的... -
菜谱共享分享网站java语言ssmSpringboot框架mysql数据库
2021-02-07 08:01:44该系统分为后台管理员登录、前台用户,具体功能描述如下所示: 管理员(后台用户) 系统管理:该模块实现的功能有公告管理、发布公告、友情链接、网站留言管理、管理员设置、后台登录日志。 会员管理:对注册的用户... -
基于ssh+mysql的家禽后台管理系统
2020-12-10 10:59:50网站:左右结构,就一个后台管理端 主要描述: 1)注册模块:在主页进行注册 (养殖户注册:名字,密码(加一个确认密码),手机号。) 2)登录:实现管理员进入系统管理前的验证操作,管理员只有输入正确的用户名... -
基于ThinkPHP框架的学生管理系统+留言板后台管理系统
2018-07-10 17:46:56大二php动态网站实训课完成的作业。...系统后端采用thinkphp3.2框架,...网站首页:学生管理系统设计思路:①首先实现管理员登录功能:管理员注册,登录,修改密码。②专业和班级信息列表功能:获取数据库中专业和班...
-
佳能6D2使用问题(对焦时取景器闪红光)解决办法
-
欢迎使用CSDN-markdown编辑器!
-
用户价值分层——基于RFM模型的研究分析
-
福利大礼包 (新).zip
-
计算 m 的 n 次幂
-
TodoList的实现vue
-
Python函数库深度详解(1)
-
用Go语言来写区块链(一)
-
密码学之古典凯撒
-
大学物理第五章.doc
-
UL 1177:2015 Standard for Buoyant Vests(浮力背心标准)- 最新完整英文版(60页)
-
名词解释:Version space
-
Linux top 命令里的load average
-
马原期末知识考点小结pdf
-
autoconfig和CVE资料收集
-
牛牛量化策略交易
-
2012-2016年安徽大学803西方经济学考研真题
-
MySQL 四类管理日志(详解及高阶配置)
-
cc2530模块底板电路图
-
最新5G时代投资风口投资区块链源码全修复版订制UI完美版本.zip