get和post有何区别?
get参数传递通过url,post放在resquest body中 get请求参数有长度限制,post没有
get不安全,因为参数暴露在url中。post安全,参数是隐藏的 get请求只能进行url编码。post支持多种编码
get请求参数会被完整保留在浏览历史记录,而post不会被保留。 get产生一个tcp数据包;post产生两个tcp数据包。
get和post本质就是tcp链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
Servlet 生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 初始化后调用 init
() 方法。 Servlet 调用 service() 方法来处理客户端的请求。 Servlet 销毁前调用 destroy() 方法。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
Servlet有什么优点?
可移植性好 Servlet是用Java语言编写的,因此它可以移植到不同的操作系统和服务器上。 安全性好
Servlet也具有类型检查特征,并利用Java的垃圾收集和没有指针的设计,使得Servlet避免了内存管理等问题。 高效性
Servlet加载执行后会常驻服务器内存中,当再次受到客户端的请求时,服务器会产生新的线程而不是进程为客户端服务,这样就提高了响应速度。
Servlet的生命周期
当客户端第一次请求Servlet时,Servlet被加载到内存中,容器会创建Servlet实例,并调用其init()方法进行初始化工作。
容器创建请求对象和响应对象,然后调用Servlet的service()方法为客户端提供服务。
当Servlet不再被需要时,容器调用Servlet的destory()方法将Servlet实例销毁。 注:
当客户端请求的Servlet已经存在于服务器内存时,容器会创建新的线程调用service()方法响应客户端请求。在Servlet的整个生命周期中,init()方法和destory()方法只会被调用一次。
Filter
它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
Listenner
用于监听Web应用的内部事件的实现类。可以监听用户session的开始与结束,用户请求的到达等等,当事件发生时,会回调监听器的内部方法
使用Listener步骤
1.通过实现具体接口创建实现类(可实现多个监听器接口)
2. 配置实现类成为监听器,有两种配置方式: 直接用@WebListener注解修饰实现类 通过web.xml方式配置,