javaWeb的三大组件: Servlet , 过滤器, 监听器
Servlet作用:
接收用户请求
处理用户请求
给客户端响应
Servlet需要程序员编写
public class AServlet implements Servlet { //Servlet 的初始化方法 @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("随便随便"); } //获取Servlet的配置 @Override public ServletConfig getServletConfig() { return null; } //处理用户的请求 @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("也行也行"); } @Override public String getServletInfo() { return null; } //Servlet的损毁方法 @Override public void destroy() { } }
Servlet的实现方式:
实现Servlet接口 javaEE提供的接口, javax.servlet.Servlet
继承javax.servlet.GenericServlet
继承javax.servlet.http.HttpServlet (推荐使用)
JavaEE 这些类不在jdk中, 在Servlet-api的jar中
Servlet的类对象由Web服务器创建(Tomcat), Servlet的方法大部分由Tomcat来调用
init(),service(),destory()都是Tomcat调用,如果程序员调用,没有处理请求的能力
getServletConfig().getServletInfo() 给程序员调用
编写Servlet
创建一个类实现Servlet接口
在项目目录/web/WEB-INF/web.xml文件中配置Servlet
Servlet: 动态资源
资源怎么被访问: url
Servlet的生命周期: 重要
描述Servlet从生到死的过程:
-
Servlet默认创建是在第一次请求的时候创建( 第一次惩罚: 耗时多一点: 多了创建Servlet对象的过程)
-
调用init() 方法, 做初始化
-
每请求一次, Servlet的service() 执行一次, 处理用户请求
-
当服务器关闭时候, 先销毁该tomcat创建所有的Servlet, 销毁Servlet对象之前, 调用destroy()方法
Servlet中其他接口
-
ServletConfig 对应Servlet的配置
<servlet> <!--Servlet名称: 自定义, 推荐类名 --> <servlet-name>AServlet</servlet-name> <!--对应的Servlet类: 全限定名(包.类名)--> <servlet-class>com.fs.web.AServlet</servlet-class> </servlet> <!--绑定url Servlet类与url的映射 --> <servlet-mapping> <servlet-name>AServlet</servlet-name> <!--绑定的url 自定义 推荐使用 /类名 后面还有通配符 * 写法 --> <url-pattern>/AServlet</url-pattern> </servlet-mapping>
Idea 修改web.xml文件,一定要重启服务器, 热部署失效
-
ServletRequest 请求对象, 当用户发起请求时, Tomcat会为这次请求创建一个请求, 请求对象包含很多信息(客户端的信息ip,端口, 请求url,请求参数), tomcat服务器处理请求时,创建一个线程来处理, 服务器这边是多线程服务
-
ServletResponse: 响应对象, 当用户发起请求, tomcat除了创建请求对象,还会创建响应对象, 由服务器给客户端数据通过响应对象传递的