Java EE

Spring Boot 实现ErrorController接口处理404、500等错误页面

时间秒杀一切 提交于 2020-08-20 08:56:27
在项目中我们遇到404找不到的错误、或者500服务器错误都需要配置相应的页面给用户一个友好的提示,而在Spring Boot中我们需要如何设置。 我们需要实现ErrorController接口,重写handleError方法。 import org.springframework.boot.autoconfigure.web.ErrorController import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.RequestMapping import javax.servlet.http.HttpServletRequest @Controller class MainsiteErrorController implements ErrorController { @RequestMapping("/error") public String handleError(HttpServletRequest request){ //获取statusCode:401,404,500 Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"

集群部署的落地实现之spring shiro redis 架构 第四篇 shiro session ShiroSessionManager 优化 频繁访问redis

点点圈 提交于 2020-08-20 08:25:06
本篇文章主要解决的问题是shiro session使用redis缓存存储后,由于shiro session的设计特点,导致浏览器端请求会非常频繁访问redis,这样就造成资源的浪费,以及系统性能的下降。主要体现在来 自浏览器的一个请求需要访问这个dao的update方法二十多次。这个是shiro框架本身session设计的原因造成的,每次请求过来都需要更新session内部的时间戳。这个需要对浏览器的请求做针对性的优化,也就是把session存放在request请求里面,这样访问的时候先访问request,极大减少直接访问redis次数。 import java.io.Serializable; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import org.apache.shiro.session.Session; import org.apache.shiro.session.UnknownSessionException; import org.apache.shiro.session.mgt.SessionKey; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;

高可用

我与影子孤独终老i 提交于 2020-08-20 08:22:44
负载均衡与反向代理 关于负载均衡需要关注的点: 上游服务器配置;负载均衡算法;失败重试机制;服务器心跳检查 隔离 线程隔离、进程隔离、集群隔离、机房隔离、读写隔离、动静隔离、爬虫隔离、热点隔离、使用Hytrix实现隔离、基于Servlet 3实现请求隔离 限流 限流算法、应用级限流、分布式限流、接入层限流 降级 降级的最终目的是实现核心服务可用,即使是有损的。而且有些服务是无法降级的(如: 加入购物车、结算) 超时与重试 如果应用不设置超时,则可能会导致请求响应变慢,慢请求累积导致连锁反应,甚至造成应用雪崩。链路中的每个点都要考虑超时与重试机制,其中最重要的是网络连接/读/写的超时时间设置。 回滚 事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚 压测与预案 线上压测、线下压测、系统容灾与优化 来源: oschina 链接: https://my.oschina.net/u/2939155/blog/4436657

hbase学习

无人久伴 提交于 2020-08-20 08:12:43
简介 数据存储模型及关系型数据库的区别 一般都是牺牲一致性, 最终达到最终一致性 HBase 概念 区别 基础架构 HBASE 原理和操作 写流程 预写入会写入HLog 里面, 通过HLog 来保证数据不丢失 读流程 模块协作 shell 命令 学会用 help , 可以获取使用说明 比如: help 'status' # HBase shell中的帮助命令非常强大,使用help获得全部命令的列表,使用help ‘command_name’获得某一个命令的详细信息 help 'status' # 查询服务器状态 status # 查看所有表 list # 创建一个表 create 'FileTable','fileInfo','saveInfo' # 获得表的描述 describe 'FileTable' # 添加一个列族 alter 'FileTable', 'cf' # 删除一个列族 alter 'FileTable', {NAME => 'cf', METHOD => 'delete'} # 插入数据 put 'FileTable', 'rowkey1','fileInfo:name','file1.txt' put 'FileTable', 'rowkey1','fileInfo:type','txt' put 'FileTable', 'rowkey1',

java web 考勤管理系统

六眼飞鱼酱① 提交于 2020-08-20 07:50:53
原文&源码地址: https://mp.weixin.qq.com/s/xL0-a0ZFNnbGrgLgYnh2GQ jsp/servlet 考勤管理系统 一 、基础功能简介 登录、退出 管理员 部门管理 【分页查询、添加、删除、查看/修改】 员工管理【分页查询、添加员工、删除员工、查看/修改】 员工加班记录管理【分页查询、添加、删除】 员工请假记录管理 【分页查询、添加、删除】 查看员工考勤记录 【分页查询】 查看个人信息 个人密码修改 查看个人打卡记录【分页查询】 查看个人加班记录 【分页查询】 查看个人考勤记录 【分页查询】 查看个人请假记录 【分页查询】 个人信息管理 员工信息管理 部门信息管理 部署介绍: 1、将emp.sql 文件中的内容执行 2、修改 db.ini 数据库地址 3、修改common/util/DBUtil.java文件中的用户名密码 4、启动项目 5、浏览器输入 localhost:8080/emp 6、管理员:admin/admin 员工:10001/123456 二、部分项目截图 来源: oschina 链接: https://my.oschina.net/u/4298434/blog/4333411

处理“ java.lang.OutOfMemoryError:PermGen空间”错误

别来无恙 提交于 2020-08-20 07:32:23
问题: Recently I ran into this error in my web application: 最近,我在Web应用程序中遇到此错误: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError:PermGen空间 It's a typical Hibernate/JPA + IceFaces/JSF application running on Tomcat 6 and JDK 1.6. 这是在Tomcat 6和JDK 1.6上运行的典型Hibernate / JPA + IceFaces / JSF应用程序。 Apparently this can occur after redeploying an application a few times. 显然,这可能是在重新部署应用程序几次之后发生的。 What causes it and what can be done to avoid it? 是什么原因引起的,可以采取什么措施避免它发生? How do I fix the problem? 我该如何解决该问题? 解决方案: 参考一: https://stackoom.com/question/Mx9/处理-java-lang-OutOfMemoryError-PermGen空间

Intellj 和Eclipse搜索对比

≡放荡痞女 提交于 2020-08-20 05:32:07
Ctrl+N=ctrl+shift+R Ctrl+Shift+F=Ctrl+H 1. Ctrl+N 按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件 就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配 甚至不是自己写的类也能搜索 而且如果能匹配的自己写的类,优先匹配自己写的类 2. Ctrl+Shift+N 按文件名搜索文件 同搜索类类似,只不过可以匹配所有类型的文件了 3. Ctrl+H 查看类的继承关系 例如HashMap的父类是AbstractMap,子类则有一大堆 4. Ctrl+Alt+B 查看子类方法实现 Ctrl+B可以查看父类或父方法定义,但是不如ctrl+鼠标左键方便。但是在这里,Ctrl+B或ctrl+鼠标左键只能看见Map接口的抽象方法put的定义,不是我们想要的,这时候Ctrl+Alt+B就可以查看HashMap的put方法。 5. Alt+F7 查找类或方法在哪被使用 相当于eclipse的ctrl+shif+H,但是速度快得多。 6. Ctrl+F/Ctrl+Shift+F按照文本的内容查找 相当于eclipse的ctrl+H,速度优势更加明显。其中Ctrl+F是在本页查找,Ctrl+Shift+F是全局查找 7. Shift+Shift搜索任何東西 shift

Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新

≡放荡痞女 提交于 2020-08-20 05:07:04
简介 自从Spring横空出世之后,Spring就成了事实上的J2EE标准。Spring作为一个轻量级的J2EE应用框架,就是针对EJB的复杂特性而设计的,最后毫无疑问,Spring凭借它的简洁,可理解性和可用性赢得了最后的胜利。 Spring从最初的xml配置到后面的注解配置,一直都在不断的进步,但是可不可以,能不能够有一种方法可以不要配置就能运行Spring应用程序?于是Spring Boot应运而生。 更多内容请访问 www.flydean.com SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。 Spring Boot让你的企业级应用更加容易编写,更加容易运行。并且集成了很多常用的第三方lib库,免去了大家手动引用配置的麻烦。 使用最简单的配置运行最复杂的Spring应用程序,应该就是Spring Boot的终极目标。 同时Spring Boot尽可能的摆脱xml配置,能够提供包括独立运行,服务器内部运行等各种运行方式,方便我们的使用。 Spring Boot的基本操作 最新的Spring Boot版本是2.3.0.RELEASE,它需要至少JDK8的支持和Spring Framework 5.2.6.RELEASE。 在构建工具方面,需要Maven 3.3+ 和 Gradle 6.3+。 服务器方面

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

家住魔仙堡 提交于 2020-08-19 23:11:54
用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读。在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值。接着判断当前目录下是否存在bin\catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据笔者机器上Tomcat安装目录的层次结构,最后CATALINA_HOME的值被设为Tomcat的安装目录。如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令。通过这段分析,我们了解到两个信息,一是Tomcat启动时,需要查找CATALINA_HOME这个环境变量,如果在Tomcat的bin目录下调用startup.bat,Tomcat会自动并正确设置CATALINA_HOME;二是执行startup.bat命令,实际上执行的是“catalina.bat start”命令。 如果我们不是在 Tomcat 的 bin 目录作为当前目录时调用 startup.bat ,就会出现如下图 所示的错误信息(在 bin 目录的父目录下调用除外)。 图 在其他目录下启动 Tomcat 出错 如果要想在任意目录下都能启动 Tomcat ,就需要设置 CATALINA_HOME 环境变量

SSM框架整合

北城以北 提交于 2020-08-19 22:09:10
环境要求 环境: IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 要求: 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识; 项目结构图 java目录 pojo dao service controller resources目录 database.properties mybatis-config.xml spring-dao.xml spring-service.xml spring-mvc.xml applicationContext.xml web目录 index.jsp WEB-INF jsp目录 web.xml 数据库环境 创建一个存放书籍数据的数据库表 CREATE DATABASE `ssmbuild`; USE `ssmbuild`; DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ( `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id', `bookName` VARCHAR(100) NOT NULL COMMENT '书名', `bookCounts` INT(11) NOT NULL COMMENT '数量', `detail` VARCHAR(200) NOT NULL