Servlet
一. 前言
1. Tomcat
Tomcat 是一个轻量级的 Servelet 容器,是一个 HTTP 服务器(封装了HTTP 协议),可以部署动、静态页面。
Tomcat是一个应用程序,核心工作就是处理HTTP请求和响应。Tomcat 能够处理 HTTP 请求,全靠操作系统内核中的网络协议栈来支撑的.
Tomcat自身作为一个平台(webapp的容器),又对上层进行了一些支撑,给用户写的代码提供了一些服务器.
一个操作系统包含了两部分:内核和配套的应用程序。
Tomcat 本身也是一个应用程序。
2. Maven
Maven 是一个项目管理工具。
作用:
- 创建项目:创建一个java web项目(有特定的目录结构和配置文件)遵守tomcat的要求.
- 打包构建:把已经写好的代码,以及依赖的资源都一起打成一个war包(tomcat能够识别的包).
- 依赖管理:把项目中用到的第三方库jar都下载下来并导入到项目中.
二. Servlet
1. 什么是 Servlet ?
想要在 Tomcat上部署动态资源,就得依赖于 Tomcat 提供的一组 API —— Servlet,它能够开发动态页面。
2. Servlet 的作用
Servlet是官方提供的一种web开发的规范,用于web开发中,以java代码来处理请求及返回响应。由不同的web服务器厂商提供具体的Servlet规范的实现,这些web服务器也称为Servlet容器。
3. Tomcat 如何处理 Servlet 的代码?
- 收到HTTP请求的时候(字符串),按照HTTP协议的格式,把这个请求解析成一个HttpServletRequest对象;
- Tomcat根据请求的信息,(URL的路径,方法)定位到某个具体的Servlet类,以及调用其中的某个方法;
- 用户自己写的代码,就会根据HttpServletRequest的内容,动态的计算,构造生成一个HttpServletResponse对象;
- Tomcat拿到HttpServletRepsonse对象之后又会把这个对象按照HTTP协议的格式构造成一个字符串,通过内核中的下层协议栈,发送会给浏览器。
4. Servlet 对象的生命周期
- 初始化阶段调用一次init;
- 每次收到请求,调用service方法(HttpServlet里面的service方法又会调用doXXX方法);
- 在服务器退出之前,再调用一次destroy。
5. 核心类
- HttpServlet
- HttpServletRequest
- HttpServletResponse
构造了一个 GET 方法,想要在浏览器中发送 POST 请求,应该怎么做?
(1)form 表单:就是一个 HTML 标签,在里面标记一下 post 方法就可以了;
(2)在开发页面再次重写一个 doPost 方法,在里面调用 doGet 方法,并写入参数。
(1)HttpServletRequest 这个类常用的方法:
- getMethod 获取方法.
- getRequestURI 获取请求的 url
- getQueryString 获取query string
- getParameter 获取参数.
HttpServletRequest里面的方法主要都是get系列的方法获取属性.
(2)HttpServletResponse 这个类的常用方法:
- setStatus 设置状态码
- setHeader设置header头
- setContentType 设置Content-Type(也能通过setHeader来完成)
- getWriter().write 设置body
HttpServletResponse里面的方法主要都是set系列的方法设置属性.
6. cookie和session
客户端向服务器发送一个请求进行身份验证;服务器根据请求来验证用户的身份信息,分配一个session对象,并生成一个sessionId;服务器通过响应中的Set-Cookie字段返回sessionId给客户端;客户端拿到Set-Cookie字段的值,会保存到浏览器本地;下次客户端再次请求时,会自动带上Cookie 中保存的值;服务器根据Cookie的值,就知道客户端的身份是啥了。
Session表示一个“会话”,每一个用户访问服务器的时候,服务器都会给这个用户分配一个会话。服务器同时给多个用户提供服务,此时也就会存在多个会话,每个会话对象里面又可以包含一些键值对属性。
Cookie最常见的用法就是用来实现登陆机制,登陆机制中光用Cookie还不够,还需要用到Session。