servlet的生命周期、cookie和session

一、servlet

1、基础概念

servlet 技术主要应用于动态页面开发。是一种独立于操作系统平台和网络传输协议的服务端的Java应用程序,它用来拓展服务器的功能,可以生成动态的 web 页面。

2、在maven 中用 servlet 写的 hello world

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
@WebServlet("/hello")
    public class HelloServlet extends HttpServlet {

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.getWriter().write("Hello  world");
        }

//        @Override
//        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//            doPost(req, resp);
//        }
    }

在 pom.xml 中引入的 servlet 依赖:


      javax.servlet
      javax.servlet-api
      3.1.0
      compile
    

运行结果:(还要注意路径)

servlet的生命周期、cookie和session_第1张图片

 PS:若 Tomcat 能运行 JSP 但运行不了 servlet,(可能配置问题或者路径问题

则按照此路径找到该文件:

servlet的生命周期、cookie和session_第2张图片

打开后,按下面的修改即可:


3、生命周期

servlet 生命周期:指servlet 容器创建 servlet 实例,响应客户请求后最后销毁的全过程。 

servlet的生命周期、cookie和session_第3张图片

 描述:

(容器加载servlet类)当第一次有web客户请求servlet服务或当web服务启动;

(创建servlet实例对象)容器环境根据客户环境创建一个或多个servlet对象实例,并把这些实例加入到servlet实例池中;

(servlet初始化)容器环境调用servlet的初始化方法init()进行初始化,并向servlet传递参数;

(容器生成请求和响应对象)容器利用HttpServletRequest和HttpServletQesponse对象,封装从客户端收到的HTTP请求和由servlet生成的响应;

(调用service方法提供服务)容器调用HttpServlet . service()提供服务,并将请求和响应对象传递给该方法,再从请求对象读取HTTP请求数据,通过session对象访问状态信息,并用HttpServletQesponse对象生成HTTP响应数据;

(用destroy方法注销servlet)当web服务器和容器关闭时,会调用HttpServlet . destroy()方法关闭所有打开的资源,并进行一些关闭前处理。

二、cookie 和 session

1、工作流程

cookie:是客户端的机制。

服务器把每个用户的数据以cookie的形式(比如用户名、密码等)写给用户各自的浏览器,当用户使用浏览器再次访问服务器中的web资源时,就会带着各自的数据去,这样web资源处理的就是用户各自的数据了。

session:是服务器端的机制。

服务器 可以为每个用户浏览器创建一个session对象,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session对象中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据并为用户服务。

PS:可参考:http://t.csdn.cn/Ty0O0

2、区别

(1)存储位置:cookie存储在客户端;session存储在服务端。

(2)安全性:cookie以文明方式存储在客户端,安全性相对较弱,较容易遭到不法获取;session存在服务器内存中,安全性相对较强。

(3)存取方式:cookie只能保存ASCII;session可以保存任意数据类型。

(4)有效期:cookie可设置为长时间保存;session一般有效时间较短,客户端关闭或session超时都会失效。

(5)存储大小:cookie可存储数据最大为4K;session可存储数据远高于cookie。

你可能感兴趣的:(servlet,java,cookie,session)