Servlet基础
1 什么是Servlet
1. Servlet是JavaEE规范(接口)之一。
2. Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。
3. Servlet是运行在服务器上的Java小程序。它可以接受客户端发来的请求,并响应数据给客户端。
2 创建Servlet
2.1 通过实现Servlet接口创建Servlet
-
步骤
1. 编写一个类去实现Servlet接口。 2. 实现service方法,处理请求,响应数据。 3. 在web.xml中或者配置servlet程序的访问地址(或者使用注解@WebServlet)
-
编码
@WebServlet("/test1") public class MyServlet_01 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("进入init方法!"); } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("进入Service方法!"); } private void doPOST() { System.out.println("进入doPOST方法!"); } private void doGET() { System.out.println("进入doGET方法!"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("销毁该Servlet!"); } }
-
路由配置
注意: 注解配置是对XML配置的简化,两者实现一种即可
XML中配置:
<servlet> <!--Servlet程序的别名--> <servlet-name>MyServlet_01</servlet-name> <!--Servlet程序的全类名--> <servlet-class>com.dong.MyServlet_01</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet_01</servlet-name> <!--url访问路劲--> <url-pattern>/test1</url-pattern> </servlet-mapping>
注解中配置:
@WebServlet("/test1")
2.2 通过继承HttpServlet类创建Servlet
-
环境准备
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency>
-
步骤
1. 编写一个类去继承HttpServlet类 2. 根据业务需要重写doGET和doPOST方法 3. 在web.xml中配置servlet程序的访问地址
-
编码
@WebServlet("/test2") public class MyServlet_02 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("进入doGet方法!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("进入doPOST方法!"); } }
-
路由配置
XML中配置:
<servlet> <!--Servlet程序的别名--> <servlet-name>MyServlet_02</servlet-name> <!--Servlet程序的全类名--> <servlet-class>com.dong.MyServlet_02</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet_02</servlet-name> <!--url访问路劲--> <url-pattern>/test2</url-pattern> </servlet-mapping>
注解配置:
@WebServlet("/test2")
3. Servlet类的继承层次
-
继承层次解释
1. GenericServlet: GenericServlet实现了Servlet接口中除了service方法外的其他四个方法,这几个方法我们就可以不用去重写了 2. HttpServlet: HttpServlet实现了Service方法,通过service方法将处理不同的HTTP请求方法,并交由相应的处理方法去处理,如doGET、doPOST等 3. 自定义Servlet: 我们只需要去重写这些处理方法,完成对应的业务就行
-
GP分发处理
@Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("Hello Servlet!"); //将ServletRequest转换为HttpServletRequest HttpServletRequest request = (HttpServletRequest) servletRequest; //获取请求方法 String method = request.getMethod(); if ("GET".equals(method)){ doGET(); }else if("POST".equals(method)){ doPOST(); } }
3 Servlet的生命周期
1. 执行Servlet构造器方法
2. 执行innit初始化方法
1、2两步是在第一次访问的时候,创建Servlet程序时会调用
3. 执行service方法
第3步每次访问时都会调用,处理请求和响应
4. 执行destroy销毁方法
在web工程停止的时候调用