ajax实现用户权限管理,基于角色权限系统(第一节)-用户登录实现

一、表的设计

0519034ce046

二、需求分析

1、用户登录

2、用户管理:用户角色动态分析

3、角色管理:角色权限动态分析

4、菜单管理

三、数据表的设计

1、用户、角色、权限菜单关系

2、用户和角色是一对多的关系

3、角色和权限菜单是多对多的关系

t_user用户表

CREATE TABLE `t_user` (

`userId` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',

`userName` varchar(20) DEFAULT NULL COMMENT '用户名',

`password` varchar(20) DEFAULT NULL COMMENT '密码',

`userType` tinyint(4) DEFAULT NULL COMMENT '用户类型',

`roleId` int(11) DEFAULT NULL COMMENT '角色id(外键)',

`userDescription` varchar(200) DEFAULT NULL COMMENT '用户备注',

PRIMARY KEY (`userId`),

KEY `FK_t_user` (`roleId`),

CONSTRAINT `FK_t_user` FOREIGN KEY (`roleId`) REFERENCES `t_role` (`roleId`)

) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8

t_role角色表

CREATE TABLE `t_role` (

`roleId` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色id',

`roleName` varchar(20) DEFAULT NULL COMMENT '角色名称',

`authIds` varchar(50) DEFAULT NULL COMMENT '菜单权限ID集合',

`roleDescription` varchar(200) DEFAULT NULL COMMENT '角色备注',

PRIMARY KEY (`roleId`)

) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8

t_ruth权限菜单表

CREATE TABLE `t_auth` (

`authId` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',

`authName` varchar(20) DEFAULT NULL COMMENT '菜单名称',

`authPath` varchar(100) DEFAULT NULL COMMENT '菜单路径',

`parentId` int(11) DEFAULT NULL COMMENT '父级id',

`authDescription` varchar(200) DEFAULT NULL COMMENT '资源备注',

`state` varchar(20) DEFAULT NULL COMMENT '状态',

`iconCls` varchar(20) DEFAULT NULL COMMENT '菜单图标',

PRIMARY KEY (`authId`)

) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8

四、开发环境搭建

4.1、使用到技术:jsp+servlet+mysql+easyui

4.2、web环境搭建

0519034ce046

点击下一步

0519034ce046

点击下一步

0519034ce046

点击下一步

0519034ce046

点击finish

4.3、创建好的web项目工程结构

0519034ce046

4.4、导入相关的jar包

0519034ce046

4.5、引入jquery-easyui框架

0519034ce046

4.6、编写JSP页面代码

login.jsp

pageEncoding="UTF-8"%>

"Content-Type"content="text/html; charset=UTF-8">

"style/login.css"rel="stylesheet"type="text/css">

用户登陆

"text/javascript">

functionloadimage(){

document.getElementById("randImage").src="images/image.jsp?"+Math.random();

}

"form1"name="form1"action="user?action=login"method="post">

"MAIN">

"top">

"top2">

"topA">

"topB">

"http://www.baidu.com"target="_blank">"images/login/logo.gif"alt=""style=""/>

"topC">

"topD">

"login">

"left">用户名:"userName"name="userName"type="text"class="txt"value="${userName }"/>

"left">密  码:"password"name="password"type="password"class="txt"value="${password }"οnkeydοwn="if(event.keyCode==13)form1.submit()"/>

"left">验证码:"text"value="${imageCode }"name="imageCode"class="txtCode"id="imageCode"size="10"οnkeydοwn="if(event.keyCode==13)form1.submit()"/> "换一张试试"name="randImage"id="randImage"src="images/image.jsp"width="60"height="20"border="1"align="absmiddle">

"topE">

"middle_A">

"middle_B">

"middle_C">"btn">""src="images/login/btnlogin.gif"οnclick="javascript:document.getElementById('form1').submit()"/>  "red">${error }

"middle_D">

"bottom_A">

"bottom_B">

login.css

body

{

margin:0;

padding:0;

font-size:12px;

background:#214D90url(../images/login/bg.gif)repeat-x;

color:#999999;

font-family:Tahoma,Verdana;

}

ul

{

list-style:none;

margin:0;

padding:0;

}

.Main

{

width:940px;

margin:0auto;

}

.top

{

height:75px;

background:url(../images/login/login_01.gif)no-repeat;

}

.top2

{

height:94px;

background:url(../images/login/login_02.gif)no-repeat;

}

.topA

{

width:155px;

height:140px;

float:left;

overflow:hidden;

background:url(../images/login/login_03.gif)no-repeat;

}

.topB

{

width:282px;

height:140px;

float:left;

overflow:hidden;

background:url(../images/login/login_04.gif)no-repeat;

}

.topC

{

width:27px;

height:140px;

float:left;

overflow:hidden;

background:url(../images/login/login_05.gif)no-repeat;

}

.topD

{

width:318px;

height:140px;

float:left;

overflow:hidden;

background:url(../images/login/login_06.gif)no-repeat;

}

.topE

{

width:158px;

height:140px;

float:left;

overflow:hidden;

background:url(../images/login/login_07.gif)no-repeat;

}

.middle_A

{

width:155px;

height:94px;

float:left;

overflow:hidden;

background:url(../images/login/login_08.gif)no-repeat;

}

.middle_B

{

width:309px;

height:94px;

float:left;

overflow:hidden;

background:url(../images/login/login_09.gif)no-repeat;

}

.middle_C

{

width:318px;

height:94px;

float:left;

overflow:hidden;

background:url(../images/login/login_10.gif)no-repeat;

}

.middle_D

{

width:158px;

height:94px;

float:left;

overflow:hidden;

background:url(../images/login/login_11.gif)no-repeat;

}

.bottom_A

{

height:72px;

clear:both;

overflow:hidden;

background:url(../images/login/login_12.gif)no-repeat;

}

.bottom_B

{

height:70px;

overflow:hidden;

text-align:center;

background:url(../images/login/login_13.gif)no-repeat;

}

.login

{

}

.loginli

{

line-height:35px;

height:35px;

overflow:hidden;

}

.left

{line-height:35px;

vertical-align:middle;

width:50px;

height:34px;

text-align:right;

display:-moz-inline-box;

display:inline-block;

padding-bottom:3px;

}

.txt

{

width:215px;

height:30px;

line-height:30px;

overflow:hidden;

border:0px;

padding-left:3px;

color:#999999;

background:url(../images/login/txt.gif)no-repeatleftcenter;

}

.txtCode

{

line-height:30px;

width:93px;

height:30px;

overflow:hidden;

border:0px;

padding-left:3px;

color:#999999;

background:url(../images/login/code.gif)no-repeatleftcenter;

}

.btn

{

margin-left:53px;

}

main.jsp注界面

${currentuser.userName},登陆成功

4.7、编写相关后端代码

实体类

packagecom.xiaowen.model;

importjava.io.Serializable;

/**

* 用户实体类

*@authorxiaowen

*/

publicclassUserimplementsSerializable {

privatestaticfinallongserialVersionUID= 1L;

privateIntegeruserId;//用户ID

privateStringuserName;//用户名

privateStringpassword;//密码

privateIntegeruserType;//用户类型

privateIntegerroleId=1;//角色ID

privateStringuserDescription;//用户备注

publicUser() {

super();

}

publicUser(StringuserName, Stringpassword) {

super();

this.userName=userName;

this.password=password;

}

publicInteger getUserId() {

returnuserId;

}

publicvoidsetUserId(IntegeruserId) {

this.userId=userId;

}

publicString getUserName() {

returnuserName;

}

publicvoidsetUserName(StringuserName) {

this.userName=userName;

}

publicString getPassword() {

returnpassword;

}

publicvoidsetPassword(Stringpassword) {

this.password=password;

}

publicInteger getUserType() {

returnuserType;

}

publicvoidsetUserType(IntegeruserType) {

this.userType=userType;

}

publicInteger getRoleId() {

returnroleId;

}

publicvoidsetRoleId(IntegerroleId) {

this.roleId=roleId;

}

publicString getUserDescription() {

returnuserDescription;

}

publicvoidsetUserDescription(StringuserDescription) {

this.userDescription=userDescription;

}

}

dao类

packagecom.xiaowen.dao;

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importcom.xiaowen.model.User;

/**

* 用户的Dao数据层

*@authorxiaowen

*/

publicclassUserDao {

/**

* 用户登陆

*@paramcon

*@paramuser

*@return

*@throwsException

*/

publicUserlogin(Connectioncon,Useruser)throwsException{

UserresultUser=null;

Stringsql="select * from t_user where userName=? and password=?";

PreparedStatementpst=con.prepareStatement(sql);

pst.setString(1,user.getUserName());

pst.setString(2,user.getPassword());

ResultSetrs=pst.executeQuery();

if(rs.next()){

resultUser=newUser();

resultUser.setUserId(rs.getInt("userId"));

resultUser.setUserName(rs.getString("userName"));

resultUser.setPassword(rs.getString("password"));

resultUser.setRoleId(rs.getInt("roleId"));

}

returnresultUser;

}

}

工具类

packagecom.xiaowen.util;

importjava.sql.Connection;

importjava.sql.DriverManager;

/**

* 数据库工具类

*@authorxiaowen

*/

publicclassDbUtil {

privateStringdbUrl="jdbc:mysql://localhost:3306/db_rbps";

privateStringdbUserName="root";

privateStringdbPassword="123456";

privateStringdbDriver="com.mysql.jdbc.Driver";

/**

* 数据库连接

*@return

*@throwsException

*/

publicConnection getCon()throwsException{

Class.forName(dbDriver);

Connectioncon=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);

returncon;

}

/**

* 数据库关闭

*@paramcon

*@throwsException

*/

publicvoidcloseCon(Connectioncon)throwsException{

if(con!=null){

con.close();

}

}

publicstaticvoidmain(String[]args) {

DbUtildbUtil=newDbUtil();

try{

dbUtil.getCon();

System.out.println("数据库连接成功!");

}catch(Exceptione) {

e.printStackTrace();

System.out.println("数据库连接失败!");

}

}

}

service层

packagecom.xiaowen.server;

importjava.io.IOException;

importjava.sql.Connection;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

importcom.xiaowen.dao.UserDao;

importcom.xiaowen.model.User;

importcom.xiaowen.util.DbUtil;

importcom.xiaowen.util.StringUtil;

/**

* 用户Server处理层

*@authorxiaowen

*/

publicclassUserServerextendsHttpServlet{

privatestaticfinallongserialVersionUID= 1L;

DbUtildbUtil=newDbUtil();

UserDaouserDao=newUserDao();

Connectioncon=null;

@Override

publicvoidservice(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException, IOException {

response.setCharacterEncoding("utf-8");

Stringaction=request.getParameter("action");

if("login".equals(action)){

login(request,response);

}

}

privatevoidlogin(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException, IOException {

HttpSessionsession=request.getSession();

StringuserName=request.getParameter("userName");

Stringpassword=request.getParameter("password");

StringimageCode=request.getParameter("imageCode");

request.setAttribute("userName",userName);

request.setAttribute("password",password);

request.setAttribute("imageCode",imageCode);

if(StringUtil.isEmpty(userName)||StringUtil.isEmpty(password)){

request.setAttribute("error","用户名或密码错误!");

request.getRequestDispatcher("login.jsp").forward(request,response);

return;

}

if(StringUtil.isEmpty(imageCode)){

request.setAttribute("error","验证码为空!");

request.getRequestDispatcher("login.jsp").forward(request,response);

return;

}

if(!imageCode.equals(session.getAttribute("sRand"))){

request.setAttribute("error","验证码错误");

request.getRequestDispatcher("login.jsp").forward(request,response);

return;

}

Useruser=newUser(userName,password);

try{

con=dbUtil.getCon();

Usercurrentuser=userDao.login(con,user);

if(currentuser==null){

request.setAttribute("error","用户名或密码错误!");

request.getRequestDispatcher("login.jsp").forward(request,response);

}else{

session.setAttribute("currentuser",currentuser);

response.sendRedirect("main.jsp");

}

}catch(Exceptione) {

e.printStackTrace();

}finally{

try{

dbUtil.closeCon(con);

}catch(Exceptione) {

e.printStackTrace();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值