Tomcat

了不得,我可能发现了Jar 包冲突的秘密

余生长醉 提交于 2020-08-04 22:17:24
一、前言 这篇是类加载器相关的第三篇: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 昨天下午刚写了篇 类加载器相关的,晚上想着验证个问题:Tomcat 跑了多个spring web项目,那么org.springframework.web.servlet.DispatcherServlet 这种类是怎么个情况呢?多个不同类加载器加载的,同时存在的同名类? 我是打算利用阿里开源的arthas工具来查看的,但是这个工具只支持 linux。说来也不怕让人笑话,公司的后端服务,开发环境、测试环境用的windows的,以后交付给客户不知道是用啥。先不说这个吧,反正我们打的war包,在windows服务器的tomcat 上没什么问题。 但是当我把同样的war包丢到 linux 上时,发现报错了,没启动成功。。。。hahhah。。。尴尬。。。 错误如下: Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes() [Ljavax/persistence/Index; at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions

学生成绩管理系统/学生信息管理系统

白昼怎懂夜的黑 提交于 2020-08-04 19:27:09
学校课程设计作业,完成一个简单的学生信息管理系统,考虑到系统实用性,把它做成了一个简单的能够使用的学生成绩管理系统,包含了学生信息管理,就当做练手吧。 发一个博客,做展示用!! 第一次做的一个比较完整的系统,难免会有一些bug(^_^) 下载链接: 学生成绩管理系统 一、 开发背景 软件名称:学生成绩管理系统(SSMS) 使用对象:小学、初中、高中 二、 需求分析 1. 系统分析 该学生信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考

【详解】Spring Security 之 SecurityContext

…衆ロ難τιáo~ 提交于 2020-08-04 18:28:11
前言   本文主要整理一下SecurityContext的存储方式。 SecurityContext接口 顾名思义,安全上下文。即存储认证授权的相关信息,实际上就是存储" 当前用户 "账号信息和相关权限。这个接口只有两个方法,Authentication对象的getter、setter。 package org.springframework.security.core.context; import java.io.Serializable; import org.springframework.security.core.Authentication; public interface SecurityContext extends Serializable { Authentication getAuthentication(); void setAuthentication(Authentication var1); } Authentication接口又是干嘛的? 注意:SecurityContext存储的Authentication对象是经过认证的,所以它会带有权限,它的getAuthorities()方法会返回相关权限。 package org.springframework.security.core; import java.io.Serializable;

Spring Boot系列之配置读取

与世无争的帅哥 提交于 2020-08-04 18:03:14
长按二维码,关注我们 子曰:温故而知新,可以为师矣。周日还在学习的就真的是爱学习的人,周日大放送,这周的精彩文章推荐阅读: 《分享的不仅仅是情怀》 《反射面试题-请了解下》 《Spring Boot Async异步执行任务》 《面试题-实现多线程的方式》 《Spring Boot系列之环境搭建》 Spring Boot里面所有的配置信息都放在application.properties中,如果我们想读取配置中的值要怎么做呢? 还需要自己写个读取属性文件的工具类吗?完全不要,我们可以通过各种方式来读取里面的值。 当然写工具类也是一种方式,只是太麻烦了,既然Spring Boot中有封装好的实现,为什么不用。 Environment方式读取 框架中有一个org.springframework.core.env.Environment类,可以读取application.properties中配置的值。 用法如下,我们可以看到直接将Environment注入进来,然后就可以使用getProperty方法来获取配置的值了,参数是配置的名称。 @RestController public class ConfigController { @Autowired private Environment env; /** * 通过配置的key获取value<br> * {key:.+

了不得,我可能发现了Jar 包冲突的秘密

好久不见. 提交于 2020-08-04 17:27:50
一、前言 这篇是类加载器相关的第三篇: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 昨天下午刚写了篇 类加载器相关的,晚上想着验证个问题:Tomcat 跑了多个spring web项目,那么org.springframework.web.servlet.DispatcherServlet 这种类是怎么个情况呢?多个不同类加载器加载的,同时存在的同名类? 我是打算利用阿里开源的arthas工具来查看的,但是这个工具只支持 linux。说来也不怕让人笑话,公司的后端服务,开发环境、测试环境用的windows的,以后交付给客户不知道是用啥。先不说这个吧,反正我们打的war包,在windows服务器的tomcat 上没什么问题。 但是当我把同样的war包丢到 linux 上时,发现报错了,没启动成功。。。。hahhah。。。尴尬。。。 错误如下: Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes() [Ljavax/persistence/Index; at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions

Tomcat 又爆出高危漏洞!Tomcat 8.5 ~ 10 中招…

我的未来我决定 提交于 2020-08-04 17:12:10
开源界最近很热闹啊,各个主流软件或框架漏洞频发,比如像 Struts2、FastJSON、Dubbo、Redis、Tomcat 等都存在各种各样的漏洞。 不要使用含有漏洞的组件每次也都被评为 OWASP 10 大安全漏洞之一。 光这半年以来,所知道的就有 Dubbo、FastJSON、Tomcat: 前段时间这个 Tomcat AJP 协议漏洞大开,2020/06/25 这天 Tomcat 又爆出 HTTP/2 拒绝服务漏洞: http://mail-archives.apache.org/mod_mbox/www-announce/202006.mbox/%3cfd56bc1d-1219-605b-99c7-946bf7bd8ad4@apache.org%3e 这是一封来自 Apache 官方安全团队的邮件,已通过 Apache Tomcat 用户邮件公开报告了此问题,邮件中介绍了 HTTP/2 拒绝服务漏洞的各方面细节及解决方案。 漏洞名称: Apache Tomcat HTTP/2 拒绝服务漏洞 漏洞编号: CVE-2020-11996 严重程度: 重要 软件提供商: Apache 软件基金会 受影响的版本: Apache Tomcat 10.0.0-M1 ~ 10.0.0-M5 Apache Tomcat 9.0.0.M1 ~ 9.0.35 Apache Tomcat 8

SpringBoot原理深入及源码剖析

て烟熏妆下的殇ゞ 提交于 2020-08-04 17:02:50
```xml org.springframework.boot spring-boot-dependencies 2.2.2.RELEASE ../../spring-boot-dependencies ``` 继续查看spring-boot-dependencies底层源文件,核心代码具体如下: ```xml 5.15.11 ... 8.2.0 8.0.18 2.3.1 2.2.2.RELEASE 2.0.4.RELEASE 1.2.4.RELEASE 5.2.1.RELEASE Corn-RELEASE 3.0.8.RELEASE 3.28.0 ${jakarta-mail.version} 9.0.29 3.0.11.RELEASE 2.0.1 ... ``` 从spring-boot-dependencies底层源文件可以看出,该文件通过标签对一些常用技术框架的依赖文件进行了统一版本号管理,例如activemq、spring、tomcat等,都有与Spring Boot 2.2.2版本相匹配的版本,这也是pom.xml引入依赖文件不需要标注依赖文件版本号的原因。 需要说明的是,如果pom.xml引入的依赖文件不是 spring-boot-starter-parent管理的,那么在pom.xml引入依赖文件时,需要使用标签指定依赖文件的版本号。 这些内容,是从拉勾教育的

Springboot + Vue + shiro 实现前后端分离、权限控制

六眼飞鱼酱① 提交于 2020-08-04 17:02:35
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 本文总结自实习中对项目的重构。原先项目采用 Springboot+freemarker 模版,开发过程中觉得前端逻辑写的实在恶心,后端 Controller 层还必须返回 Freemarker 模版的 ModelAndView,逐渐有了前后端分离的想法,由于之前,没有接触过,主要参考的还是网上的一些博客教程等,初步完成了前后端分离,在此记录以备查阅。 一、前后端分离思想 前端从后端剥离,形成一个前端工程,前端只利用 Json 来和后端进行交互,后端不返回页面,只返回 Json 数据。前后端之间完全通过 public API 约定。 二、后端 Springboot Springboot 就不再赘述了,Controller 层返回 Json 数据。 @RequestMapping(value = "/add", method = RequestMethod.POST) @ResponseBody public JSONResult addClient(@RequestBody String param) { JSONObject jsonObject = JSON.parseObject(param); String task = jsonObject.getString(

分布式系统入门及创建

徘徊边缘 提交于 2020-08-04 15:13:00
分布式系统 分布式思想 将项目按照指定的规则进行拆分,从而降低系统架构的耦合性,提高开发效率。分布式系统对外是统一的,对内是独立的。 传统项目问题 如果没有分布式系统,按照传统项目将全部的功能模块写到一起,如果将来有一个模块出现了问题,则可能直接导致整个服务不能使用.系统架构的耦合性太高。 根据业务模块进行拆分 根据项目中不同的功能模块进行拆分,拆分后部署到不同的tomcat服务器中。如果将来有一个模块出现问题,则不会影响全部服务正常运行。 如上图拆分后,权限管理模块出现问题后并不会影响服务的正常运行。 根据层级进行拆分 由于某些业务特别的复杂,如果由一个人单独完成可能有困难,则可以按照层级拆分,之后交给多个人统一的维护和管理提高开发的速度.同时降低系统架构的耦合性。 如上图可将角色管理系统拆分为web层,vo层,Controller层,Service层。 分布式环境项目构建 分布式项目jar包以及工具类API管理 创建一个父级工程来统一管理jar包以及工具类API。准备一个工具API项目,将所有工具类API写入其中,并且打成jar包,如果需要使用java类,直接依赖工具API即可。所有的业务系统都继承父级项目,则可以引用父级的jar包。 创建父级项目 需要注意父级项目打包类型为pom。 创建工具API 工具类API与业务系统模块创建方式都为Maven Module