get/post
http两种请求发送的方法
get:
- 请求数据在url里
- 长度有限制
- 不安全
- 可以被缓存
post:
- 请求数据不会再url内
- 安全(相对get)
- 长度无限制
- 不会被缓存
map 遍历
-
map.keySet()
for (String key : map.keySet()) { System.out.println("key:" + key + ",value:" + map.get(key)); }
-
获取map中所有的value:map.values()
//遍历所有的value for (String value : map.values()) { System.out.println("value:" + value); }
-
获取键值对:map.entrySet()
//取出对应的 key,value 键值对,容量大时推荐使用 for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("键值对:" + entry); //获取 键值对的 key System.out.println("key:" + entry.getKey()); //获取 键值对的 value System.out.println("value:" + entry.getValue()); }
-
通过map.entrySet使用迭代器遍历key和value
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue()); }
-
jdk1.8新特性 Lambada函数式编程
map.forEach((key, value) -> { System.out.println("key=" + key + ",value=" + value); });
转发重定向
-
转发:服务器收到直接转发到需要转发的页面,客户端直接显示转发到的页面
- 地址栏不会发生改变
- 只有一次请求
- 请求域的数据不会消失
- forward()
-
重定向:服务器收到重定向之后会把需要跳转的url响应给客户端,然后客户端会重新请求新的页面
- 地址栏发生改变
- 两次请求
- 请求域数据会消失
- sendRedirect()
简单说一下什么是迭代器
一种迭代器模式,可以说成是遍历集合的一种方法,对序列类型(集合)进行遍历,无需关注集合底层结构,只要拿到对象,使用迭代器即可遍历迭代器内部
Iterator 内部有三个方法
- next :返回下一个元素
- hasnext:判断下一个元素是否为空,返回布尔值
- remove:将迭代器返回的元素删除 (不常用)
请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
static
- 方法中不能用 this 和 super 关键字,方法必须被实现,而不能是抽象的abstract,方法不能被重写
- 修饰表示静态或全局,被修饰的属性和方法属于类,可以用类名.静态属性 / 方法名
- 修饰的代码块表示静态代码块,当 Java 虚拟机(JVM)加载类时,就会执行该代码块,只会被执行一次
- 修饰的属性,是在类加载时被创建并进行初始化,只会被创建一次
- 修饰的变量可以重新赋值
不能。
cookie和session
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
- 不可跨域名:举例:一个用户在第二次登录网站时只会携带自己上次登陆时所返回的cookie,而不会携带别的cookie
- int maxAge () 此方法设置cookie的最大存活时间,超过时间自动删除 为0表示删除 默认为-1
Session是服务器端使用的一种记录客户端状态的机制,与cookie不同的是它存储在服务器,即当客户端访问服务器时服务器把客户端信息以某种形式存储在服务器上,当客户端再次访问时会进行对比以确认客户身份
二者区别:
- cookie数据存放在客户的浏览器上,session数据放在服务器上.
- cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
- 两者最大的区别在于生存周期,一个是IE启动到IE关闭.(浏览器页面一关 ,session就消失了),一个是预先设置的生存周期,或永久的保存于本地的文件。(cookie)
spring优势
* 轻量:依赖东西少,资源占用少,部署简单不同功能选择不同jar
* 容器:工厂模式实现对JavaBean的管理,通过IOC将应用程序配置和依赖与代码分开
* 松耦合:xml和注解的形式将bean注入
* aop:通过xml和注解加入面向切面编程,完成切面功能,如日志,事务
* 方便集成:与别的框架比如mybatis可以通过简单的配置注入
* 丰富的功能:JDBC层抽象、事务管理、MVC等
什么是AOP(面向切面编程)
主要是在预编译和运行期通过动态代理实现对程序功能的维护 通过横切的技术,将影响多个类的公共行为封装到一个可重用模块组成一个切面,即Aspect
实现AOP有两种方式,
* 动态代理,利用拦截方法方式对方法进行装饰,取代原有行为的执行
* 静态织入,创建切面,使得编译器在预编译期间织入有关切面的代码
什么是IOC(控制反转)
将设计好的对象交给ioc容器管理,而不是显示的通过代码创建,这样对象与对象之间是松耦合、便于测试、功能可重用(减少对象创建和内存消耗),使得程序可扩展性、维护性、灵活性强
对象通过简单的DI即可注入需要的资源,完成自身业务逻辑。不需要关注资源的出处和具体实现(xml、注解)
Spring核心模块
\1. Spring Core
框架的最基础部分,提供 IoC 容器,对 bean 进行管理。
2.Spring Context
基于 bean,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化、校验和调度等功能。
3.Spring DAO
提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码,还提供了声明性事务管理方法。
4.Spring ORM
提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate、MyBatis 等。
5.Spring AOP
提供了符合AOP Alliance规范的面向方面的编程实现。
6.Spring Web
提供了基础的 Web 开发的上下文信息,可与其他 web 进行集成。
7.Spring Web MVC
提供了 Web 应用的 Model-View-Controller 全功能实现。