网上书城(登录、注册、权限管理)

    • 前言
  • 登录
  • 注册
  • 权限管理

前言

网上书城包括前台、后台
网上书城前台内容:
1 、首页
2、 用户注册/登陆
3、 书籍查询
4 、购物车
5、 订单管理
5.1、 订单新增
5.2 、订单查询
5.3、 撤单
5.4、 签收
网上书城后台内容:
1 、管理员登陆
2、 书籍类别管理
3 、书籍管理
3.1、 新增
3.2 、未上架
3.2.1、 删除
3.2.2 、修改
3.2.3、 上传图片(只保存图片名)
3.2.4 、上架
4、订单管理

登录

效果图

代码:
login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录界面</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/css/bootstrap.min.css" /><style>.form-signin{top: 100px;/* 相对定位 */position: relative;width: 600px;left: 50%;margin-left: -300px;}.form-label-group{margin-top: 20px;}</style>
</head>
<body class="text-center">
<form class="form-signin" action="${pageContext.request.contextPath}/user.action?methodName=login" method="post"><div class="text-center mb-4"><img class="mb-4" src="/docs/assets/brand/bootstrap-solid.svg" alt="" width="72" height="72"><h1 class="h3 mb-3 font-weight-normal">登录界面</h1></div><div class="form-label-group"><input type="text" id="name" name="name" class="form-control" placeholder="请输入用户名" required autofocus></div><div class="form-label-group"><input type="password" id="pwd" name="pwd" class="form-control" placeholder="请输入密码" required></div><div class="checkbox mb-3"><label><input type="checkbox" value="remember-me"> Remember me</label></div><button class="btn btn-lg btn-primary btn-block" type="submit">登录</button><p class="mt-5 mb-3 text-muted text-center">&copy; 2017-2020</p></form><script src="${pageContext.request.contextPath }/static/js/bootstrap.min.js"></script>
</body>
</html>

实体类(User):

package com.dailang.entity;/*** 用户表* @author tuzi** 2020年7月1日 上午9:51:19*/
public class User {private long id;private String name;private String pwd;private int type;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}public int getType() {return type;}public void setType(int type) {this.type = type;}public User() {super();}public User(long id, String name, String pwd, int type) {super();this.id = id;this.name = name;this.pwd = pwd;this.type = type;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + ", type=" + type + "]";}}

UserDao(如果名称和密码不为空,就拼接起来):

public User login(User user,PageBean pageBean) throws Exception{String sql = "SELECT * from t_easyui_user where true ";if(StringUtils.isNotBlank(user.getName())) {sql +=" and name = '"+user.getName()+"'";}if(StringUtils.isNotBlank(user.getPwd())) {sql +=" and pwd = '"+user.getPwd()+"'";}List<User> list = super.executeQuery(sql, User.class, null);if(list.size() == 0) {return null;}return list.get(0);}

UserAction(如果用户名或密码错误,则重新登录,正确就到首页):

public String login(HttpServletRequest req,HttpServletResponse resp) {try {User curentUser = this.userDao.login(this.user, null);if(curentUser==null) {return "login";}req.getSession().setAttribute("curentUser", curentUser);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return "mains";}

注册

效果图

代码:
UserDao:

public int register(User user) throws Exception {String sql = "insert into t_easyui_user(name,pwd) values(?,?)";return super.executeUpdate(sql, user, new String[] {"name","pwd"});}

UserAction(返回影响行数大于0则注册成功,跳转到登录页面,否则注册失败):

public String register(HttpServletRequest req,HttpServletResponse resp) {try {int register = this.userDao.register(user);if(register>0) {return "login";}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return "register";}

mvc.xml:

<action path="/user" type="com.dailang.web.UserAction"><forward name="login" path="/login.jsp" redirect="false" /><forward name="mains" path="/bg/main.jsp" redirect="false" /></action>

权限管理

老板界面效果图:

用户界面效果图:

代码:
接前面博客的后续,博客连接如下:
datagrid之增删改
datagrid之查询
tab选项卡实现
tree组件实现
在登录的时候判断,如果是老板的账号,就进入老板后台的界面,如果是用户的账号,就进入用户后台的界面
首先先看一下用户表、用户角色权限中间表、权限表三张表
用户表

用户角色权限中间表

权限表

三张表之间的关系如下图

PermissionDao

public List<Permission> listPermission(String pids,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{String sql = "select * from t_easyui_permission where id in ("+pids+")";return super.executeQuery(sql, Permission.class, pageBean);}public List<TreeVo<Permission>> topNodePermission(String pids,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{List<Permission> list = this.listPermission(pids, pageBean);
//      通过工具类完成指定格式的输出List<TreeVo<Permission>> nodes = new ArrayList<TreeVo<Permission>>();
//      Permission的格式不满足easyui的tree组件的展现的数据格式TreeVo treeVo = null;for (Permission p : list) {treeVo = new TreeVo<>();treeVo.setId(p.getId()+"");treeVo.setText(p.getName());treeVo.setParentId(p.getPid()+"");Map<String, Object> attributes = new HashMap<String, Object>();attributes.put("self", p);treeVo.setAttributes(attributes);nodes.add(treeVo);}return BuildTree.buildList(nodes, "0");}

RolePermissionDao

public List<RolePermission> list(RolePermission rolePermission,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{String sql = "SELECT * from t_easyui_role_permission where true ";long rid = rolePermission.getRid();if(rid!=0) {sql += " and rid = "+rid;}return super.executeQuery(sql, RolePermission.class, pageBean);}

PermissionAction

public String menuTree(HttpServletRequest req,HttpServletResponse resp) {try {User curentUser = (User) req.getSession().getAttribute("curentUser");RolePermission rolePermission = new RolePermission();rolePermission.setRid(curentUser.getType());List<RolePermission> rolePermissions = this.rolePermissionDao.list(rolePermission, null);StringBuilder pids = new StringBuilder();for (RolePermission rp : rolePermissions) {pids.append(",").append(rp.getPid());}List<TreeVo<Permission>> topNodePermission = this.permissionDao.topNodePermission(pids.substring(1), null);ResponseUtil.writeJson(resp,topNodePermission);//           ResponseUtil.writeJson(resp, this.permissionDao.topNode(null, null));} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) { // TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}
//      结果码的位置为了在config.xml中寻找是转发还是重定向return null;}

网上书城的剩余功能后续会有,今天的就这些了,88

网上书城(登录、注册、权限管理)相关推荐

  1. 网上书城—登录、书籍管理

    前言: 登录模块涉及到的功能在jsp的时候其实就已经有写到过了,这边就不做过多的讲解代码意思了. 管理员模块,这边主要是书籍管理模块,涉及到了最基础增删改查. 目录 一.登录模块 1.主要功能: 2. ...

  2. 单点登录与权限管理本质:session和cookie介绍

    本篇开始写「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,这部分主要介绍相关的知识概念.抽象的处理过程.常见的实现框架.通过这部分的介绍,能够对单点登录与权限管理有整体上的了解,对其相关 ...

  3. 单点登录与权限管理本质:cookie安全问题

    继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前一篇文章介绍了单点登录概念,以CAS协议的基本流程为例讲解了系统间的交互过程,过程中,cookie的设置和传输涉及的比较多,如何 ...

  4. 「单点登录与权限管理」系列概述

    首先,感谢几位朋友在朋友圈转发我的文章,小声的告诉你们,是我主动让他们帮忙转发的:)在朋友们的分享下,凌晨推送的一篇文章,阅读人数达到了280多,很满足,我会坚持写下去,分享工作.学习.生活中的所思所 ...

  5. 4a安全管控 java cas_单点登录与权限管理本质:单点登录介绍

    继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前两篇介绍了session与cookie 和 HTTP重定向 ,有了他们,浏览器就可以在多个系统间自动交互,实现自动登录. 本篇介 ...

  6. springBoot整合spring security+JWT实现单点登录与权限管理前后端分离

    在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与权限管理. ...

  7. springBoot整合spring security+JWT实现单点登录与权限管理前后端分离--筑基中期

    写在前面 在前一篇文章当中,我们介绍了springBoot整合spring security单体应用版,在这篇文章当中,我将介绍springBoot整合spring secury+JWT实现单点登录与 ...

  8. 单点登录与权限管理本质:权限管理介绍

    前面几篇文章介绍了单点登录的本质,包括cookie.session.重定向的基本概念,单点登录的基本交互流程,cookie的重要性和安全问题.单点登录能够确保:必须通过身份验证后,才能访问网站,且访问 ...

  9. 单点登录与权限管理本质:单点登录介绍

    继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前两篇介绍了session与cookie 和 HTTP重定向 ,有了他们,浏览器就可以在多个系统间自动交互,实现自动登录. 该系列 ...

  10. goods.java_javaweb网上书城项目 1.用户管理:注册会员 - 下载 - 搜珍网

    压缩包 : java web网上图书商城项目.zip 列表 java web网上图书商城项目/ java web网上图书商城项目/goods/ java web网上图书商城项目/goods/.clas ...

最新文章

  1. java和C中基本数据类型的所占字节数对比
  2. python中fib什么意思_Python斐波那契数列是什么?怎么用?
  3. c++:MFC EDIT控件内容的四种处理方式使用(CEdit控件类型与CString 值联动)
  4. Hadoop RPC服务发布代码示例
  5. 介绍一个快速找出 Visual Studio Code 代码多余空格的扩展 - trailing space
  6. Android 布局练习
  7. How to install OpenERP 6 on Ubuntu 10.04 LTS Server--1
  8. Android仿苹果版QQ下拉刷新实现(二) ——贝塞尔曲线开发鼻涕下拉粘连效果
  9. [ios]ios读写文件本地数据
  10. 图像处理实战-Python编程进阶
  11. 释放tcp连接的命令是_TCP协议详解
  12. 「企业架构」什么是TOGAF?完整的介绍
  13. NSIS中文用户手册下载(免费下载)
  14. Window ffmpeg 推摄像头音视频流到服务器
  15. idea配置Translation插件为有道翻译引擎
  16. 极力推荐收藏的几个高清免费图片素材网站
  17. html中加减号,如何添加加+和减号 - 按钮,在产品列表网页(list.phtml)
  18. 微信小程序 input、picker组件
  19. Android选择DNK出现“NDK does not contain any platforms”
  20. 计算机的桌面不见了,电脑桌面图标没有了怎么恢复 教你找回消失的电脑桌面图标...

热门文章

  1. 单片机应用系统设计技术——独立式键盘及其工作原理
  2. 策略验证_指标买点分析技法_运用boll布林线指标选择买点
  3. windows使用mingw编译Android端openblas
  4. 静态链表中指针表示的是() A 内存地址 B下一元素地址 C 下一元素在数组的位置
  5. 基站防雷,5G通信基站防雷,防雷接地综合解决方案
  6. WinAPI: GetTempPath - 获取临时文件夹路径
  7. C# 猜数字小游戏
  8. 江苏北人:首次公开发行股票并在科创板上市申请获上交所受理
  9. 各司年终奖大爆料...
  10. 庞涓VS孙膑——一个很难的数学问题