-
简述三层结构每一层的功能和作用
| 分类 | 描述 |
|---|---|
| 应用层 | 负责具体业务和视图展示,如网络首页及搜索输入和结果展示 |
| 服务层 | 为应用层提供服务支持,如用户管理服务,购物车服务等 |
| 数据层 | 提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等 |
-
简述http协议请求和响应信息都有哪些
| Get | Post | |
|---|---|---|
| 请求行 | GET /user_login?username=admin&password=123 HTTP/1.1:表示使用Get请求 , 表示请求什么路径地址 ,表示使用什么版本的协议 | POST /user_login HTTP/1.1:意思和get请求的意思一样,只不过这里的地址再也不跟数据了。 并且这里使用post请求 |
| 请求头 | Host : 表示主机地址;User-Agent : 表示客户端的信息;Accept : 声明客户端可以接收什么类型的数据;Accept-Language : 表示客户端支持的语言;Accept-Encoding : 表示客户端支持的压缩格式;Referer : 表示请求从哪里过来的;Connection : 表示连接状态。 | Content-Type : 其实就是说明提交上去的数据是什么类型数据 。 是一个经过url编码的form表单数据;Content-Length : 提交的数据长度;Cache-Control : 表示再次请求的时候,是否读缓存。 |
| 请求体 | get请求没有请求体 | username=zhangsan&password=123:是以流的形式写给服务器的 |
| 响应行 | HTTP/1.1 200:表示服务器也支持1.1的版本协议 , 对这次请求处理的状态码是200 | 与get方法相同 |
| 响应头 | Content-Type: text/html;charset=UTF-8 : 表示返回的结果是一份网页,使用的是UTF-8编码;Content-Length: 75 : 返回的数据长度;Date: Sun, 21 May 2017 07:09:28 GMT : 响应时间 | 与get方法相同 |
| 响应体 | process login with admin : 123 | 与get方法相同 |
-
Cookie 和 Session的区别
| Cookie | Session | |
|---|---|---|
| 存储位置 | 数据存放在客户端 | 数据存放在服务器端 |
| 存储大小 | 存放的数据有限 | 依赖服务器的内存空间 |
| 安全性 | 数据不安全 | 数据相对比较安全 |
| 服务器负荷 | 减轻服务器压力, 用户磁盘占用比较多 | 服务器压力大一点 |
-
关闭浏览器是否会销毁session? 如果不会那么为什么再次访问获取不到值?
不会销毁Session;因为session需要通过JSESSIONID来获取,JSESSIONID 存储在cookie中,关闭浏览器之后,cookie销毁,再次访问无法获取JSESSIONID ,自然不能获取到原来的session。
-
IOC的作用是什么
IOC-Inversion of Control,即控制反转。
作用:将创建对象的动作交给容器来执行,无需自己手动创建。
-
DI的作用是什么
DI-Dependency Injection,即依赖注入
作用:只需要通过注解表明自己所需要的对象,容器就可以动态的将某个依赖注入到组件之中,提升了组件重用的频率。
-
能否自己实现IOC 和 DI
通过反射和动态代理可以实现出自己的IOC和DI
-
如何理解动态代理
首先,什么是代理?
举个例子,经纪人和歌手,想找歌手出席商业活动,不需要直接找到歌手本人,只要联系经纪人就可以,
在此处经纪人就是起到一个代理的作用。
既然有动态代理,就会有静态代理,那么什么是静态代理?
若代理类在程序运行前就已经存在,那么这种代理方式被成为静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类。
搞清楚了什么是静态代理,那么什么是动态代理呢?
代理类在程序运行时创建的代理方式被成为动态代理。
也就是说,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的指示动态生成的。
相比于静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一处理,而不用修改每个代理类的函数。
最后,如何使用动态代理?
- 1.实现 InvocationHandler 接口创建自己的调用处理器
- 2.为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类
- 3.通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型
- 4.通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入