前言:我在上一篇文章(PS:https://www.zifangsky.cn/770.html)中介绍了shiro框架的一些基本概念以及自定义Realm可以实现的自定义授权和认证的目的。在这一篇文章中我将介绍如何将Shiro与Spring、SpringMVC等框架非入侵式的整合到一起,从而接管Web项目的权限控制注:为了使文章篇幅不至于过长,我在下面将只会粘贴关键代码,如需完整源代码请自行下载:h
前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:《跟我学Shiro》系列教程。但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特性介绍地非常全面详细,但是整个教程的叙述方式还是有很大缺陷的。文章与文章之间并没有很好地串联起来,每篇文章介绍的东西都过于分散了,如果是对shiro完全不了解的新手来看的话完全是一场噩梦。就像一个网友评价的这
一 简介(1)过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等关于过滤器的一些用法可以参考我写过的这些文章:继承HttpServ
一 简介通常,在zabbix的web界面配置好之后为了能够及时收到zabbix的报警信息,我们需要配置“报警媒介”来通知我们。其中常用的两种报警媒介分别是:Email和SMS,即:发邮件通知和发短信通知关于邮件通知的配置很简单,只需要设置SMTP即可,因此这里不多说。但是zabbix默认的短信通知可就有点坑了,“SMS”这种报警媒介要想发送短信是需要硬件支持的。与此同时,现在开发中为了方便一般都是
一 简介以及原理介绍(1)Nginx概念介绍:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等(2
近年来人工智能与VR正在变得越来越火,特别是当alphago以绝对优势战胜围棋大师李世石之后,更是炒热了“机器学习”这个概念。国际人工智能专家、百度首席科学家吴恩达教授在今年四月份的“机器学习研究会”上这样说到:在中国,每天都有500人死于车祸。我们的无人驾驶技术早实现一天,就相当于多拯救了500人的生命,这将会是接下来的十年中,人工智能得到的最重要的应用之一。我想和在座的年轻人说几句话。我们处在
老罗的Android之旅岳雷的微软网络课堂0x33CCFFzifangsky的个人博客专注安管平台武当派张三疯我的米表
如题所示,从一些翻译至国外的书籍中可以看到,一些西方人喜欢使用没有XML文件的纯粹的JavaConfig配置。但是一方面在国内我们通常都习惯使用XML文件来配置SpringMVC、Ehcache、Shiro等组件的具体参数配置,另一方面我个人认为适当使用基于XML文件的配置是可以有效减少配置文件的代码量的。因此,如果想要在项目中加载一部分的JavaConfig应该如何做呢?(1)新建一个测试用例:
前言:在oracle中一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长、开始索引、是否循环等。最重要的是一张表只能设置一个字段使用自增,但有的时候我们需要两个或两个以上的字段实现自增(单表多字段自增),MySQL本身是实现不了的,但我们可以用创建一个序列表,使用函数来获取序列
如题所示,有时候我们的一些配置并不能在代码中“写死”,而是需要动态配置在配置文件中。这样可以使得以后需要修改该参数时只需要修改配置文件中的参数值即可,而不需要修改代码。具体配置如下:(1)在Spring的配置文件中添加以下配置用于引入参数所在的文件: <bean id="configProperties" class="org.springframework.beans.fac
一 简介Kaptcha是一个基于SimpleCaptcha的验证码开源项目,在我们的项目中使用Kaptcha组件可以快速生成比较安全的验证码。同时Kaptcha还提供了许多的参数可以让我们自定义生成的验证码样式jar包的官网下载地址:https://code.google.com/archive/p/kaptcha/downloads当然,为了照顾一些翻不了墙的同学,我也在51cto上上传了一份K
一 简介Lucene属于Apache开源项目的一部分,是一个开源的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。在Java开发环境里Lucene是一个成
一 简介如题所示,当我们需要在Java中解析Excel文件时,可以考虑使用JXL或POI的API来解析。二者的区别如下:jxl现在基本上没被维护了,最近一次更新时间还是几年前。相反,poi属于Apache开源项目的一部分,更新维护得比较好,最新稳定版 POI 3.15 是今年(2016年)9月更新的,同时poi可以支持更高版本的excel,而jxl只能支持excel2003以及之前的版本小文件使用
一 简介本篇文章主要介绍:在SpringMVC中如何使用Interceptor+Cookie实现在一定天数之内自动登录的功能。同时还介绍“如果校验失败则跳转到登录页面,在输入用户名、密码等完成登录之后又自动跳转到原页面”的功能实现本次测试环境是SSM框架,在正式介绍本篇文章之前,建议需要熟悉以下前置知识点:Mybatis中使用mybatis-generator结合Ant脚本快速自动生成Model、
一 简介如题所示,如果不在服务端对用户的输入信息进行过滤,然后该参数又直接在前台页面中展示,毫无疑问将会容易引发XSS攻击(跨站脚本攻击),比如说这样:form表单中有这么一个字段:<input type="text" id="author" name="author" placeholder="昵称" />然后潜在攻击者在该字段上填入
如题所示,最开始使用了默认配置:<amq:connectionFactory id="amqConnectionFactory" brokerURL="tcp://${activemq.ip}:61616" userName="${activemq.username}" password="${activemq.passwd}" />然后使用Act
如题所示,有时候我们需要在Web项目中配置简单的定时任务,而且因为任务并不复杂不想使用定时调度框架(PS:Quartz、ActiveMQ 、Kafka等),这时就可以考虑使用@Scheduled注解来定义简单的定时任务。其全部配置如下:(1)在Spring的配置文件中添加定时任务相关配置:xml配置的头文件中添加:xmlns:task="http://www.springframework.org
(1)引入log4j的jar包:官网下载地址:http://logging.apache.org/log4j/1.2/download.html(2)在web.xml中添加log4j配置: <context-param> <param-name>log4jConfigLocation</param-name> <param-value>cla
一 简介如题所示,有时候我们需要在一个请求到达Controller之前能够截获其请求,并且根据其具体情况对 HttpServletRequest 中的参数进行过滤或者修改。这时,有的同学可能会想:我们是否可以在一个Filter中将 HttpServletRequest 里的所有参数都取出来分别进行过滤然后再放回到该HttpServletRequest 中呢?很显然,在 Http
关于什么是CSRF我这里就不多说了,以前转载的一篇文章(PS:https://www.zifangsky.cn/358.html)已经说得很清楚了。这里只是简单介绍如何在SpringMVC中使用拦截器拦截CSRF攻击。具体代码如下:(1)登录页面:<%@page import="java.security.SecureRandom"%> <%@ page&nb
一 简介对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大,比如像下面这样:这时,无论是出现异常时查日志,还是使用“GoAccess”等工具对日志进行分析都将会变得非常麻烦。因此,每天定时对nginx日志进行切割压缩就非常有必要了二 实现我的实现思路是每天晚上接近12点时定时执行脚本。其脚本内容就是将当前的nginx日志先按照当天日期进行重命名
在下面的内容中,我将介绍基于SpringMVC的一些Cookie常用操作,包括:cookie的增、删、改、查一 Cookie的属性简介对于一个Cookie来说,一般有以下几个属性:Name:一个cookie的名字Value:一个cookie的值Domain:可以访问该cookie的域名。非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,
如题所示,在SpringMVC中可以使用forward和redirect关键字在Controller中对原请求进行转发或重定向到其他的Controller。比如可以这样使用:package cn.zifangsky.controller; import org.springframework.stereotype.Controller; import org.spr
一 简介在Java Web开发中,通常我们会开发很多的功能代码。在代码正式使用之前,为了确保代码能够正确实现我们预期的功能,最好是添加一些简单代码对代码逻辑进行测试。很显然,JUnit就是一个不错的单元测试工具,同时在Spring中我们也可以很方便地引入JUnit进行测试二 代码实例(1)引入必需的jar包:这里除了Spring以及其他模块所需要的jar包之外,还需要引入:spring-test-
如题所示,nginx在1.9版本之后可以充当端口转发的作用,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的U
如题所示,我在以前的一篇文章(PS:https://www.zifangsky.cn/611.html)中已经介绍过了,在nginx中常用的有以下四种负载均衡的算法,分别是:round-robin、ip-hash、least-connected和weighted。当然在实际生产中或许使用最多的就是ip-hash了,一般会这样使用:upstream h5 { &nbs
如题所示,这个模块可以打印输出一些东西,一般用于调试nginx的参数时使用。安装步骤如下:[root@tkde-iphone src]# wget https://github.com/openresty/echo-nginx-module/archive/v0.59.tar.gz [root@tkde-iphone src]# tar 
如题所示,可以使用zabbix实时监控数据库的数据变化情况,比如:最近1小时的订单数变化情况。这样我们就可以很方便地通过zabbix的web界面观察oracle等数据库中的一些数据变化情况,同时还可以添加监控在数据异常时通过邮箱或者短信报警具体实现步骤如下:(1)添加一个脚本用于执行SQL语句获取数据:[root@mpdb01 scripts]# vim /home/
一 nginx配置(1)在nginx配置文件中,添加status配置:location /nginx-status { stub_status on; &
如题所示,有时候需要设置Tomcat开机自启动,一般来说可以通过以下两种方法来实现:方法一:修改/etc/rc.d/rc.local文件我们可以通过在/etc/rc.d/rc.local这个文件中添加tomcat的启动脚本的路径达到开机自启动tomcat的目的。这种方式的特点是简单粗暴,特别是有多个tomcat时可以很快速地设置。当然,时间上不是很急的话不推荐用这种方法[root@localhos
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号