摘要: 官网:https://shiro.apache.org/ 我们先来看一下shiro中关于Session和Session Manager的类图。 如上图所示,shiro自己定义了一个新的Session接口,用于统一操作接口,并通过SessionManager实现Session管理。 其中的3个实现类H 阅读全文
posted @ 2017-11-28 18:25 nuccch 阅读(13962) 评论(2) 推荐(0)
摘要: 问题描述 前后端分离的项目,前端使用Vue,后端使用Spring MVC。 显然,需要解决浏览器跨域访问数据限制的问题,在此使用CROS协议解决。 由于该项目我在中期加入的,主要负责集成shiro框架到项目中作为权限管理组件,之前别的同事已经写好了部分接口,我负责写一部分新的接口。 之前同事解决跨域 阅读全文
posted @ 2017-11-24 17:31 nuccch 阅读(15881) 评论(1) 推荐(3)
摘要: 问题描述 前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat。 使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服务器返回的Cookie:JSESSIONID。 导致每一个Ajax请求在服务端看来都是一个新的请求, 阅读全文
posted @ 2017-11-21 20:31 nuccch 阅读(41255) 评论(4) 推荐(5)
摘要: ##问题描述 @Select("select * from account order by #{orderBy} #{orderRule} limit #{start},#{offset}") public List<Account> getAccountList(@Param("orderBy" 阅读全文
posted @ 2017-11-20 19:57 nuccch 阅读(11092) 评论(2) 推荐(1)
摘要: 写在前面 我们知道,shiro框架在Java Web应用中使用时,本质上是通过filter方式集成的。 也就是说,它是遵循过滤器链规则的:filter的执行顺序与在web.xml中定义的顺序一致,如下所示: 显然,securityFilter定义在shiroFilter之前,那么securityFi 阅读全文
posted @ 2017-11-16 13:15 nuccch 阅读(15333) 评论(2) 推荐(1)
摘要: 问题描述 应用在客户产线环境部署时,要求只需要输入域名就可以直接访问到应用,而不用输入完整的应用访问路径。 项目架构 前端使用nginx作为反向代理和负载均衡,后端部署多个tomcat实例。 Web应用直接部署到catalina_home/webapps目录下,访问时必须带上应用上下文路径:http 阅读全文
posted @ 2017-10-27 23:48 nuccch 阅读(9654) 评论(0) 推荐(1)
摘要: 这里说的项目管理指技术上的项目管理,而不是行政上的项目管理。 1. 软件版本管理 使用语义化的版本控制,严格遵循语义化版本控制的规范,通过软件版本号来传递意义。 特别是对外提供的公共API项目,必须使用语义化的版本控制,否则,随着API功能的演化和发展可能会面临灾难性的痛苦。 关于语义化版本控制规范 阅读全文
posted @ 2017-10-25 16:14 nuccch 阅读(328) 评论(0) 推荐(0)
摘要: 任何一个maven项目都会继承一个默认的父pom配置:Super POM,详见:https://maven.apache.org/guides/introduction/introduction-to-the-pom.html 。 在pom.xml中可以直接使用一些变量值,如: ${project. 阅读全文
posted @ 2017-10-24 13:52 nuccch 阅读(359) 评论(0) 推荐(0)
摘要: 起因 项目中同时依赖了Spring和MyBatis,并使用mybatis spring集成MyBatis和Spring。 使用maven打包为可执行jar文件运行,打包插件为:maven shade plugin。 但是在执行 命令时报错: 原因分析 项目同时依赖了mybatis spring.ja 阅读全文
posted @ 2017-10-24 13:51 nuccch 阅读(765) 评论(0) 推荐(0)
摘要: 一. 自带核心插件 https://maven.apache.org/plugins/ 二. 第三方插件 1.maven-assembly-plugin http://maven.apache.org/plugins/maven-assembly-plugin/ (1)打包独立运行的jar文件 <p 阅读全文
posted @ 2017-10-24 13:49 nuccch 阅读(564) 评论(0) 推荐(0)
摘要: Node.js是什么 Node.js是一个可以允许我们在服务器端运行JavaScript代码的程序。 这是什么意思呢?通常,我们写的JavaScript代码都是在浏览器中运行的。 实际上,浏览器就是一个JavaScript运行时环境,用于解释执行js代码。 更进一步地说,虽然浏览器提供了JavaSc 阅读全文
posted @ 2017-10-20 23:44 nuccch 阅读(393) 评论(0) 推荐(0)
摘要: 目录 "写在前面" "详细配置" "1.dataSource(数据源)" "2.sqlSessionFactory(Session工厂)" "3.Mapper(映射器)" "4.TransactionManager(事务管理器)" 写在前面 在Java世界,AOP编程是非常流行的模式,大大降低了功能 阅读全文
posted @ 2017-10-19 17:38 nuccch 阅读(641) 评论(0) 推荐(0)
摘要: 写在前面 mybatis是一个持久层框架,可以支持SQL定制和存储过程,实现数据库记录到Java POJO对象之间的映射。 所以说,mybatis是一个ORM框架。 这个ORM可以通过2种方式实现:xml配置,java注解。 使用mybatis可以大大提高数据库应用程序的编写效率,避免了几乎所有的J 阅读全文
posted @ 2017-10-18 23:22 nuccch 阅读(262) 评论(0) 推荐(0)
摘要: 在java平台使用的mysql jdbc驱动为:mysql connector java。 在项目中添加如下依赖: 在6.0.2版本之前 在6.0.2版本之后 mysql connector java参数变化 1.从6.0.2版本开始,驱动类不再是 ,需要配置为: 。 否则,在启动时会提示警告日志: 阅读全文
posted @ 2017-10-18 16:28 nuccch 阅读(2176) 评论(0) 推荐(1)
摘要: 背景介绍 项目前期使用http,后期为了安全方面的考虑,启用了https。 项目架构:前端使用nginx作为多个tomcat实例的反向代理和负载均衡。 实际上只需要在nginx上启用https即可,使客户端与nginx之间使用https方式通信,而nginx与tomcat之间依然以http方式通信。 阅读全文
posted @ 2017-10-17 14:46 nuccch 阅读(40736) 评论(1) 推荐(3)
摘要: 在进行前端页面开发时,为了调试方便,需要在本地启动一个静态文件服务器,而不需要与后端api服务一起部署。 常用静态文件服务器 01. anywhere 使用简单,需要nodejs环境。 安装:npm install anywhere -g 使用:anywhere --help 在任何需要访问静态文件 阅读全文
posted @ 2017-10-12 15:24 nuccch 阅读(1306) 评论(0) 推荐(0)
摘要: 前言 当应用配置文件发生变化时,无需重启tomcat,可以使tomcat重新加载应用。 场景 假设存在一个J2EE应用A,对应war文件名称为A.war,部署在tomcat的webapps目录下,即:CATALINA_HOME/webapps/A.war。 tomcat启动之后会将A.war解压,并 阅读全文
posted @ 2017-09-26 19:05 nuccch 阅读(2395) 评论(0) 推荐(0)
摘要: 在谈到tomcat优化时,必然要说到apr库,这个库是C语言实现的,tomcat通过JNI方式使用该库可以大大提高性能。 tomcat在使用apr时需要安装apr,apr util和tomcat native。 1. 下载 apr和apr util需要单独下载:http://apr.apache.o 阅读全文
posted @ 2017-09-26 19:01 nuccch 阅读(1808) 评论(0) 推荐(0)
摘要: 起因 线上项目突然遭到大量的非法参数攻击,由于历史问题,之前的代码从未对请求参数进行校验。 导致大量请求落到了数据访问层,给应用服务器和数据库都带来了很大压力。 针对这个问题,只能对请求真正到Controller方法调用之前直接将非法参数请求拒绝掉,所以在Filter中对参数进行统一校验,非法参数直 阅读全文
posted @ 2017-09-08 20:06 nuccch 阅读(546) 评论(0) 推荐(0)
摘要: 起因 线上项目突然遭到大量的非法参数攻击,由于历史问题,之前的代码从未对请求参数进行校验。 导致大量请求落到了数据访问层,给应用服务器和数据库都带来了很大压力。 针对这个问题,只能对请求真正到Controller方法调用之前直接将非法参数请求拒绝掉,所以在Filter中对参数进行统一校验,非法参数直 阅读全文
posted @ 2017-09-08 20:06 nuccch 阅读(6976) 评论(0) 推荐(0)