IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

springboot宿舍管理系统(含设计报告) 下载地址:https://download.youkuaiyun.com/download/p785785/32461256 项目介绍: springboot宿舍管理系统(含设计报告) 系统说明: 项目引见 宿舍管理系统,分为系统管理员与学生两种角色; 系统管理员主要功用包括: 系统管理:用户列表、角色与权限; 学生管理:学生列表、教学班级; 宿舍管理:寝室列表、寝室类型; 入住管理:住宿申请、宿舍分配详情; 学生主要功用包括: 申请入住、个人信息管理; 环境需求 1.运转环境:最好是java jdk 1.8,我们在这 阅读详情

需求:

① 除了登录页面,在地址栏直接访问其他URL,均跳转至登录页面

② 登录涉及帐号和密码,帐号错误提示帐号错误,密码错误提示密码错误

③ 登录成功跳转至首页,首页显示登录者帐号信息,并有注销帐号功能,点击注销退出系统

分析:

典型的运用认证权限的需求,考虑使用Shiro。了解一下Shiro框架,Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。

IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

 

关键词汇:

① Subject:安全术语,本意是“当前的操作用户”。

在安全领域,术语“Subject”可以是人,也可以是第三方进程、后台帐户(Daemon Account)、定时作业(Corn Job)或其他类似事物。

它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。

在程序中能轻易获得Subject,允许在任何需要的地方进行安全操作。

每个Subject对象都必须与一个SecurityManager进行绑定,访问Subject对象其实都是在与SecurityManager里的特定Subject进行交互。

② SecurityManager:安全管理器。

Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

③ Realm:域,Shiro从Realm获取安全数据(如用户、角色、权限),

即SecurityManager要验证用户身份,需要从Realm获取相应用户进行比较以确定用户身份是否合法;

也就是说需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,安全数据源。

④ authentication:认证(发音:[ɔ:ˌθentɪ'keɪʃn])

⑤ authorization:授权(发音:[ˌɔ:θərəˈzeɪʃn])

0、数据库建表init.sql

1 DROP TABLE sys_user;
 2 
 3 CREATE TABLE sys_user
 4 (
 5 userid INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
 6 username VARCHAR(10) NOT NULL COMMENT '用户名称',
 7 `password` VARCHAR(10) NOT NULL COMMENT '用户密码'
 8 );
 9 
10 INSERT INTO sys_user VALUES(NULL, 'admin', '123'), (NULL, 'test', '456');
11 
12 SELECT * FROM sys_user;

1、编写项目对象模型文件pom.xml

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5 <modelVersion>4.0.0</modelVersion>
 6 
 7 <groupId>cn.temptation</groupId>
 8 <artifactId>studyShiro</artifactId>
 9 <version>1.0-SNAPSHOT</version>
10 
11 <parent>
12 <groupId>org.springframework.boot</groupId>
13 <artifactId>spring-boot-starter-parent</artifactId>
14 <version>2.0.4.RELEASE</version>
15 </parent>
16 
17 <dependencies>
18 <!-- web -->
19 <dependency>
20 <groupId>org.springframework.boot</groupId>
21 <artifactId>spring-boot-starter-web</artifactId>
22 </dependency>
23 <!-- thymeleaf -->
24 <dependency>
25 <groupId>org.springframework.boot</groupId>
26 <artifactId>spring-boot-starter-thymeleaf</artifactId>
27 </dependency>
28 <!-- spring data jpa -->
29 <dependency>
30 <groupId>org.springframework.boot</groupId>
31 <artifactId>spring-boot-starter-data-jpa</artifactId>
32 </dependency>
33 <!-- mariadb -->
34 <dependency>
35 <groupId>org.mariadb.jdbc</groupId>
36 <artifactId>mariadb-java-client</artifactId>
37 <version>2.2.5</version>
38 </dependency>
39 <!-- shiro -->
40 <dependency>
41 <groupId>org.apache.shiro</groupId>
42 <artifactId>shiro-spring</artifactId>
43 <version>1.4.0</version>
44 </dependency>
45 <!-- 热启动 -->
46 <dependency>
47 <groupId>org.springframework.boot</groupId>
48 <artifactId>spring-boot-devtools</artifactId>
49 <optional>true</optional>
50 </dependency>
51 </dependencies>
52 </project>

2、编写项目配置文件application.properties

1 # 数据库访问配置
 2 # 对应MariaDB驱动
 3 spring.datasource.driverClassName=org.mariadb.jdbc.Driver
 4 # 数据源配置
 5 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
 6 spring.datasource.username=root
 7 spring.datasource.password=sa
 8 # 配置Springboot默认支持的Hikari数据库连接池
 9 spring.datasource.type=com.zaxxer.hikari.HikariDataSource
10 spring.datasource.hikari.minimum-idle=5
11 spring.datasource.hikari.maximum-pool-size=15
12 spring.datasource.hikari.auto-commit=true
13 spring.datasource.hikari.idle-timeout=30000
14 spring.datasource.hikari.pool-name=DatebookHikariCP
15 spring.datasource.hikari.max-lifetime=1800000
16 spring.datasource.hikari.connection-timeout=30000
17 spring.datasource.hikari.connection-test-query=SELECT 1
18 # Spring Data JPA配置
19 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
20 spring.jpa.properties.hibernate.hbm2ddl.auto=update
21 spring.jpa.show-sql=true
22 spring.jpa.properties.hibernate.format_sql=true
23 # 格式化输出的json字符串
24 spring.jackson.serialization.indent_output=true
25 # 设置控制台彩色打印
26 spring.output.ansi.enabled=ALWAYS

3、编写项目启动类Application.java

1 package cn.temptation;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 @SpringBootApplication
 7 public class Application {
 8 public static void main(String[] args) {
 9 // SpringBoot项目启动
10 SpringApplication.run(Application.class, args);
11 }
12 }

4、编写登录页面login.html 和 首页页面index.html

登录页面:login.html

1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>系统登录</title>
 6 </head>
 7 <body>
 8 <div th:text="${msg}" style="color: red"></div>
 9 <form action="doLogin" method="post">
10 帐号:<input type="text" id="txtUsername" name="username" /><br/>
11 密码:<input type="password" id="txtPassword" name="password" /><br/><br/>
12 <input type="submit" value="提交" /> <input type="reset" value="重置" />
13 </form>
14 </body>
15 </html>

首页页面:index.html

 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>系统首页</title>
 6 </head>
 7 <body>
 8 <div th:text="${'欢迎您,' + currentuser}" style="color: red;float: left;"></div>
 9 <div style="color: red;float: right;"><a href="doLogout">注销</a></div>
10 </body>
11 </html>

5、编写Shiro框架用配置类ShiroConfig.java 和 自定义Realm类MyRealm.java

配置类ShiroConfig.java

 1 package cn.temptation.shiro;
 2 
 3 import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
 4 import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
 5 import org.springframework.beans.factory.annotation.Qualifier;
 6 import org.springframework.context.annotation.Bean;
 7 import org.springframework.context.annotation.Configuration;
 8 
 9 import java.util.LinkedHashMap;
10 import java.util.Map;
11 
12 /**
13 * Shiro配置类
14 */
15 @Configuration
16 public class ShiroConfig {
17 // 1、创建ShiroFilterFactoryBean
18 @Bean
19 public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager) {
20 ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
21 // 设置安全管理器
22 shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);
23 
24 // 设置登录跳转页面
25 shiroFilterFactoryBean.setLoginUrl("/login");
26 
27 /**
28 * Shiro内置过滤器:实现权限相关的拦截
29 * 常用过滤器:
30 * anon(认证用):无需认证(登录)即可访问
31 * authc(认证用):必须认证才可访问
32 * user(少用):使用rememberMe功能可以访问
33 * perms(授权用):必须得到资源权限才可访问
34 * role(授权用):必须得到角色权限才可访问
35 */
36 Map<String, String> filterMap = new LinkedHashMap<>();
37 
38 // 放行登录请求
39 filterMap.put("/doLogin", "anon");
40 
41 // 配置退出过滤器,退出代码Shiro已经实现
42 filterMap.put("/logout", "logout");
43 
44 // 过滤链定义,从上向下顺序执行,一般将/*放在最下边
45 filterMap.put("/*", "authc");
46 
47 shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
48 
49 return shiroFilterFactoryBean;
50 }
51 
52 // 2、创建DefaultWebSecurityManager
53 @Bean(name = "securityManager")
54 public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("myRealm") MyRealm myRealm) {
55 DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
56 
57 // 关联Realm
58 defaultWebSecurityManager.setRealm(myRealm);
59 
60 return defaultWebSecurityManager;
61 }
62 
63 // 3、创建Realm
64 @Bean(name = "myRealm")
65 public MyRealm getRealm() {
66 return new MyRealm();
67 }
68 }

自定义Realm类MyRealm.java

1 package cn.temptation.shiro;
 2 
 3 import cn.temptation.dao.UserDao;
 4 import cn.temptation.domain.User;
 5 import org.apache.shiro.authc.*;
 6 import org.apache.shiro.authz.AuthorizationInfo;
 7 import org.apache.shiro.realm.AuthorizingRealm;
 8 import org.apache.shiro.subject.PrincipalCollection;
 9 import org.springframework.beans.factory.annotation.Autowired;
10 
11 /**
12 * 自定义Realm
13 */
14 public class MyRealm extends AuthorizingRealm {
15 @Autowired
16 private UserDao userDao;
17 
18 // 授权处理
19 @Override
20 protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
21 return null;
22 }
23 
24 // 认证处理
25 @Override
26 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
27 // 编写Shiro判断逻辑,判断账号和密码
28 // 1、判断账号
29 UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
30 
31 User user = userDao.findByUsername(token.getUsername());
32 if (user == null) {
33 // 账号错误,Shiro底层会抛出UnknownAccountException异常
34 return null;
35 }
36 
37 // 2、判断密码
38 return new SimpleAuthenticationInfo("", user.getPassword(), "");
39 }
40 }

6、编写实体类User.java

1 package cn.temptation.domain;
 2 
 3 import javax.persistence.*;
 4 
 5 @Entity
 6 @Table(name = "sys_user")
 7 public class User {
 8 @Id
 9 @GeneratedValue(strategy = GenerationType.IDENTITY)
10 @Column(name = "userid")
11 private Integer userid;
12 
13 @Column(name = "username")
14 private String username;
15 
16 @Column(name = "password")
17 private String password;
18 
19 public Integer getUserid() {
20 return userid;
21 }
22 
23 public void setUserid(Integer userid) {
24 this.userid = userid;
25 }
26 
27 public String getUsername() {
28 return username;
29 }
30 
31 public void setUsername(String username) {
32 this.username = username;
33 }
34 
35 public String getPassword() {
36 return password;
37 }
38 
39 public void setPassword(String password) {
40 this.password = password;
41 }
42 }

7、编写控制器类UserController.java

1 package cn.temptation.web;
 2 
 3 import org.apache.shiro.SecurityUtils;
 4 import org.apache.shiro.authc.IncorrectCredentialsException;
 5 import org.apache.shiro.authc.UnknownAccountException;
 6 import org.apache.shiro.authc.UsernamePasswordToken;
 7 import org.apache.shiro.subject.Subject;
 8 import org.springframework.stereotype.Controller;
 9 import org.springframework.ui.Model;
10 import org.springframework.web.bind.annotation.RequestMapping;
11 
12 @Controller
13 public class UserController {
14 // 访问登录页
15 @RequestMapping("/login")
16 public String login() {
17 return "login";
18 }
19 
20 // 访问首页
21 @RequestMapping("/index")
22 public String index() {
23 return "index";
24 }
25 
26 // 登录处理
27 @RequestMapping("/doLogin")
28 public String doLogin(String username, String password, Model model) {
29 // 使用Shiro编写认证处理
30 // 1、获取Subject
31 Subject subject = SecurityUtils.getSubject();
32 
33 // 2、封装用户数据
34 UsernamePasswordToken token = new UsernamePasswordToken(username, password);
35 
36 // 3、执行登录
37 try {
38 // 登录成功
39 subject.login(token);
40 
41 // 返回当前用户的帐号
42 model.addAttribute("currentuser", token.getUsername());
43 
44 return "index";
45 } catch (UnknownAccountException exception) {
46 // 返回错误信息
47 model.addAttribute("msg", "账号错误!");
48 
49 return "login";
50 } catch (IncorrectCredentialsException exception) {
51 // 返回错误信息
52 model.addAttribute("msg", "密码错误!");
53 
54 return "login";
55 }
56 }
57 
58 // 注销处理
59 @RequestMapping("/doLogout")
60 public String doLogout() {
61 // 1、获取Subject
62 Subject subject = SecurityUtils.getSubject();
63 
64 // 2、执行注销
65 try {
66 subject.logout();
67 } catch (Exception ex) {
68 ex.printStackTrace();
69 } finally {
70 return "login";
71 }
72 }
73 }

8、编写数据访问接口UserDao.java

1 package cn.temptation.dao;
 2 
 3 import cn.temptation.domain.User;
 4 import org.springframework.data.jpa.repository.JpaRepository;
 5 import org.springframework.data.jpa.repository.Query;
 6 import org.springframework.data.repository.query.Param;
 7 
 8 public interface UserDao extends JpaRepository<User, Integer> {
 9 // 根据账号查询用户
10 @Query(value = "SELECT * FROM sys_user WHERE username=:username", nativeQuery = true)
11 User findByUsername(@Param("username") String username);
12 }

9、项目结构

IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

 

10、运行效果

IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

 

IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

 

IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

 

IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf认证权限

欢迎工作一到八年的Java工程师朋友们加入Java高级交流群:854630135

本群提供免费的学习指导 架构资料 以及免费的解答

不懂得问题都可以在本群提出来 之后还会有直播平台和讲师直接交流噢

哦对了,喜欢就别忘了关注一下哦~

 

springboot+springdatajpa+thymeleaf+shiro 的管理平台框架 立即下载

相关推荐

springboot+jpa+security用户权限

springboot+jpa+mysql+security的用户权限管理代码 。

【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限

开发环境搭建参见《【原】无脑操作:IDEA + maven + SpringBoot + JPA + Thymeleaf实现CRUD及分页》 需求: ① 除了登录页面,在地址栏直接访问其他URL,均跳转至登录页面 ② 登录涉及帐号和密码,帐号错误提示帐号错误,密码错误提示密码错误 ③ 登录成功跳转至首页,首页显示登录者帐号信息,并有注销帐号功能,点击注销退出系统 ------------...

weixin_33958366的博客 225

SpringBoot+Spring data JPA+FreeMarker+shiro+log4jdbc

一个用SpringBoot+Spring data JPA+FreeMarker+shiro+log4jdbc完成的demo。

Springboot JPA+Security 完成简单的登录验证和权限分配

前言 本文参考 汪云飞《Java EE 颠覆者...》。 Security专门针对Spring项目安全的框架,提供安全方面的诸多功能,使用@EnableWebSecurity注解并使配置类继承WebSecurityConfigurerAdapter并使用@ConfigurationProperties,把同类的配置信息自动封装成实体类。...

weixin_33774308的博客 832

Spring+Spring Boot+JPA+Thymeleaf+Bootstrap+Mysql实现的一个单表crud

该项目是一个基于Spring+Spring Boot+JPA+Thymeleaf+Bootstrap+Mysql实现的单表增删改查。

SpringBoot+Shiro+JPA+LayUI的后台管理系统

本系统是一个用SpringBoot做后台开发框架,Shiro做权限管理框架,Spring Data Jpa 做持久层框架,Layui、Layui mini做为前端框架的前后端分离的项目。 即拿即用,上手即会,可以方便你快速的开发一套属于自己的系统。

【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础授权权限

上一篇《【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限》介绍了实现Shiro的基础认证。本篇谈谈实现Shiro的基础授权。 需求: ① 某系统有公共模块、领导模块、管理员模块三个业务模块,均需要登录系统后才可以访问。 ②admin、leader、employee三个人职位分别是管理员、领导、员工,均可登...

weixin_34033624的博客 178

springboot+jpa+shiro基础权限管理系统Demo

springboot+jap+shiro 实现了用户、 角色、模块三个表的权限管理。增加对druid的数据监控,swagger ui的嵌入, 第一次优先把resources下的test数据库导入, 不然不能登录看到效果。 直接运行Application类即可启动。

基于javaweb+mysql的springboot宿舍管理系统(java+springboot+thymeleaf+html+layui+mysql)

3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;系统管理员主要功能包括: 系统管理:用户列表、角色与权限;基于javaweb+mysql的springboot宿舍管理系统(java+springboot+thymeleaf+html+layui+mysql)基于javaweb+mysql的SpringBoot宿舍管理系统(java+springboot+thymeleaf+html+layui+mysql)

m0_71285322的博客 118

Spring Boot+Maven+Spring Data JPA+apache Shiro+Easyui实现通用用户权限管理系统

Spring Boot+Maven+Spring Data JPA+apache Shiro+Easyui实现通用用户权限管理系统

OpenFoam实用技巧——starccm网格高效转换openfoam格式全解析

本文详细解析了如何利用OpenFOAM官方工具`ccm26toFoam`,将STAR-CCM+生成的高质量网格高效、稳定地转换为OpenFOAM格式。内容涵盖从STAR-CCM+正确导出网格、执行转换命令、解读转换日志,到转换后关键的边界条件修复与网格质量检查等全流程,旨在帮助用户规避常见错误,实现无缝工作流衔接。

weixin_28309571的博客 460

SpringBoot电商项目实战:从环境搭建到MVC架构深度解析

在Java企业级开发领域,SpringBoot以其简化配置和快速构建的特性,成为开发Web应用的主流框架。其核心原理在于通过自动配置和起步依赖,大幅降低了Spring应用的入门门槛。掌握SpringBoot整合MyBatis、Thymeleaf等技术的实战能力,对于构建可维护的电商系统具有重要价值。这类项目通常应用于毕业设计、课程实践等场景,帮助开发者理解从数据层到视图层的完整MVC协作流程。本文聚焦于一个典型的SpringBoot电商项目,详细拆解其环境配置、数据库连接以及核心业务代码的实现,特别是针对*

weixin_33978044的博客 434

西电微机系统课程设计——步进电机开环控制系统设计

西电微机系统课程设计——步进电机开环控制系统设计 一、课程设计目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。 三、系统功能与设计要求 基本功能要求 手

OutlierLi's Blog 7531

【SpringBoot框架篇】1.搭建第一个springboot项目

文章目录简介特点搭建第一个springboot项目创建项目添加web接口配置启动端口启动程序idea中启动编译成jar包后启动 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新的应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(快速应用程序开发)成为领导者。 特点 .创建独立的Spring应用程序 .嵌入的Tomcat,无需部署WAR文件 .简

皓亮君的博客 3631

王珊数据库系统概论第5版视频教材

目录 隐藏 说明:本课程共包括1种电子书、84个高清视频(共68课时)、1种纸质书(赠品)。 网授课程 王珊《数据库系统概论》(第5版)网授精讲班【共68课时】 序号 名称 课时 1 第1章 绪 论(1) 00:32:25 2 第1章 绪 论(2) 00:17:03 3 第1章 绪 论(3) 00:50:19 4 第1章 绪 论(4) 00:20:37 5 第1章 绪 论(5) 00:24:47 6 第2章 关系数据库(1) 00:47:23 7 第2章 关系数据库(2) 00:14:48 8 第2章 关系

mrtaoy96的博客 1152

VMware 15 虚拟机安装Ubuntu 18.04

这几年在自动化、计算机之间游来游去,最近又要做机器学习相关的课题,14年做的虚拟机实在不堪重用了,OK,我们重新开始。 VMware的安装就不再赘述了,目前最新版本是15.0.2,官方下载地址: https://my.vmware.com/en/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/15_0...

略懂 2万+

基于javaweb+SpringBoot的宿舍管理系统(java+SpringBoot+Thymeleaf+html+layui+mysql)

项目介绍 宿舍管理系统,分为系统管理员与学生两种角色; 系统管理员主要功能包括: 系统管理:用户列表、角色与权限; 学生管理:学生列表、教学班级; 宿舍管理:寝室列表、寝室类型; 入住管理:住宿申请、宿舍分配详情; 学生主要功能包括: 申请入住、个人信息管理; 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本

m0_71047593的博客 487

SAP 的预算控制并非单一功能,而是根据管控的精细度和业务场景,主要通过三个模块实现:CO(成本控制)、FM(基金管理) 和 PS(项目系统)

SAP系统提供三种预算控制模型:基于CO模块的成本中心/内部订单预算管控,适用于日常费用管理;基于FM模块的基金中心/承诺项目预算控制,满足公共部门严格资金管理需求;基于PS模块的WBS元素预算控制,专为项目型企业设计。各模型通过特定配置实现预算编制、审批、控制和分析功能,并配有核心事务代码(T-Code)支持全流程操作。企业可根据业务场景选择适合的预算控制方式,实现从预算编制到执行监控的闭环管理。

金牌架构师 257

Spring Boot 搭建应用实现登陆实例,页面使用bootstrap

Spring boot 搭建web应用集成了thymeleaf模板实现登陆 下面是pom.xml的配置 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch...

weixin_43242688的博客 303

【头歌】链栈的基本操作及应用

另外,在算法的开始和结束时,栈都应该是空的,所以匹配到最后还要判断栈是否为空,若空,则说明匹配成功,返回1。其中表达式只包含三种括号,花括号{}、中括号[]、圆括号(),即它仅由 (、)、[、]、{、}六个字符组成。预期输出: 栈中元素依次为:12 47 5 8 6 92 45 63 75 38 4 29 弹出的栈顶元素 e=29 栈空否:0(1:空 0:否) 栈顶元素 e=4 栈的长度为11 清空栈后,栈空否:1(1:空 0:否)// 若栈不空,则用e返回S的栈顶元素,并返回OK;

qq_39977056的博客 4384

Vue - 详细实现低代码平台,支持拖曳式可视化生成应用软件功能,用户通过拖拽元素、搭积木的方式创建应用(适合迭代的基础架构、低代码平台)

Vue低代码平台-拖曳式拖拉拽可视化生成应用软件,拖拽式低代码数据可视化开发平台,vue实现拖拽,拖拽式Vue组件代码生成平台,基于vue的可视化拖拽代码生成工具,Vue实现可拖拽组件的方法,一个低代码平台的前端部分,靠拖拉拽生成页面。Vue技术栈从零实现低代码可视化搭建平台示例,低代码轮子,通过拖拽就可生成Vue代码的平台来了,vue低代码平台开发相关比低代码更强大的零代码开发平台,这款低代码SAAS数据可视化工具,拖拽生成大屏。vue实现拖拽效果,Vue自由拖拽缩放组件,自定义组件(文本、图片

🏆 前端领域优质创作者 1万+

SpringBoot非遗手工艺购物系统:从零部署到二次开发的完整指南

在Java Web开发领域,SpringBoot框架因其简化配置和快速构建的特性,已成为企业级应用开发的主流选择。其核心原理在于通过约定大于配置和自动装配,大幅降低了传统Spring应用的复杂性,为开发者提供了高效、可扩展的解决方案。这一技术价值体现在能够快速搭建稳定、可维护的后端服务,尤其适用于电商、管理系统等业务场景。以非遗手工艺购物系统为例,它正是SpringBoot技术栈的典型实践,整合了MyBatis进行数据持久化,并实现了用户管理、商品展示、购物车和订单处理等核心电商功能。对于计算机专业学生和J

weixin_34354945的博客 624

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot体育场地预约系统毕业设计:从环境搭建到功能扩展的完整实践指南

信息管理系统(MIS)是整合数据、流程与业务规则,实现组织信息化管理的软件系统。其核心原理在于通过分层架构(如MVC)解耦数据、逻辑与展示层,利用关系型数据库进行持久化存储。这类系统的技术价值在于将分散的业务流程标准化、自动化,从而提升效率、减少错误并支持决策。在应用场景上,MIS广泛应用于企业资源规划、客户关系管理以及各类在线服务平台。本文聚焦于一个典型的MIS实践案例——基于SpringBoot的体育场地预约系统,深入剖析其从环境准备、核心模块(如实体层、数据访问层、业务逻辑层和控制层)到二次开发的完整

weixin_34293059的博客 411

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Spring工作原理
下一篇: SpringBoot使用redis缓存List
javaQQ群 866865133
博客等级 码龄8年 59粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值