2.2 springmvc+mybatis
双斜杠少年
希望经记录下来自己学习过程,并和大家一块分享
展开
-
spring security(八) session 并发,剔除前一个用户
解决 session 并发问题 ,同时只有一个用户在线。 有一个用户在线后其他的设备登录此用户将剔除前一个用户。强制前一个用户下线。本文代码,是基于 springboot+security restful权限控制官方推荐(五)的代码1.修改security配置添加 SessionRegistry,自己管理SessionRegistry。@Configuration@EnableWebSecuri原创 2017-08-23 17:28:38 · 13860 阅读 · 7 评论 -
后端(springboot)解决跨域问题
首先我门要知道什么是跨域:跨域是指 不同域名之间相互访问。跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。也就是如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容 如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。什么是同一个域?同一协议,同一ip,同一端口,三同中有一不同就产生了跨域。前端解决跨域:前边也原创 2017-05-08 22:14:14 · 58924 阅读 · 13 评论 -
springboot 使用校验框架validation校验
b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的。 Spring3支持JSR-303验证框架,JSR-303 是Java EE 6 中的一项子规范,叫做BeanValidation,官方参考实现是hibernate Validator(与Hibernate ORM 没有关系),JSR 303 用于对J原创 2017-05-14 18:53:20 · 78896 阅读 · 18 评论 -
springmvc 上传图片文件和创建图片虚拟路径读取图片
1 上传图片1.1 需求在修改商品页面,添加上传商品图片功能。1.2 springmvc中对多部件类型解析在 页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。 在springmvc.xml中配置multipart类型解析器。(如果表单的类型是mult原创 2015-08-02 13:01:44 · 15407 阅读 · 5 评论 -
网站的海量数据和高并发的解决方案(二)
高并发的解决方案除了数据量大,另外一个常见的问题就是并发量高,很多架构就是针对这个问题设计出来的。1.应用和静态资源分离刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件等,这些文件因为没有状态所以分离比较简单,直接存放到响应的服务器就可以了,一般会使用专门的域名去访问。 通过不同的域名可原创 2017-05-08 21:27:50 · 6034 阅读 · 0 评论 -
网站的海量数据和高并发的解决方案(一)
现在无论是企业的业务系统还是互联网上的网站程序都面临着数据量大的问题,这个问题如果解决不好将严重的影响系统的运行速度,下面就针对这个问题的各种解决解决方案进行介绍。1. 缓存和页面静态化1.1 缓存数据量大这个问题最直接的解决方案就是使用缓存,缓存就是将数据库中获取的结果暂时保存起来在,在下次使用的时候无需从数据库中提取,这样可以大大降低数据库压力。常用的缓存框架有Ehcache、Memcache原创 2017-03-27 00:03:47 · 4258 阅读 · 0 评论 -
springboot-springSecurity 之 http Basic认证 (四)
引言:HTTP基础认证(BA)是一种简单的认证机制。当一个web客户端需要保护任何web资源的时候,服务器会发送一个带有401状态码(未授权)的HTTP回应,还有类似WWW-Authenticate: Basic realm=”realm here” 的 WWW-Authenticate HTTP头。而浏览器这时候就会弹出一个登录对话框,提示输入用户名和密码。1. 修改配置在spring boot项原创 2017-02-24 11:09:03 · 29158 阅读 · 5 评论 -
Spring Security 4 使用@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
本文探讨Spring Security 4 基于@PreAuthorize, @PostAuthorize, @Secured和 Spring EL表达式的方法级的安全。想要开启Spring方法级安全,你需要在已经添加了@Configuration注解的类上再添加@EnableGlobalMethodSecurity注解:package com.websystique.springsecurity.转载 2017-02-19 18:17:32 · 12302 阅读 · 0 评论 -
mybatis 实现关联查询的一对多和多对多查询
1.1 一对多查询案例:查询所有订单信息及订单下的订单明细信息。订单信息与订单明细为一对多关系。使用resultMap实现如下:1.1.1 Sql语句:三张表的关联查询 标红的分别为查询字段,查询的表,关联查询的条件SELECT orders.*, user.username, user.address, orderdetail.idorderde原创 2015-07-24 13:38:41 · 19417 阅读 · 2 评论 -
Ant 风格路径表达式
ANT通配符有三种:通配符 说明例子:URL路径 说明属性: 最长匹配原则(has more characters) 说明,URL请求/app/dir/file.jsp,现在存在两个路径匹配模式/*/.jsp和/app/dir/.jsp,那么会根据模式/app/dir/.jsp来匹配原文链接:http://blog.csdn.net/songdexv/article/details/7219转载 2017-02-17 17:25:34 · 2401 阅读 · 0 评论 -
springmvc + mybatis+mysql 分页
dao层:Select * from 表名 limit 12,4limit 后边的第一个参数是指从第几条开始也就是pageStart; 第二个参数是limit,也就是从pageStart位置往后读多少条数据。 limit 12,4 就是从第12条数据开始往后读4条数据,读取结果是 13,14,15,16 四条数据。 所以当前端传递参数时传递的参数 page =4 limit =10时 在原创 2016-08-04 17:07:12 · 7524 阅读 · 2 评论 -
springboot+security 动态权限修改session立即失效(六)
这个是springboot结合security 系列的第六篇博客了,不知不觉已经写了6篇了。中间有写的很不好,不尽人意。文章的排列也是我遇见问题,解决问题的过程,希望大家见谅。这不,最近出现了这个问题, 一个管理员A登录后,在进行操作,此时管理员B 修改了管理员A 的权限,将管理员A 修改为普通用户,但此时管理员A,需要重新登录权限修改才会起效,但是管理员A此时没有退出登录,还可以进行操作,这就是很原创 2017-05-08 23:01:52 · 13125 阅读 · 5 评论 -
spring 之 自己动手实现IOC
扯淡学 java 的人应该都知道spring,学spring的人呢都应该知道 IOC和 AOP 对吧。今天就简单的说一下spring 的IOC。IoC是Spring框架的核心内容,IoC(Inversion of Control)控制反转,是一种设计思想,DI(依赖注入)是实现IoC的一种方法。 其实spring就是一个容器,一个bean容器。主要是完成了完成对象的创建和依赖的管理注入。什么是控制原创 2017-07-11 22:49:38 · 2370 阅读 · 1 评论 -
spring的multipartResolver和java后端获取的MultipartHttpServletRequest方法对比 (附:遇到的坑)
原文地址: http://www.cnblogs.com/yskcoder/p/4718198.html这两天在用spring进行上传上遇到问题,今天进行了问题的排查,这个过程也增加了我看spring源码的兴趣!还是很有收获的!首先首先先给A组提供了上传接口,并没有在spring的配置文件进行multipartResolver的配置,后台Controller的java的获取为:MultipartR转载 2017-05-25 11:53:38 · 12827 阅读 · 0 评论 -
spring aop注解失效之谜
问题:在spring 中使用 @Transactional 、 @Cacheable 或 自定义 AOP 注解时,会发现个问题:在对象内部的方法中调用该对象的其他使用aop机制的方法,被调用方法的aop注解失效。这句话可能说的有点拗口,那么我们来看几个 aop 失效的例子吧事物失效public class TicketService{ //买火车票 @Transactional原创 2017-08-18 00:53:26 · 13451 阅读 · 4 评论 -
addShutdownHook+ @Scheduled(cron = "0 0/1 * * ?" )
钩子程序 Runtime.getRuntime(). (shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。一、编写个测试类转载 2016-08-08 18:11:17 · 5191 阅读 · 0 评论 -
mybatis 的批量操作,查询、更新、插入
mybatis 的批量更新 主要依靠 foreach 标签拼接sql 实现批量操作。第一种方法,拼装成一条sql<update id="batchUpdateRawEventStatus" parameterType="java.util.List"> update raw_event set status = 1 where id in <foreach collection="list原创 2017-02-14 00:09:55 · 7515 阅读 · 0 评论 -
mybitis 利用association或collection传递多参数子查询
有时候我们在查询数据库时,需要以查询结果为查询条件进行关联查询。在mybatis 中通过 association 标签(一对一查询,collection 一对多 查询) 实现延迟加载子查询 <resultMap id="xxxMap" type="xxxx.bean.xxx" extends="zzzzMap"> <association property="destName"原创 2017-08-02 22:20:11 · 11481 阅读 · 0 评论 -
mybitis利用association 实现延迟加载
1 延迟加载1.1 什么是延迟加载高级映射:对查询结果有特殊要求的resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需原创 2015-07-24 22:34:47 · 1778 阅读 · 0 评论 -
springboot缓存 之 从Cache中取出所有条目
背景前两天遇到一个问题,就是将一个 key ,value1、value2 、value3、value4…… 也就是一个 key 多个 value 的数据结构放到 缓存中。这个简单,我就把他们都放到了GuavaCacheManager 缓存中,(GuavaCacheManager可以参考这里 点我 ) 但是在取出数据的时候遇到了一个问题。问题我门知道 GuavaCacheManager 的数据结原创 2017-07-16 22:16:49 · 19270 阅读 · 2 评论 -
springboot-AOP
先了解AOP的相关术语: 1.通知(Advice):通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。 2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。 3.切入点(Pointcut)通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方法的名称,Sprin原创 2017-07-13 23:05:15 · 1134 阅读 · 0 评论 -
利用java 的动态代理模拟spring的AOP
AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。平常我门需要记录一些操作的日志,需要在操作的业务逻辑代码里嵌入日志模块的代码。这些日志模块的代码与操作的代码逻辑无关,只是做一个记录,而且在其原创 2017-07-13 00:00:01 · 1607 阅读 · 1 评论 -
mybatis 获取更新(update)记录的id 之< selectKey > 用法
问题用mybatis update 记录,更新过后想要更新记录的id 怎么办?平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。简介其实可以通过 mybatis 的 selectKey 标签来解决这个问题。 selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数原创 2017-07-03 22:01:29 · 43762 阅读 · 32 评论 -
spring mvc 请求转发和重定向
请求重定向与请求转发的比较,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别。1.RequestDispatcher.forward方法只能将请求转发给同一个Web应用中的组件,HttpServletResponse.sendRedirect不仅可原创 2016-08-03 14:01:49 · 20016 阅读 · 1 评论 -
SpringMVC Controller介绍及常用注解
一、简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controlle转载 2016-07-20 14:14:37 · 776 阅读 · 0 评论 -
mybatis 实现一对一,一对多,多对多关联查询 小结
1 resultType和resultMap小结1.1 实现一对一查询:resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。如果没有查询结果的特殊要求建议使用resultType。定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较为简单,企业中使用普遍。原创 2015-07-24 13:45:19 · 8918 阅读 · 1 评论 -
spring和mybatis 整和(二)商品信息的修改
1.2 商品修改需求操作流程:1、进入商品查询列表页面2、点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据商品id(主键)查询商品信息3、在商品修改页面,修改商品信息,修改后,点击提交 步骤总结 : 1.用逆向工程生成ItemsMapper.java和ItemsMapper.xml原创 2015-07-31 16:07:55 · 1245 阅读 · 0 评论 -
springmvc使用校验框架validation校验
1 springmvc校验(服务端 )b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的,本节主要学习springmvc实现控制层添加校验。 Spring3支持JSR-303验证框架,JSR-303 是JAVA EE 6 中的一项子规范,叫做BeanValidation,官方原创 2015-08-01 22:24:47 · 10040 阅读 · 0 评论 -
springmvc 入门环境搭建
springmvc框架什么是springmvcspringmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。springmvc是一个基于mvc的web框架。 springmvc框架第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请原创 2015-07-20 20:55:28 · 1000 阅读 · 0 评论 -
mybatis总结和与hibernate比较
#{}和${} #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。如果接收简单类型,#{}中可以写成value或其它名称。#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。 ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。${}接收输入参数,类型可以是简单类型原创 2015-07-21 11:47:33 · 1263 阅读 · 0 评论 -
springmvc 的参数绑定,springmvc和 struts2的区别
1 参数绑定1.1 spring参数绑定过程从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。形参都是参数绑定需要做的事 springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收!!!! 1.2 默认支持的类型直接在con原创 2015-07-31 19:07:53 · 2579 阅读 · 0 评论 -
springmvc参数绑定(二)
1 包装类型pojo参数绑定采用类似struts中对象.属性的方式命名,需要将pojo对象作为一个包装对象的属性,action中以该包装对象作为形参。1.1 需求 商品查询controller方法中实现商品查询条件传入。1.2 实现方法第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参原创 2015-08-01 19:38:49 · 813 阅读 · 0 评论 -
mybitis 环境搭建和入门程序
1.1 MyBatis介绍MyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不原创 2015-07-21 11:42:02 · 1203 阅读 · 0 评论 -
mybatis 的条件查询的三个方法实现
Mybatis的多条件查查询,传递参数,第一种方法 传递map 型,第二种方法 传递pojo 带三种方法 多个参数如果不封装成Map,就用序列号代替。如果参数比较多且乱建议用map 型,如果有定义的pojo 则建议用pojo类型,如果传递的参数不多,则建议用序列号代替的方法。1.Map 型(当传入多个参数时可以使用map型)例 : mapper.java//分页查询原创 2015-08-12 09:24:39 · 32436 阅读 · 0 评论 -
springmvc 和mybatis 整合(一)
springmvc和mybatis整合1.1 需求使用springmvc和mybatis完成商品列表查询。1.2 整合思路springmvc+mybaits的系统架构:(面试问题)从后往前整合Spring是一个javabean的ioc容器;第一步:整合dao层 mybatis和spring整合,通过spring管理mapper接口。原创 2015-07-29 23:08:39 · 2409 阅读 · 0 评论 -
spring 和 mybatis 的整合
1 spring和mybatis整合1.1 整合思路 需要spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)持久层的mapper都需要由spring进行管理。1.2 整合环境创建一个新的ja原创 2015-07-28 21:01:51 · 1983 阅读 · 0 评论 -
springmvc中@RequestMapping 和 controller 小结
1 @RequestMappingn url映射定义controller方法对应的url,进行处理器映射使用。为了对url进行url分类管理,在controller下定义跟路径,最终访问url是跟路径+子路径@RequestMapping(value="/item")或@RequestMapping("/item)value的值是数组,可以将多个url映射到同一个方原创 2015-07-31 16:42:00 · 2874 阅读 · 0 评论 -
springmvc 的json数据交互
1 json数据交互(重点)1.1 为什么要进行json数据交互json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。比如:webservice接口,传输json数据. 1.2 springmvc进行json交互 1、请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成原创 2015-08-02 16:12:24 · 4856 阅读 · 3 评论 -
mybatis 实现一对一关联表查询
1 一对一查询1.1 需求查询订单信息,关联查询创建订单的用户信息1.2 resultType1.2.1 sql语句确定查询的主表:订单表确定查询的关联表:用户表 关联查询使用内链接?还是外链接? 由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。关联查询,原创 2015-07-24 13:04:36 · 1534 阅读 · 0 评论 -
mybatis 的mapper代理小结
Mapper动态代理方式 实现步骤1. mapper.xml 配置文件 (重)2. mapper.java 接口(重)3. 记得加载映射文件SqlMapConfig.xml 实现原理 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象原创 2015-07-22 11:37:44 · 2174 阅读 · 0 评论