- 博客(84)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java入门基础知识
概念关键字:具有特殊用途的单词。保留字:未使用的关键字(goto const)。直接量:不可用作标识符(ture false null)。一、JAVA运行机制Java程序的运行必须经过编写、编译、运行三个步骤。编写是指在Java开发环境中进行程序代码的输入,最终形成后缀名为.java的Java源文件。编译是指使用Java编译器(JDK中)对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件,这不像C语言那样最终生成可执行文件。运行是指使用Java解释器将字节码文件翻译成机
2020-07-24 19:55:06
9655
8
原创 Shiro(六)会话、记住我
会话、记住我1、sessionhttps://blog.csdn.net/qq_34021712/article/details/80418112Shiro 提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web 的透明支持、SSO 单点登录的支持等。(1)API• Subject.getSession():即可获取会话;其等价于Subject.getSession(true),即如果当
2020-08-07 00:19:50
191
原创 Shiro(五)权限注解
权限注解• @RequiresAuthentication:表示当前Subject已经通过login 进行了身份验证;即 Subject. isAuthenticated() 返回 true• @RequiresUser:表示当前 Subject 已经身份验证或者通过记住我登录的。• @RequiresGuest:表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。• @RequiresRoles(value={“admin”, “user”}, logical= Logical.
2020-08-07 00:19:08
226
原创 Shiro(四)授权/角色认证
授权/角色认证1、ShiroConfig@Configurationpublic class ShiroConfig { /** * 创建ShiroFilterFactoryBean */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("defaultWebSecurityManager") DefaultWebSecurityManager defaultW
2020-08-07 00:18:31
319
原创 Shiro(三) 登录认证
登录认证1、controller public String login(String name,String password, Model model) { //1、获取subject Subject subject = SecurityUtils.getSubject(); //2、封装用户数据 UsernamePasswordToken token = new UsernamePasswordToken(name,pass
2020-08-07 00:17:51
277
原创 Shiro(二)Shiro配置
Shiro配置1、pom.xml <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency>2、UserRealm继承Auth
2020-08-06 22:53:08
183
原创 Shiro(一)概述
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。相比较Spring Security,shiro有小巧、简单、易上手等的优点。一、核心组件1、Subject:用户主体(把操作交给SecurityManager),代表了当前用户的安全操作。2、SecurityManager:安全管理器(关联Realm),管理所有用户的安全操作。它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提
2020-08-06 22:52:27
196
原创 SpringBoot(十五)监管
监管通过引入spring-boot-starter-actuator,可以使用Spring Boot为我们提供的准生产环境下的应用监控和管理功能。我们可以通过HTTP,JMX,SSH协议来进行操作,自动得到审计、健康及指标信息等。引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</
2020-08-06 22:50:53
170
原创 SpringBoot(十四)热部署
热部署能在不重启应用的情况下,程序自动部署(热部署)。有模板引擎、Spring Loaded、JRebel、Spring Boot 、Devtools(推荐)四种方法。Devtools<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </de
2020-08-06 22:50:21
90
原创 SpringBoot(十三)分布式
分布式在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud。1、DubboZooKeeperZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。DubboDubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(
2020-08-06 22:49:21
158
原创 SpringBoot(十一)任务
任务(1)异步任务在主配置类加上@EnableAysnc,开启异步注释功能在异步方法加上@Aysnc(2)定时任务在主配置类加上@EnableScheduling,开启异步注释功能在异步方法加上@Scheduled /** * second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几). * 0 * * * * MON-FRI * 【0 0/5 14,18 * * ?】
2020-08-06 22:47:00
121
原创 SpringBoot(十)检索
检索开源的 ElasticSearch 是目前全文搜索引擎的首选。他可以快速的存储、搜索和分析海量数据。Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。...
2020-08-06 22:46:23
112
原创 SpringBoot(九)消息
消息可通过消息服务中间件来提升系统异步通信、扩展解耦能力,常用于异步处理、应用解耦、流量削峰等。a.点对点式:–消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移出队列–消息只有唯一的发送者和接受者,但并不是说只能有一个接收者b.发布订阅式:–发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么就会在消息到达时同时收到消息JMSAMQP定义Java api
2020-08-06 22:45:52
133
原创 SpringBoot(八)缓存
缓存1、JSR107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。•CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。•CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManage
2020-08-06 22:44:58
150
原创 SpringBoot(七)数据访问
数据访问1、JDBC创建idea项目后选择,自动添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId>
2020-08-04 23:32:53
185
原创 SpringBoot(六)Docker
DockerDocker是一个开源的应用容器引擎;是一个轻量级容器技术;docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);docker客户端(Client):连接docker主机进行操作;docker镜像(Images):软件打包好的镜像(各种软件做好配置发布出去);放在docker仓库中;docker仓库(Registry):用来保存各种打包好的软件镜像;docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或
2020-08-04 23:31:56
130
原创 SpringBoot(五)Web
Web1、静态资源映射(1)所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源pom.xml<!--引入jquery-webjar-->在访问的时候只需要写webjars下面资源的名称即可 <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId>
2020-08-04 23:30:41
166
原创 SpringBoot(四)创建Web项目
创建Web项目1、创建SpringBoot应用,选中我们需要的模块web等;idea下maven下载插件慢问题idea 红色文件处理方法https://blog.csdn.net/wh15842400641/article/details/85777357IDEA中各种文件夹标记的区别https://blog.csdn.net/xiaohei_neko/article/details/79353605自动添加注释的方法https://www.cnblogs.com/didiaoxiong/p/91
2020-08-04 23:27:11
247
原创 SpringBoot(三)日志
日志日志门面 (日志的抽象层)日志实现JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java)jboss-loggingLog4j JUL(java.util.logging) Log4j2 LogbackSpringBoot:底层是Spring框架,Spring框架默认是用JCL;‘ SpringBoot选用 SLF4j和logback;1、其他日志统一转换成SLF4j调用,不应该来直接调用日
2020-08-04 23:26:20
168
原创 SpringBoot(二)配置文件
配置文件YAML:以数据为中心,比json、xml等更适合做配置文件;作用:修改SpringBoot自动配置的默认值。文件名是固定的;application.propertie或application.yml1、yaml语法(1)基本语法k:(空格)v:表示一对键值对(空格必须有);以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的server: port: 8081 path: /hello属性和值也是大小写敏感;(2)值的写法字面量:普通的值(数
2020-08-04 23:24:06
111
原创 SpringBoot(一)概述
一、概述1、Spring Boot简介简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;2、微服务微服务:架构风格(服务微化),一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;每一个功能元素最终都是一个可独立替换和独立升级的软件单元。详细参照微服务文档单体应用:ALL IN ONE二、环境准备1、环境约束–jdk1.8:Spring Boot 推荐jdk1.7及以上–maven3.x:maven 3.3以上版本–
2020-08-04 23:20:29
183
原创 SpringMVC(十一)整合SSM
整合SSM配置了以后可以直接用,一劳永逸web.xml <!-- Web项目中,引入Spring!!! --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:文件名</param-value> <!-- 文件名!!! --> </context-param> <
2020-08-04 23:09:33
115
原创 SpringMVC(十)异常处理
异常处理如果一个方法用于处理异常,并且只处理当前类中的异常:@ExceptionHandler如果一个方法用于处理异常,并且处理所有类中的异常: 类前加@ControllerAdvice、 处理异常的方法前加@ExceptionHandler...
2020-08-04 22:55:51
95
原创 SpringMVC(九)拦截器
拦截器拦截器的原理和过滤器相同。SpringMVC:要想实现拦截器,必须实现一个接口HandlerInterceptora.编写拦截器implements HandlerInterceptorpublic class MyInterceptor implements HandlerInterceptor{ //请求前拦截 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse
2020-08-04 22:53:49
102
原创 SpringMVC(八)文件上传
文件上传具体步骤:(直接使用CommonsMultipartResolver实现上传)a.jar包commons-fileupload.jar、commons-io.jarb.配置CommonsMultipartResolver将其加入SpringIOC容器 <!-- 配置CommonsMultipartResolver,用于实现文件上传 将其加入SpringIOC容器. id固定 --> <bean id="multipartResolver" class="o
2020-08-02 20:23:55
102
原创 SpringMVC(七)ajax处理json数据
ajax处理json数据a.导入jar包,否则报错jackson-annotations-2.8.9.jarjackson-core-2.8.9.jarjackson-databind-2.8.9.jarb.handler //告诉SpringMVC,此时的返回不是一个View页面,而是一个ajax调用的返回值(Json数组) @ResponseBody @RequestMapping(value="testJson") public List<Student>
2020-08-02 20:23:07
115
原创 SpringMVC(六)数据格式化及校验
数据格式化、数据校验数据校验有JSR303 和Hibernate Validator(拓展)使用Hibernate Validator步骤:a.jar(注意各个jar之间可能存在版本不兼容)hibernate-validator-5.0.0.CR2.jar classmate-0.8.0.jar jboss-logging-3.1.1.GA.jarvalidation-api-1.1.0.CR1.jar hibernate-validator-annotation-processor-5.0
2020-08-02 20:22:17
113
原创 SpringMVC(五)类型转换器
类型转换器a.Spring自带一些 常见的类型转换器:public String testDelete(@PathVariable(“id”) String id) ,即可以接受int类型数据id 也可以接受String类型的idb.可以自定义类型转换器i.编写 自定义类型转器的类 (实现Converter接口)//泛型public class MyConverter implements Converter<String,Student>{ @Override publi
2020-08-02 20:21:35
185
原创 SpringMVC(四)静态资源
静态资源静态资源:html css js 图片 视频等动态资源:可以与用户交互、因为时间/地点的不同而结果不同的内容。在SpringMVC中,如果直接访问静态资源:404 。原因:之前将所有的请求 通过通配符“/” 拦截,进而交给 SPringMVC的入口DispatcherServlet去处理:但静态资源并没有映射对应的 @requestMapping注解。解决:如果是 需要mvc处理的,则交给@RequsetMapping(“img.png”)处理;如果不需要springmvc处理,则使用
2020-08-02 20:20:42
150
原创 SpringMVC(三)模型数据
处理模型数据如果跳转时需要带数据:V、M,则可以使用以下方式:ModelAndView、ModelMap 、Map、Model -数据放在了request作用域//@SessionAttributes(value="student4") //如果要在request中存放student4对象,则同时将该对象 放入session域中//@SessionAttributes(types= {Student.class,Address.class}) //如果要在request中存放Student
2020-08-02 20:20:07
146
原创 SpringMVC(二)请求过滤器
请求过滤器REST风格 :软件编程风格Springmvc:GET :查POST :增DELETE :删PUT :改普通浏览器 只支持get post方式 ;其他请求方式 如 delelte|put请求是通过 过滤器新加入的支持。springmvc实现 :put|post请求方式的步骤a.增加过滤器web.xml <!-- 增加HiddenHttpMethodFilte过滤器:目的是给普通浏览器 增加 put|delete请求方式 --> <filter>
2020-08-02 20:19:14
485
原创 SpringMVC(一) 环境搭建
环境搭建1、导入jar包spring-aop.jarspring-bean.jarspring-context.jarspring-core.jarspring-web.jarspring-webmvc.jarcommons-logging.jar报错NoClassDefFoundError:缺少jar2、springmvc配置文件 springmvc.xml选中常用的命名空间:beans aop context mvc普通的servlet流程:请求-url-pattern -交
2020-08-02 20:17:27
80
原创 数据库优化规范
1、不使用or 索引是一个树,使用or难以确定方向,故在 where 子句中使用 or 来连接条件时mysql将放弃使用索引而进行全表扫描。(1)结果可能重复使用unionsselect a.MemberID,a.MemberName,a.MemberPhone from Member a,Member_Tmep b where (a.MemberName = b.MemberName or a.MemberPhone = b.MemberPhone) and a.Mem
2020-08-02 20:14:43
166
原创 Spring(五)开发Web项目
开发Web项目1、配置监听器由于没有同一的入口,故当服务启动时,通过监听器将SpringIOC容器初始化一次( spring-web.jar已经提供)因此用spring开发web项目 至少需要7个jar: spring-java的6个jar + spring-web.jarweb.xml <!-- 配置容器的位置 1、告诉位置classpath 2、默认位置和名称WEB-INF classpath:applicationContext.xml --> &l
2020-08-02 09:14:15
170
原创 Spring(四)AOP
AOPAOP即为面向方面编程。一个普通的类 -> 有特定功能的类a.继承类 b.实现接口 c.注解 d.配置注解、schema:JoinPoint接口:Method method, Object[] args, Object target都要将类放入容器中:xml放或注解扫描首先导入jar包aopaliance.jaraspectjweaver.jar(一)基于接口1、前置(后置)(1)编写类及方法//实现MethodBeforeAdvice接口,普通类->前置通
2020-08-01 23:30:43
104
原创 Spring(三)使用注解实现事务
使用注解实现事务1、导入jar包spring-tx-4.3.9.RELEASEojdbc.jarcommons-dbcp.jar 连接池使用到数据源commons-pool.jar 连接池spring-jdbc-4.3.9.RELEASE.jaraopalliance.jar2、配置jdbc\mybatis\spring增加事务tx的命名空间 <!-- 配置数据库相关 --> <bean id="dataSource" class="org.apache.c
2020-08-01 23:09:05
160
原创 Spring(二)依赖注入
依赖注入(一)set注入通过类setXxx()赋值依赖注入底层是通过反射实现的。<bean id="teacher" class="org.lanqiao.entity.teacher" > <property name="name" value="java"></property></bean><bean id="course" class="org.lanqiao.entity.Course" > <!-
2020-08-01 23:08:28
97
原创 Spring(一)IOC容器
IOC容器1、springioc容器可以帮我们新建对象,并给对象赋值。org.lanqiao.entity.Studentpublic class Student { private int stuNo ; private String stuName ; private int stuAge ; public int getStuNo() { return stuNo; } public void setStuNo(int stuNo) { this.stuNo = stuN
2020-08-01 23:06:43
119
原创 Mybatis(六)逆向工程
逆向工程表、类、接口、mapper.xml四者密切相关,因此 当知道一个的时候 其他三个应该可以自动生成。一般使用表->其他三个。实现步骤:a. 导入mybatis-generator-core.jar、mybatis.jar、ojdbc.jarb. 创建逆向工程的配置文件generator.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//
2020-08-01 22:25:17
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人