P2P后台管理系统

P2P后台管理系统原型搭建

在后台管理系统中,权限控制是比较复杂的功能了,讲解RBAC权限模型

我们需要完成的功能

项目原型搭建

用户登录

获取用户菜单权限及按钮权限

7天内免登陆

个人中心页面中,根据登录用户拥有的菜单权限显示菜单

功能权限(按钮权限的控制)

项目原型搭建

⒈搭建SpringBoot项目基础结构

① 创建Springboot项目16-p2p-admin

② 在16-p2p-admin的pom.xml中配置基础依赖

根据我们的技术选型,需要添加Jsp,Mybatis相关依赖

<dependencies>
   <!--SpringBoot开发web项目起步依赖-->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <!--SpringBoot测试依赖-->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>

   <!--引入Spring Boot内嵌的Tomcat对JSP的解析包,必须加,否则不能解析jsp页面-->
   <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
   </dependency>
   <!-- servlet依赖的jar包start ,可选-->
   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
   </dependency>
   <!-- servlet依赖的jar包end -->

   <!-- jsp依赖jar包start ,可选-->
   <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
   </dependency>
   <!-- jsp依赖jar包end -->

   <!--jstl标签依赖的jar包start ,可选-->
   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
   </dependency>
   <!--jstl标签依赖的jar包end -->

   <!--热部署插件-->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
   </dependency>

   <!-- 加载mybatis整合springboot -->
   <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <!--在springboot的父工程中没有指定版本,我们需要手动指定-->
      <version>1.3.2</version>
   </dependency>
   <!-- MySQL的jdbc驱动包 -->
   <dependency>
      <groupId>mysql</groupId>
      <!--在springboot的父工程中指定了版本,我们就不需要手动指定了-->
      <artifactId>mysql-connector-java</artifactId>
   </dependency>
	<!-- commons-lang依赖jar包 -->
<dependency>
   <groupId>commons-lang</groupId>
   <artifactId>commons-lang</artifactId>
   <version>2.5</version>
</dependency>
</dependencies>

③ 在16-p2p-admin的pom.xml文件中添加将指定资源编译到classpath的配置

<resources>
   <!--mybatis的mapper.xml-->
   <resource>
      <directory>src/main/java</directory>
      <includes>
         <include>**/*.xml</include>
      </includes>
   </resource>
   <!--src/main/resources下的所有配置文件编译到classes下面去-->
   <resource>
      <directory>src/main/resources</directory>
      <includes>
         <include>**/*.*</include>
      </includes>
   </resource>
   <resource>
      <!--指定将jsp编译到指定位置-->
      <directory>src/main/webapp</directory>
      <!--编译到META-INF/resources,该目录不能随便写-->
      <targetPath>META-INF/resources</targetPath>
      <includes>
         <!--要把哪些文件编译过去,**表示webapp目录及子目录,*.*表示所有-->
         <include>**/*.*</include>
      </includes>
   </resource>
</resources>

④ 在16-p2p-admin的核心配置文件application.properties中配置项目端口及上下文

#配置Spring boot内嵌的tomcat的端口号
server.port=9600
#配置项目访问工程名
server.servlet.context-path=/p2p-admin

⑤ 在16-p2p-admin的核心配置文件application.properties中配置SpringBoot使用JSP展示数据

#配置springmvc视图展示层访问前缀,/斜杠表示访问src/main/webapp目录下的jsp页面
spring.mvc.view.prefix=/WEB-INF/jsp/
#配置springmvc视图展示层访问后缀,.jsp表示是jsp页面
spring.mvc.view.suffix=.jsp

⑥ 在16-p2p-admin的核心配置文件application.properties中配置数据库连接信息

#配置数据库连接(p2padmin)
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/p2padmin?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456

⑦ 在16-p2p-admin下创建webapp/WEB-INF/jsp目录,并指定为WebResources Directory

⒉基于ACE搭建项目原型

① 从ACE原型中拷贝登录页面login.html,修改为index.jsp

添加jsp头信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

② 将ACE需要的js和css导入到我们的16-p2p-admin中 

③ 放到webapp的WEB-INF目录下,WEB-INF下的资源是受保护的,不能直接访问。在16-p2p-admin的com.sxbdqn.p2p.admin.controller包下创IndexController,并提供index方法,用于跳转到登录页面

@Controller
public class IndexController {
    @RequestMapping("/")
    public String index(){
        return "index";
    }
}

④ 参照已有p2p-admin进行修改,独立将ACE页面原型改造成我们项目的原型(培养这种能力)

⒊使用Mybatis反向工程生成内容

① 拷贝逆向工程文件到16-p2p-admin中

② 在pom.xml文件中添加反向工程插件

<!--mybatis代码自动生成插件-->
<plugin>
   <groupId>org.mybatis.generator</groupId>
   <artifactId>mybatis-generator-maven-plugin</artifactId>
   <version>1.3.7</version>
   <configuration>
      <!--配置文件的位置-->
      <configurationFile>GeneratorMapper.xml</configurationFile>
      <verbose>true</verbose>
      <overwrite>true</overwrite>
   </configuration>
</plugin>

③ 修改GeneratorMapper.xml生成用户UserInfo相关model和mapper

④ 修改GeneratorMapper.xml生成权限PermissionInfo相关model和mapper

⑤ 在生成的Mapper接口上添加@Mapper注解,被SpringBoot扫描到

⑥ 为了操作方便,在UserInfo中添加上两个属性,代表用户所拥有的菜单权限和按钮权限,并提供get|set方法

//当前用户拥有的所有菜单权限
private List<PermissionInfo> menuPermissionInfoList;
//当前用户拥有的所有按钮权限
private List<PermissionInfo> buttonPermissionInfoList;