Java Web
Java web体系庞杂,其中的技术栈数不胜数,如同打怪升级一般,千里之行,始于足下。
Jitwxs
关注 https://jitwxs.cn,看最新首发文章
展开
-
详解 Spring 定时任务的调度方式
在 Spring 中,我们可以使用 @Scheduled 方便的进行定时任务的执行,其支持以下三种调度方式:Cron、FixedDelay、FixedRate。下面分别介绍在标准模式下和异步模式下这三种调度方式的不同。一、标准模式1.1 示例准备创建一个 SpringBoot 初始程序,依赖包只需要引入 spring-boot-starter-web 即可:<dependencies...原创 2020-02-14 23:52:08 · 1622 阅读 · 0 评论 -
Freemarker介绍、使用并与Spring整合
一、什么是Freemarker1.1 介绍1.2 入门程序二、基本语法2.1 取Map中Key2.2 取POJO中属性2.3 取集合中元素2.4 取循环中下标2.5 判断2.6 日期处理2.7 NULL处理2.8 include三、与Spring整合一、什么是Freemarker1.1 介绍FreeMarker是一个用Java语...原创 2018-04-16 11:07:17 · 2030 阅读 · 0 评论 -
Zookeper集群搭建
在Dubbo + Zookeeper入门初探这篇文章中,我们已经搭建了Zookeeper单机版,本篇文章将介绍如何搭建Zookeeper集群。一、投票选举机制Zookeeper集群在工作时,只有一个节点为leader(主节点),其余节点均为follower(从节点)。这是通过内部的投票选举机制来实现的。我们知道,投票至少要过半数才行,因此集群中节点数最好为单数,因此我们搭建一个最简...原创 2018-04-12 17:08:45 · 1260 阅读 · 0 评论 -
Dubbo + Zookeeper入门初探
一、搭建java和tomcat环境二、搭建zookeeper三、搭建dubbo监控中心四、配置项目4.1 服务提供方代码4.2 服务使用方代码五、测试 2018年2月15日,阿里巴巴的dubbo进入了Apache孵化器,社区的加入,希望dubbo能变得更好…最近在学习一个分布式项目,使用到了dubbo,之前没有使用过,体验一下,分布式项目地址:点击...原创 2018-03-22 14:55:09 · 24964 阅读 · 5 评论 -
Shiro解决无法注入Service问题(包括Spring MVC和Spring Boot)
今天在使用Spring Boot集成Shiro时出现了无法注入Service的问题,解决后来记录一下。问题现象:在ShiroRealm中进行身份验证,要将登陆模块的Service注入进来进行验证,但是其值为null。public class ShiroRealm extends AuthorizingRealm { @Autowired ILoginService...原创 2018-03-20 16:38:18 · 5770 阅读 · 4 评论 -
Ajax实现文件上传(解决upload.parseRequest为空问题)
1.使用fileupload实现这种方式也是目前网上主要绝大部分Ajax文件上传的方法,前台代码如下:<!-- 定义上传按钮 --><input type="file" id="uploadFile"><button onclick="uploadFile()" >上传文件</button><scri原创 2018-03-15 21:52:02 · 5367 阅读 · 0 评论 -
JDK动态代理与Cglib动态代理
AOP(Aspect Oriented Programming),即面向切面编程,最主要的思想就是纵向重复,横向抽取。要想实现AOP,其底层实现是使用了动态代理技术,在Spring中,动态代理技术分为传统的JDK动态代理和Cglib动态代理。这两种代理机制区别是:JDK动态代理:针对实现了接口的类进行代理Cglib动态代理:针对没有实现接口的类进行代理,底层是字节码增强技术,生成当前类的子...原创 2018-03-09 10:03:11 · 596 阅读 · 0 评论 -
Json Web Token介绍与基本使用
一、Session与JWT1.1 传统Cookie+SessionCookie+Session的存在主要是为了解决HTTP这一无状态协议下服务器如何识别用户的问题。其原理就是在用户登录通过验证后,服务端将数据加密后保存到客户端浏览器的Cookie中,同时服务器保留相对应的Session。用户之后发起的请求都会携带Cookie信息,服务端需要根据Cookie寻回对应的Session,...原创 2018-05-03 02:25:28 · 8532 阅读 · 3 评论 -
WebSoket初探并于SpringBoot整合
一、WebSocket1.1 HTTP与WebSocketWebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。我们知道,HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。这种通信模型有一个弊...原创 2018-10-10 19:30:49 · 1026 阅读 · 0 评论 -
SprringBoot 配置国际化
一、LocaleResolver国际化的支持中一个重要的类是 LocaleResolver,它提供了四种默认实现:AcceptHeaderLocaleResolver没有任何具体实现,通过浏览器头部的语言信息来进行多语言选择。FixedLocaleResolver设置固定的语言信息,这样整个系统的语言是一成不变的,用处不大。CookieLocaleResolver将语言信息设置到 ...原创 2018-12-02 21:07:06 · 1640 阅读 · 1 评论 -
SpringBoot 配置 Logback
一、前言SLF4J(Simple Logging Facade For Java), 它是针对各类 Java 日志框架的同一抽象,即日志门面。Java 的日志框架众多,SLF4J定义了统一的日志抽象接口。默认情况下,SpringBoot 采用 Logback 来记录日志,并输出 INFO 级别日志到控制台。从下图可以看到,spring-boot-stater 的依赖中已经包含了 Logback...原创 2018-12-06 14:15:14 · 2830 阅读 · 0 评论 -
SpringBoot 整合 AOP
一、前言AOP(Aspect Oriented Programming, 面向切面编程),是 Spring 的核心思想之一,即纵向重复,横向抽取,它在 Spring 中应用广泛,例如 拦截器、日志、事务等等,在 SpringBoot 中使用 AOP 之前,我们先复习下 AOP 的理论知识。二、AOP理论2.1 术语解释为了方便解释,给出一个例子:public interface User...原创 2018-12-06 19:02:21 · 923 阅读 · 0 评论 -
SpringBoot 远程调试
在配合 QA 进行代码测试,以及处理线上 BUG 时,代码往往已经被部署于服务器端,因此服务器端程序支持远程调试功能就尤为重要。Java 原生支持调试功能,由于实际开发中使用 SpringBoot,因此本文探讨基于 jar 包的调试,远程调试的 IDE 为 IDEA。**注:**war 包调试、Eclipse 远程调试功能请另行了解,这不在本文的探讨范围内。一、调试命令最为常见的远程调试命...原创 2019-06-02 13:34:45 · 7437 阅读 · 0 评论 -
详解布隆过滤器
一、引言假设我们想要开发一个邮件系统,那么如何实现垃圾邮件的过滤呢。最简单的办法就是把确定为是垃圾邮件的地址都保存起来,存入黑名单中。当用户接收到黑名单地址的邮件时,直接将邮件归类到垃圾箱中。垃圾邮件的地址数量可能是巨大的,因此除了被存储在数据库中,程序实际使用的时候一定是需要借助缓存的。不论是使用本地缓存还是内存缓存,当数据量达到一定数量级时,都是不太合适的。咳咳,如果你的数量级连百...原创 2019-07-01 00:45:40 · 4164 阅读 · 0 评论 -
SpringBoot 条件注解
一、引言当我们使用 SpringBoot 进行开发时,会引入许多的 starter 包,引入后就会为我们做一些自动化配置,省去了大量配置的时间,快速开发。以 Redis 为例,当我们引入 Redis 的 starter 包时: <dependency> <groupId>org.springframework.boot</groupId> &l...原创 2019-09-24 20:54:42 · 2364 阅读 · 0 评论 -
Maven filter 实现 SpringBoot 多环境配置
一、前言当我们正式开始工作生涯后,最先发现商业项目和我们自己写的项目的不同之一就是:怎么这么多配置文件啊!!就按照最普遍的:开发、测试、预发(仿真)和线上来说,一个项目就至少有四套配置了,那么我们到底要如何配置多环境呢?二、Multiple Application目前使用比较多的是配置多个 application-{profile}.yml 文件的写法,一张图就能解释清楚了,如下图所示。...原创 2019-09-27 15:59:41 · 1351 阅读 · 1 评论 -
SpringBoot集成Shiro安全框架
使用技术:SpringBoot 2.0ShiroMyBatis-Plus 项目地址:https://github.com/jitwxs/blog_sample1.导入依赖&lt;!-- SpringBoot Web包 --&gt;&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/原创 2018-03-20 23:23:53 · 1125 阅读 · 0 评论 -
探讨 SpringMVC 能否注入 Request 和 Response
一、引言当我们第一次接触到 Java Web 开发,从最原生的 Servlet 方法开始,我们就知道在 doGet() 或者 doPost() 方法有两个形参,分别是 HttpServletRequest 和 HttpServletResponse,这两个参数代表了 web 容器为我们封装的 HTTP 请求和 HTTP 响应。当 Java Web 进化到 SpringMVC 中,一系列的杂活脏...原创 2019-05-07 21:57:26 · 3686 阅读 · 2 评论 -
Web三方登录实现(基于OAuth2.0,包含Github和QQ登录,附源码)
关于OAuth2.0的理论基础参考阮一峰老师的理解OAuth 2.0,其中关于授权码模式就是本篇文章的重点。本文着重于代码,关于理论不再赘述,有不懂的可以留言。关于不同公司的三方登录流程,只要遵循OAuth2.0规范,都大同小异。本文介绍GitHub和QQ两种,因为这两种无需审核。一、GitHub登录1.1 注册应用进入Github的Setting页面,点击Develope...原创 2018-05-22 22:46:37 · 5701 阅读 · 5 评论 -
Java Web中接入支付宝支付
注:因为没有企业账号,所以本篇文章为沙箱环境中,但是其逻辑和真实环境是一样的。接入支付宝的步骤大致如下:申请一个沙箱环境生成签名,并在沙箱环境中设置好签名下载官方的SDK结合API学习后开发申请沙箱环境的网址是:沙箱环境签名工具及它的使用方法的链接是:签名工具官方的API链接是:API官方的Demo是: Demo For Java我自己写好了一个Demo...原创 2018-06-05 00:29:09 · 14378 阅读 · 29 评论 -
Mybatis与Hibernate不同
Mybatis和Hibernate不同,它不完全是一个ORM框架,因为Mybatis需要程序员自己编写SQL语句。Mybatis可以通过XML或注解方式灵活配置要运行的SQL语句,并将JAVA对象和SQL语句映射生成最终执行的SQL,最后将SQL执行的结果再映射生成JAVA对象。Mybatis学习门槛低,简单易学,程序员直接编写原生态SQL,可严格控制SQL执行性能,灵活度高,非常适合对关系数...原创 2018-03-08 15:56:23 · 232 阅读 · 0 评论 -
传统JDBC与Mybatis介绍
1. 传统JDBC编程假设我们有一个数据库,名为mybatis,其中有一张为user表,其中id为这这张表的自增主键,如下: 创建一个Java项目,名为mybatis,导入mysql-connector-java-5.1.30-bin.jar包: 1.1 JDBC编程传统的JDBC编程的步骤如下:加载数据库驱动创建并获取数据库链接设置sql语句创建jdbc stat...原创 2018-03-08 14:19:52 · 973 阅读 · 0 评论 -
MyBatis和Spring进行整合
编写UserMapper.java:package cn.cstor.mapper;import cn.cstor.pojo.User;public interface UserMapper { public User selectUserById(Integer id);}编写UserMapper.xml:<?xml version="1.0" en...原创 2017-07-19 16:26:09 · 343 阅读 · 0 评论 -
Spring使用注解代替XML配置
1.导入命名空间XML Catalog中除了要导入spring-beans以外,还要导入spring-context。2.在applicationContext.xml文件中,添加<context:component-scan base-package="Object"></context:component-scan>其中,base-package中表...原创 2017-07-11 14:07:57 · 1193 阅读 · 0 评论 -
Aspectj的AOP操作
导包和约束基于配置文件的AOP操作//Book.javapackage cn.cstor;public class Book { public void show(){ System.out.println("come from Book.show()..."); //int i = 1/0; }}//E...原创 2017-07-18 14:24:50 · 211 阅读 · 0 评论 -
基于AOP/TX来实现事务操作
使用XML配置事务新建一个UserDao.java,如下:package com.cstor.dao;import org.springframework.jdbc.core.JdbcTemplate;public class AccountDao { private JdbcTemplate jdbcTemplate; static String sql;...原创 2017-07-19 11:27:39 · 505 阅读 · 0 评论 -
Spring属性注入
对象类型的注入值类型:value属性 对象类型:ref属性<bean name="user" class="Object.User" init-method="init" destroy-method="destroy"> <property name="name" value="wuxiangsheng">&a原创 2017-07-11 10:36:56 · 285 阅读 · 0 评论