
框架
block2333
这个作者很懒,什么都没留下…
展开
-
Shiro(六)会话、记住我
会话、记住我1、sessionhttps://blog.youkuaiyun.com/qq_34021712/article/details/80418112Shiro 提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web 的透明支持、SSO 单点登录的支持等。(1)API• Subject.getSession():即可获取会话;其等价于Subject.getSession(true),即如果当原创 2020-08-07 00:19:50 · 233 阅读 · 0 评论 -
Shiro(五)权限注解
权限注解• @RequiresAuthentication:表示当前Subject已经通过login 进行了身份验证;即 Subject. isAuthenticated() 返回 true• @RequiresUser:表示当前 Subject 已经身份验证或者通过记住我登录的。• @RequiresGuest:表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。• @RequiresRoles(value={“admin”, “user”}, logical= Logical.原创 2020-08-07 00:19:08 · 266 阅读 · 0 评论 -
Shiro(四)授权/角色认证
授权/角色认证1、ShiroConfig@Configurationpublic class ShiroConfig { /** * 创建ShiroFilterFactoryBean */ @Bean public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("defaultWebSecurityManager") DefaultWebSecurityManager defaultW原创 2020-08-07 00:18:31 · 359 阅读 · 0 评论 -
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 · 311 阅读 · 0 评论 -
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 · 204 阅读 · 0 评论 -
Shiro(一)概述
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。相比较Spring Security,shiro有小巧、简单、易上手等的优点。一、核心组件1、Subject:用户主体(把操作交给SecurityManager),代表了当前用户的安全操作。2、SecurityManager:安全管理器(关联Realm),管理所有用户的安全操作。它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提原创 2020-08-06 22:52:27 · 221 阅读 · 0 评论 -
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 · 205 阅读 · 0 评论 -
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 · 118 阅读 · 0 评论 -
SpringBoot(十三)分布式
分布式在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud。1、DubboZooKeeperZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。DubboDubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(原创 2020-08-06 22:49:21 · 192 阅读 · 0 评论 -
SpringBoot(十二)安全
安全有两种框架:shiro和spring security推荐使用shiro,具体可看我的博客原创 2020-08-06 22:48:37 · 160 阅读 · 0 评论 -
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 · 154 阅读 · 0 评论 -
SpringBoot(十)检索
检索开源的 ElasticSearch 是目前全文搜索引擎的首选。他可以快速的存储、搜索和分析海量数据。Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。...原创 2020-08-06 22:46:23 · 150 阅读 · 0 评论 -
SpringBoot(九)消息
消息可通过消息服务中间件来提升系统异步通信、扩展解耦能力,常用于异步处理、应用解耦、流量削峰等。a.点对点式:–消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移出队列–消息只有唯一的发送者和接受者,但并不是说只能有一个接收者b.发布订阅式:–发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么就会在消息到达时同时收到消息JMSAMQP定义Java api原创 2020-08-06 22:45:52 · 178 阅读 · 0 评论 -
SpringBoot(八)缓存
缓存1、JSR107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。•CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。•CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManage原创 2020-08-06 22:44:58 · 177 阅读 · 0 评论 -
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 · 229 阅读 · 0 评论 -
SpringBoot(六)Docker
DockerDocker是一个开源的应用容器引擎;是一个轻量级容器技术;docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);docker客户端(Client):连接docker主机进行操作;docker镜像(Images):软件打包好的镜像(各种软件做好配置发布出去);放在docker仓库中;docker仓库(Registry):用来保存各种打包好的软件镜像;docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或原创 2020-08-04 23:31:56 · 165 阅读 · 0 评论 -
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 · 195 阅读 · 0 评论 -
SpringBoot(四)创建Web项目
创建Web项目1、创建SpringBoot应用,选中我们需要的模块web等;idea下maven下载插件慢问题idea 红色文件处理方法https://blog.youkuaiyun.com/wh15842400641/article/details/85777357IDEA中各种文件夹标记的区别https://blog.youkuaiyun.com/xiaohei_neko/article/details/79353605自动添加注释的方法https://www.cnblogs.com/didiaoxiong/p/91原创 2020-08-04 23:27:11 · 296 阅读 · 0 评论 -
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 · 213 阅读 · 0 评论 -
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 · 139 阅读 · 0 评论 -
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 · 216 阅读 · 0 评论 -
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 · 132 阅读 · 0 评论 -
SpringMVC(十)异常处理
异常处理如果一个方法用于处理异常,并且只处理当前类中的异常:@ExceptionHandler如果一个方法用于处理异常,并且处理所有类中的异常: 类前加@ControllerAdvice、 处理异常的方法前加@ExceptionHandler...原创 2020-08-04 22:55:51 · 122 阅读 · 0 评论 -
SpringMVC(九)拦截器
拦截器拦截器的原理和过滤器相同。SpringMVC:要想实现拦截器,必须实现一个接口HandlerInterceptora.编写拦截器implements HandlerInterceptorpublic class MyInterceptor implements HandlerInterceptor{ //请求前拦截 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse原创 2020-08-04 22:53:49 · 122 阅读 · 0 评论 -
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 · 130 阅读 · 0 评论 -
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 · 140 阅读 · 0 评论 -
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 · 148 阅读 · 0 评论 -
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 · 234 阅读 · 0 评论 -
SpringMVC(四)静态资源
静态资源静态资源:html css js 图片 视频等动态资源:可以与用户交互、因为时间/地点的不同而结果不同的内容。在SpringMVC中,如果直接访问静态资源:404 。原因:之前将所有的请求 通过通配符“/” 拦截,进而交给 SPringMVC的入口DispatcherServlet去处理:但静态资源并没有映射对应的 @requestMapping注解。解决:如果是 需要mvc处理的,则交给@RequsetMapping(“img.png”)处理;如果不需要springmvc处理,则使用原创 2020-08-02 20:20:42 · 187 阅读 · 0 评论 -
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 · 183 阅读 · 0 评论 -
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 · 522 阅读 · 0 评论 -
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 · 107 阅读 · 0 评论 -
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 · 202 阅读 · 0 评论 -
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 · 142 阅读 · 0 评论 -
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 · 190 阅读 · 0 评论 -
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 · 123 阅读 · 0 评论 -
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 · 142 阅读 · 0 评论 -
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 · 112 阅读 · 0 评论 -
Mybatis(五)缓存
一、一级缓存mybatis默认使用一级缓存,如果用同样的SqlSession对象查询相同的数据,则只会在第一次 查询时 向数据库发送SQL语句,并将查询的结果 放入到SQLSESSION中(作为缓存在);后续再次查询该同样的对象时,则直接从缓存中查询该对象即可(即省略了数据库的访问)二、二级缓存1、只要产生的xxxMapper对象 来自于同一个namespace,则 这些对象共享二级缓存。原因:namespace的值 就是 接口的全类名(包名.类名), 通过接口可以产生代理对象(studentM原创 2020-08-01 22:24:15 · 145 阅读 · 0 评论 -
Mybatis(四)延迟加载
延迟加载(懒加载)如果不采用延迟加载 (立即加载),查询时会将 一 和多 都查询,如班级、班级中的所有学生。如果想要 暂时只查询班级, 而班级中的所有学生先不查询 而是在需要的时候再去查询 -->延迟加载conf.xml<!--mybatis中使用延迟加载,需要先配置:--><settings> <!-- 开启延迟加载 --> <setting name="lazyLoadingEnabled" value="true"/>s &原创 2020-08-01 22:22:28 · 75 阅读 · 0 评论