PageHelper
直接使用maven在pom.xml中添加依赖就行
在我们这个ssm管理项目中,已经添加了依赖包
在Springp配置文件中配置拦截器插件
正式使用
我们只需要在调用dao的方法之前插入如下语句就行,也就是说在service层里面进行插入
当然了上面的pageNum与pageSize是我们从前端传过来的,我们需要通过这个fandAll方法传入
然后去处理一下Controller控制器里面的代码
这里我们去看一下PageInfo这个对象
然后我们去处理一下前端页面
前端页面需要修改两个页面,一个是导航栏,订单查询的地方,需要传入页码与每一页显示的条路,否则会报错
然后去修改订单展示页面,也就是order-list.jsp页面
先来看数据展示的部分,之前传过来的是一个ordersList的属性,然后去访问,但是现在传过来的是一个PageInfo对象
改动位置:
每页显示几条数据也需要改动
在这个页面下面有一个js函数,我们可以去看一下
根据这个页面记性修改
下面把分页的代码做一些改动
其实,分页数据的改动,主要就是拿到PageInfo里面的属性信息
先来看首页,就是第一页
中间展示页面
肯定采用的是jstl标签的形式获取,因为这部分不是固定的
然后是尾页
这里直接贴上所有代码
刚刚做下拉框页面展示的时候发现有点问题
这样修改一下,就可以获取了
下面说一下权限操作
表的结构分析与创建
下面直接上sql语句
CREATE TABLE users(
id varchar2(32) default SYS_GUID() PRIMARY KEY,
email VARCHAR2(50) UNIQUE NOT NULL,
username VARCHAR2(50),
PASSWORD VARCHAR2(50),
phoneNum VARCHAR2(20),
STATUS INT
)CREATE TABLE role(
id varchar2(32) default SYS_GUID() PRIMARY KEY,
roleName VARCHAR2(50) ,
roleDesc VARCHAR2(50)
)CREATE TABLE users_role(
userId varchar2(32),
roleId varchar2(32),
PRIMARY KEY(userId,roleId),
FOREIGN KEY (userId) REFERENCES users(id),
FOREIGN KEY (roleId) REFERENCES role(id)
)CREATE TABLE permission(
id varchar2(32) default SYS_GUID() PRIMARY KEY,
permissionName VARCHAR2(50) ,
url VARCHAR2(50)
)CREATE TABLE role_permission(
permissionId varchar2(32),
roleId varchar2(32),
PRIMARY KEY(permissionId,roleId),
FOREIGN KEY (permissionId) REFERENCES permission(id),
FOREIGN KEY (roleId) REFERENCES role(id)
)
下面分别把上面表对应的实体类创建好
UserInfo
Role
Permission
Spring Security介绍
Spring提供的安全认证服务框架
Spring Security快速入门
1.在pom.xml导入相关依赖
2.web.xml文件中创建filter
加载spring-security.xml的核心配置文件
3.spring security核心配置文件配置
通过核心配置文件
spring-security.xml
Spring Security使用数据库认证
使用Spring security来完成认证的流程
登录代码实现1
第一步:在pom.xml里面导入依赖
这里面的依赖基本上已经导入了
第二步:在web.xml 配置一下过滤器
服务器启动,加载配置文件
配置Spring的安全过滤器
第三步:在resources里面引入spring-security.xml的配置文件
下面去把Spring-security需要访问的service给做了
说白了这个认证器会去调用它默认的一个service对象
内部存在一个固定的方法
我们这个时候指明了这个UserServiceImpl对象的名字
但是现在dao层还没有对象存在,因为service还是通过dao来调用方法进行查询的,那我们去做一个关于User的dao接口
下面重新修改一下service层里面的方法
来说一下,查看某个类的结构
这个UserDetails类里面有一个User实现类
因为Spring-security框架返回的对象是去找UserDetails,也就是它的接口实现对象
下面我们来运行一下代码
现在先在前端引入两个页面login.jsp与failer.jsp页面
当服务器一启动,就会进入到我们登录页面,因为Spring-Security已经做了控制
下面说一下面对提交路径的问题
本来该去访问控制器的,然后这里控制器被Spring-security所替代了,所以就是去找之前配置的一个service
如果就按照以上配置去访问这个页面,会出现一个问题,我们在数据库里面插入几条用户信息
这里说一个小问题,就是字符串数据在插入的时候,要用单引号
我们在登录页面进行登录一下
不管输入什么,都会提示一个403的forbidden,也就是说,权限错误
其实这里的问题,就是权限不够
去看一下配置文件
也就是用户名密码对了也没用
我们追一下这个权限集合
集合内部存储的数据就是如下,必须是它的子类
我们看一下类的关系图就能找到这个类
现在去追一下这个类SimpleGrantedAuthority
我们就在UserServiceImpl里面重写写了一个函数
这个时候,我们要去
数据库里面存几个角色信息,再存之前我们再来分析一把
去修改一下dao层的查询方法
现在去完善IRoleDao里面的方法
在做这个sql语句之前,先到数据库里面插入一些数据
向用户表与角色表里面添加相应的信息
下面是角色表
下面是用户表
然后在插入关联表
现在再去处理一下IRoleDao里面的查询语句
然后再去处理Spring-security里面需要处理的service里面的代码
同时,我们还要对密码进行一个加密处理
同时我们还必须清楚一点,就是用户有一个状态信息
那么怎么通过这个状态限制用户不被登录,我们还是去看一下User这个封装的用户对象,其实想一下都要去找这个User,因为spring-security这个安装框架去访问的用户对象的时候,就是去找UserDetails的实现类
现在去追一下User 这个类
这个类的内部也是给我们调用了一个相同的构造方法
所以我们在service里面我们换一种构造方法来生成我们的User对象
也就是用上面这个,只不过enabled不在默认为true
然后现在来重新运行整个代码
package com.pxx.ssm.service.impl;import com.pxx.ssm.dao.IUserDao;
import com.pxx.ssm.domain.Role;
import com.pxx.ssm.domain.UserInfo;
import com.pxx.ssm.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.ArrayList;
import java.util.List;@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {@Autowiredprivate IUserDao userDao;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {UserInfo userInfo = null;try {userInfo = userDao.findByUsername(username);} catch (Exception e) {e.printStackTrace();}//处理自己的用户对象封装成UserDetails// User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));User user = new User(userInfo.getUsername(), "{noop}" + userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));return user;}//作用就是返回一个List集合,集合中装入的是角色描述public List getAuthority(List roles) {List list = new ArrayList<>();for (Role role : roles) {list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));}return list;}
}
简单说一下退出