实现不同的用户登录以后可以看到不同的菜单。(后台可以实现对用户菜单的管理。)

第一步:分析数据结构

       1:用户表

表名:users

列名

类型

说明

id

Varchar(32)

主键

name

Varchar(30)

 

      2:菜单表

第二步:写入表中几行数据进行基本分析

insert into users values('U001','Jack','1234');

insert into users values('U002','张三','4321');

insert into users values('U003','Tom','1111');

insert into roles values('R001','管理员','');

insert into roles values('R002','教师','');

insert into roleuser values('U001','R001');

insert into roleuser values('U002','R002');

insert into menus values('M001','系统管理','/sys.jsp');

insert into menus values('M002','用户管理','/user.jsp');

insert into menus values('M003','角色管理','/role.jsp');

insert into rolemenu values('M001','R001');

insert into rolemenu values('M002','R001');

insert into rolemenu values('M003','R001');

insert into rolemenu values('M003','R002');

/*查询某个拥有某个角色*/

select u.name,r.name

from users u inner join roleuser ru on u.id=ru.uid

inner join roles r on ru.rid=r.id;

/*某角色拥有某菜单*/

select r.name,m.name

from roles r inner join rolemenu rm on r.id=rm.rid

inner join menus m on rm.mid=m.id;

/*查询某人拥有某个菜单*/

select u.name,m.name

from users u inner join roleuser ru on u.id=ru.uid

inner join roles r on ru.rid=r.id

inner join rolemenu rm on r.id=rm.rid

inner join menus m on rm.mid=m.id;

第三步:创建JavaBean(领域模型)和工具类

public class User {

private String name;

private String id;

private String pwd;

连接数据库的工具类:

第三步:设计界面

第四步:实现用户登录

分包:提供用户的登录,退出修改

Cn.hx.user.

userServlet

service

userService

dao

userDao

菜单

Cn.hx.menu

MenuServlet

MenuService

MenuDao

角色

对主页面来只有Servvlet没有service,调用别的service实现。

Cn.hx.main

MainServlet

(没有Service)

第五步:开发登录页面

<form name="name" action="<c:url value='/UserServlet?cmd=login'/> " method="post">

Name:<input type="text" name="name"/><br/>

pwd:<input type="text" name="pwd"/><br/>

<input type="submit"/>

</form>

第六步:开发整个的usre包

Cn.hx.user.

userServlet

service

userService

dao

userDao

第七步:实菜单的查询功能

              菜单是菜单的功能包。

              主功能,有自己的servvlet MainServvlet

 

第八步:使用过虑器验证/jsp/*

       这只是第一步,只是验证用户有没有访问的凭证。认证.

过滤器验证类:

package cn.hx.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.ScalarHandler;

import cn.hx.domain.User;

import cn.hx.utils.DataSourceUtils;

public class AuthFilter implements Filter {

public void init(FilterConfig filterConfig) throws ServletException {

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

//获取uri

HttpServletRequest req = (HttpServletRequest) request;

String uri = req.getRequestURI();//Http://localhost:8080/day20/jsps/role.jsp->day20/jsps/role.jsp

uri = uri.replace(req.getContextPath(), "");

//组成sql

String sql = "SELECT COUNT(1)"+

" FROM menus m INNER JOIN rolemenu rm ON m.id=rm.mid"+

" INNER JOIN roles r ON r.id=rm.rid"+

" INNER JOIN roleuser ru ON r.id=ru.rid"+

" WHERE ru.uid=? AND url=?";

//取到用户的id

User user = (User) req.getSession().getAttribute("user");

try{

QueryRunner run = new QueryRunner(DataSourceUtils.getDatasSource());

Object o = run.query(sql,new ScalarHandler(),user.getId(),uri);

int size = Integer.parseInt(o.toString());

if(size==0){

System.err.println("你没有权限....");

}else{

chain.doFilter(req, response);

}

}catch(Exception e){

}

}

public void destroy() {

// TODO Auto-generated method stub

}

}

流程图

认证过程

登录过程:

显示菜单的过程:

java—不同的用户登录以后可以看到不同的菜单(后台可以实现对用户菜单的管理) 1 (55)的更多相关文章

  1. Java基础知识强化之集合框架笔记37:用户登录注册案例

    1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢?         ...

  2. Java SSH框架系列:用户登录模块的设计与实现思路

    1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...

  3. android loginDemo +WebService用户登录验证

        android loginDemo +WebService用户登录验证 本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.l ...

  4. 纯JSP实现用户登录注册,记事本

    没有美化,没有格式,没有样式 1.JSP登陆注册 将用户注册的信息保存在application对象中,用于登录时的验证. 首页如下: 如果未登录,在  session 中找不到 currentUser ...

  5. IDEA项目搭建十二——站点用户登录会话实现

    一.简介 前两天写了一篇用户登录会话设计的脑图,这次就把这个引入到项目中实现,总体来说需要几步先罗列一下: 1.需要一个Cookie工具类用于读写cookie 2.需要一个Cache工具类用于在服务端 ...

  6. JSP小例子——以Model1的思想实现用户登录小例子(不涉及DB操作)

    Model1简介现在比较流行的就是Model1和Model2,这里介绍Model1.在Model1模型出现前,整个Web应用的情况是:几乎全部由JSP页面组成,JSP页面接受处理客户端请求,对请求处理 ...

  7. JavaWeb_(request和response)用户登录注册模板_基础版

    用户登录注册模板进阶版 传送门 用户登录注册模板基础版 登录:当用户登录成功时,跳转到personCenter.jsp,当用户登录失败时,跳转到login.jsp并给出提示 注册:当用户注册成功时,跳 ...

  8. Asp.Net Core 项目实战之权限管理系统(5) 用户登录

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. PHP注册与登录【3】 用户登录与退出

    登录页面 login.html 负责收集用户填写的登录信息. <fieldset> <legend>用户登录</legend> <form name=&quo ...

随机推荐

  1. Maven(六) eclipse 使用Maven deploy命令部署构建到Nexus

    转载于:http://blog.csdn.net/jun55xiu/article/details/43051627 1  应用场景:SYS-UTIL(系统工具)项目部署.构建成JAR包(SYS-UT ...

  2. “MSDTC 事务的导入失败: Result Code = 0x8004d00e。

    今天搞数据库移植,也把分布式程序移植了一下,一直报上面的错误,差点要重装了  %>_<%,网上看了几篇文章偶然间用DPCPING工具测试了下连接,发现不行.想到host文件的配置,发现其中 ...

  3. UnityEngine.SerializeField & System.Serializable

    [UnityEngine.SerializeField] Force Unity to serialize a private field. 强制Unity序列化一个私有变量. You will al ...

  4. Python setattr() 函数

    Python setattr() 函数  Python 内置函数 描述 setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. 语法 setattr() 语法: ...

  5. MYSQL 存储过程通用

    返回随机时间 函数 )) ) CHARSET utf8 BEGIN )); -- 随机天数 60天以内随机天数 )); -- 随机小时 ));-- 随机分 ));-- 随机秒 ); IF type = ...

  6. OGNL特殊符号的使用

    ---------------------siwuxie095 # 的使用 1.使用 # 获取 context 中的数据 「值栈分为 root 和 context 两部分」 2.如:向 Request ...

  7. 06 Python字符编码与文件处理

    python垃圾回收机制: python中的垃圾回收机制是以引用计数为主,分代收集为辅,引用计数的缺陷是循环引用的问题,一个对象的引用数为0 ,那么这个对象就会被python虚拟机回收内存 字符编码 ...

  8. C#进阶系列——WebApi 异常处理解决方案(转)

    出处:http://www.cnblogs.com/landeanfen/p/5363846.html 阅读目录 一.使用异常筛选器捕获所有异常 二.HttpResponseException自定义异 ...

  9. require的路径问题(比较重要)

    dojo.baseUrl baseUrl用来存储dojo.js存放 的跟目录,例如dojo.js的路径是“/web/scripts/dojo-1.3/dojo/dojo.js”则baseUrl为“/w ...

  10. Java 高级基础——反射

    Java 高级基础--反射 反射的意义:Java 强类型语言,但是我们在运行时有了解.修改信息的需求,包括类信息.成员信息以及数组信息. 基本类型与引用类型 基本类型,(固定的 8 种) 整数:byt ...