问答社区笔记(SpringBoot+MySQL+Redis)

26 篇文章 0 订阅
2 篇文章 0 订阅

最近开始学习问答社区的一些东西,开一个博客,记录这个过程中的一些知识点和疑问,方便之后总结,加油!
19/05/22更,为了简历上有点东西,开始重视这个项目了,哈哈,每天更新一节课,加油!

第一课 Spring入门,模板语法和渲染
1.URL中 “?” &“”号的作用

“?”:连接作用。
“&”:不同参数的间隔符。
例如:

http://www.xxx.com/Show.asp?id=77&nameid=2905210001&page=1

“?”还有清除缓存作用。
例如:

http://www.xxxxx.com/index.html 
http://www.xxxxx.com/index.html?test123123

两个url打开的页面一样,但是后面这个有问号,说明不调用缓存的内容,而认为是一个新地址,重新读取。

2.SpringBoot的环境中引入原始的HttpServletRequest和Response。

(1)什么是Request、Response
这里指的Request和Response对应的是一次Http请求中的Request,在Java的Servlet协议中,把其封装为HttpServletRequest和HttpServletResponse,我们可以方便的从这两个类中取出Http Request中的内容,包括header、cookie、uri、params等等,也能方便的使用HttpServletResponse处理Http Response。
(2)应用于什么场景、解决了什么问题
操作Request和Response是编写一个web程序的最基本的需求。比如,读取参数、读取Cookie;设置相应内容,设置响应头等等。

第二课 Springboot工程,IoC和AOP
1.SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍

(1)@Controller 处理http请求
@Controller 用来响应页面,@Controller必须配合模版来使用。在resources目录的templates目录下添加一个相应的文件。
(2)@RestController
Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合。
即@RestController是@ResponseBody和@Controller的组合注解。
(3)@RequestMapping 配置url映射
@RequestMapping此注解即可以作用在控制器的某个方法上,也可以作用在此控制器类上。

当控制器在类级别上添加@RequestMapping注解时,这个注解会应用到控制器的所有处理器方法上。处理器方法上的@RequestMapping注解会对类级别上的@RequestMapping的声明进行补充。
参考:Springboot中常用注解

2.SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍

(1)@PathVaribale 获取url中的数据
通过@PathVariable注解来获取URL中的参数时的前提条件是我们知道url的格式时怎么样的。
只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。
(2)@RequestParam 获取请求参数的值
required=false 表示url中可以不穿入id参数,此时就使用默认参数
(3)@GetMapping 组合注解
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP Get 映射到 特定的处理方法上。
即可以使用@GetMapping(value = “/hello”)来代替@RequestMapping(value=”/hello”,method= RequestMethod.GET)。即可以让我们精简代码。
参考:Springboot中常用注解

3.Model, ModelMap, ModelAndView

Model、ModelMap和ModelAndView用于在Spring MVC应用程序中定义模型。Model为模型属性定义了一个holder,主要用于向模型添加属性。ModelMap是Model的扩展,它能够在map和chain方法调用中存储属性。ModelAndView是模型和视图的持有者;它允许在一个返回值中同时返回模型和视图。
参考:Springboot Model

4.request/response

(1)request
作用:cookie读取、http请求字段、文件上传等。
关键字:HttpServletRequest
request.getHeaderNames();
request.getMethod()
request.getPathInfo()
request.getQueryString()HttpServletResponse
HttpServletRequest详解

(2)response
作用:页面内容返回、cookie下发、http字段设置, headers等。
关键字:HttpServletResponse
response.addCookie(new Cookie(key, value));
response.addHeader(key, value);

5.IoC

(1)DIP、IoC、DI以及IoC容器的含义及其联系
依赖倒置原则(DIP):一种软件架构设计的原则(抽象概念)。

控制反转(IoC):一种反转流、依赖和接口的方式(DIP的具体实现方式)。

依赖注入(DI):IoC的一种实现方式,用来反转依赖(IoC的具体实现方式)。

IoC容器:依赖注入的框架,用来映射依赖,管理对象创建和生存周期(DI框架)。

总结:DIP是软件设计的一种思想,IoC则是基于DIP衍生出的一种软件设计模式。DI是IoC的具体实现方式之一,使用最为广泛。IoC容器是DI构造函注入的框架,它管理着依赖项的生命周期以及映射关系。
摘自深入理解DIP、IoC、DI以及IoC容器,这篇博文简单易懂,很有必要一看。
(2)
6.AOP
(1)AOP概念
AOP技术恰恰相反,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
参考Spring AOP详解
(2)

第四课 注册、登录和浏览
1.Session 与 Cookie

Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态。
虽然Cookie和Session都可以跟踪客户端的访问记录,但是它们的工作方式显然是不同的,Cookie通过把所有要保存的数据通过HTTP的头部从客户端传递到服务端,又从服务端再传回到客户端,所有的数据都存储在客户端的浏览器里,所以这些Cookie数据可以被访问到,所以Cookie的安全性受到了很大的挑战。
相比较而言,Session的安全性要高很多,因为Session是将数据保存在服务端,只是通过Cookie传递一个SessionID而已,所以Session更适合存储用户隐私和重要的数据。

2.拦截器与过滤器

在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。 但是对于横向的功能,比如,在所有的service方法中开启事务,或者统一记录日志等功能,面向对象的是无法解决的。所以AOP——面向切面编程其实是面向对象编程思想的一个补充。而我们今天讲的过滤器和拦截器都属于面向切面编程的具体实现。而两者的主要区别包括以下几个方面:

(1)Filter是依赖于Servlet容器,属于Servlet规范的一部分,而拦截器则是独立存在的,可以在任何情况下使用。

(2)Filter的执行由Servlet容器回调完成,而拦截器通常通过动态代理的方式来执行。

(3)Filter的生命周期由Servlet容器管理,而拦截器则可以通过IoC容器来管理,因此可以通过注入等方式来获取其他Bean的实例,因此使用会更方便。

拦截器的配置
这里我们需要实现HandlerInterceptor这个接口,这个接口包括三个方法,preHandle是请求执行前执行的,postHandler是请求结束执行的,但只有preHandle方法返回true的时候才会执行,afterCompletion是视图渲染完成后才执行,同样需要preHandle返回true,该方法通常用于清理资源等工作。

参考Spring Boot实战:拦截器与过滤器

第七课 Redis和赞踩功能的实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值