Servlet
能将
HTTP请求和响应封装在标准Java
类中来
实现各种
Web
应用方案。
Servlet是使用
Java语言编写的服务器端程序,它能够接受客户端的请求并产生响应。
与常规的
CGI
程序相比,
Servlet
具有更好的可移植性和
安全性、以及更强大的功能等特点。
需要在特定的容器(运行环境)中运行,如Tomcat。
Servlet容器环境在 HTTP通信 和 web服务器平台 之间实现了
一
个抽象层。
Servlet容器负责把请求传递给Servlet,并把结果返回给客户。
容器环境也提供了配置Servlet应用的简单方法,并且也提供用XML文件配置Servlet的方法。
大多数基于
HTTP
协议的开发,直接继承
HttpServlet
继承HttpServlet创建Servlet类主要继承并覆盖以下方法:
来自GenericServlet类
public void init(ServletConfig config) throws ServletException
public void init() throws ServletException
public void destroy()
来自HttpServlet类
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
servlet的url-pattern匹配规则详细描述:https://www.cnblogs.com/51kata/p/5152400.html
Servlet中的请求转发
使用RequestDispatcher接口实现页面转发
//获得转发对象
RequestDispatcher dispatcher = req.getRequestDispatcher("main.jsp");
//转发
dispatcher.forward(req, resp);
//包含
dispatcher.include(req, resp);
详细解释:https://blog.youkuaiyun.com/sinat_37976731/article/details/79865671
由于是同
一
请求的转发,因此 请求中的参数和Attribute可以保持。
获取Session对象
//有http会话就不创建,没有就创建新的http会话
public HttpSession getSession()
//参数为true:有就http会话不创建,没有就创建新的http会话
//参数为false:有就http会话不创建,没有也不创建
public HttpSession getSession(Boolean create)
获取Application对象
public ServletContext getServletContext();
Servlet过滤器
Servlet
过滤器是
一
种
WEB
组件,可以根据应用程序的需要
来拦截特定的请求和响应。



Servlet监听器
用于监听
一
些事件的发生,如:客户端请求、WEB应
用上下文、会话信息
Servlet
监听器是
Web
应用程序事件模型的
一
部分,当
Web
应用中的某些状态发生改变时,
Servlet
容器就会产生
相应的事件,比如创建
ServletContext
对象时触发
ServletContextEvent
事件,创建
HttpSession
对象时触
HttpSessionEvent
事件,
Servlet
监听器可接收这些事
件,并可以在事件发生前、发生后可以做
一
些必要的处理
。
3种Servlet监听器类型:
ServletContext事件监听器:监听
应用程序环境对象
HttpSession事件监听器:监听
用户会话对象
ServletRequest事件监听器:监听
请求消息对象



典型应用:使用监听器实现统计某网站在线人数。
思路:每个用户在访问网站时,会创建自己的
session
,因此
只要监听
session
的创建与销毁就知道目前在线的人数。