简介
Servlet 是一个与平台无关的服务器端插件,它运行于 Servlet 容器中。Servlet 容器负责 Servlet 与客户的通信及调用 Servlet 方法,Servlet 和客户之间的通信采用“请求——响应”模式,即一问一答模式。常使用 Tomcat 作为 Servlet 的服务器端,Tomcat 是一种具有 JSP 环境的 Servlet 容器;Servlet 容器能代替用户管理和调用 Servlet。
创建servlet
有两种方式创建一个 Servlet:
- 实现 Servlet 接口,主要实现接口中的 service() 方法;
- 继承 HttpServlet 类,实现父类中的 doGet() 和 doPost() 方法。
配置servlet映射
有两种方式配置 Servlet 映射:
- 在 Web.xml 配置文件中配置映射,需要配置 < servlet > 和 < servlet-mapping > 这两个标签,代码较多较麻烦;
- 给 Servlet 类添加注解 WebServlet(“映射名称”),简单一步到位。
servlet生命周期
- 客户端发送请求;
- Web容器解析请求;
- 创建 Servlet 实例。创建实例又分两种情况,第一种是在第一次请求到来时创建实例;第二种是在Web.xml 中配置了 < load-on-startup >,会在容器启动时创建实例。
- 调用 init() 初始化,只执行一次。
- 调用 service 方法,根据请求不同(get/post)来决定调用 doGet() 或 doPost() 方法来处理业务。
- 输出响应的信息。
- 返回响应。
- 调用 destroy() 方法,主要用于关闭资源或销毁对象。
HttpServletRequest常用方法
- setCharacterEncoding(“编码格式”):设置请求通道编码格式。
- getParameter(String key):返回表单中属性的值。
- getParameterValues(String key):返回字符串数组,当 key 有多个值时。
- getParameterMap():返回表单中所有属性的值,保存在 Map<String, String[]> 集合中。
- getRequestDispatcher(String url).forward(request, response):设置请求转发的地址,并使用 forward 转发。
HttpServletResponse常用方法
- setCharacterEncoding(“编码格式”):设置响应通道的编码格式。
- setContenType(String mime):设置响应正文的 MIME 类型,一般为“text/html;charset=utf-8”。
- sendRedirect(String url):设置响应重定向。
Session
- Session简介
HttpSession是指,在Http协议的一次会话中,提供存取会话属性的方法。当浏览器访问某个网站时,服务器会为该浏览器分配一个内存空间,该内存空间是由该浏览器独占,称为 Session 空间,一般用于存放登录用户的信息。 - 常用方法
- request.getSession([boolean]):获得Session。
- setAttribute(String key, Object value):添加键值对到 session,可以添加任意类型的数据。
- getAttribute(String key):从 session 中获取指定 key 的 value。
- removeAttribute(String key):删除某属性。
- setMaxInactiveInterval(int s):设置 session 的存活时间,单位是秒,当超过指定时间还没有请求该 session,session就会死亡,若在指定时间不断请求该 session,session 的时间会不断刷新。注意,若时间设置为 0 则表示无限存活。
Cookie
- Cookie简介
Cookie由服务器生成,一般发送给浏览器,浏览器会将 Cookie 中的 key/value 保存到本地某文件中,Cookie 一般用于保存用户的登录信息,使得可以在再次登录时不需要输入登录信息。 - 常用方法
- new Cookie(String key, String value):一个 Cookie 对应一个键值对,且只能存放字符串,不能是对象。
- response.addCookie(Cookie对象):将创建好的 Cookie 添加到相应通道,返回到客户端的浏览器中保存。
- request.getCookie():读取客户端的 Cookie,返回 Cookie 数组,数组中包含所有 Cookie 信息。
- setMaxAge(int s):设置 Cookie 的存活时间,累积时间一到则清除 Cookie,注意,若设置为 0 则表示立马清除 Cookie。
Servlet过滤器Filter
- 简介
Filter 过滤器是 Servlet 和 JSP 的核心技术,它可以统一控制资源、统一处理问题、统一对权限的控制,提高代码的开发效率,高复用部分代码。
过滤器处在客户端请求与 Servlet 之间,当客户端请求到来时,Servlet 容器会先调用 Filter 过滤器,如果请求在 Filter 中通过则转发给 Servlet,未通过则进指定跳转。 - 使用
- 创建 Filter 过滤器,需要实现 Filter 接口,重写接口的 doFilter() 方法。
- 配置映射。同样是两种方式,第一种是到 Web.xml 中配置,第二种是在Filter 类中使用注解 WebFilter(url),配置完后会对符合该 url 设定的请求进行过滤。