1.创建web项目,导入Servlet依赖坐标(scope范围为provided因为上传后tomcat也有这个,可能会冲突)pom.xml
javax.servlet javax.servlet-api 3.1.0 provided
2.创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话(在java文件下创建com.itheima.web.ServletDemo1)
3.配置:在类上面使用@WebServlet注解配置该Servlet的访问路径 (只演示了service方法)
package com.itheima.servlet;import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("servlet hello world~");}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}
4.右键:Run Maven/tomcat7:run运行项目,访问路径:http://localhost:8080/web-demo/demo1
1.Servlet由谁创建?Servlet方法由谁调用?
答:Servlet由web服务器创建,Servlet方法由web服务器调用。
2.服务器怎么知道Servlet中一定有servlet方法》
答:因为我们自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有service方法
@WebServlet(urlPatterns="/demo", loadOnStartup = 1) 负整数:第一次被访问时创建Servlet对象。0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次。
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4.服务终止:当容器需要释放内存或者容器关闭时调用destory()方法完成资源的释放,该实例会被垃圾回收。
方法:getServletInfo返回提示信息,作者没什么用一般返回null或者空字符串
方法:getServiceconfig()方法暂时用不到,后面用到了说,就是要用config
package com.itheima.servlet;import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;@WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
public class ServletDemo2 implements Servlet {/*初始化方法* 1. 调用时机:默认情况下,Servlet被第一次访问,调用* 2. 调用次数:1次* */@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("哈哈哈");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("hello world");}@Overridepublic String getServletInfo() {return null;}// 销毁方法:内存释放,被调用一次@Overridepublic void destroy() {}
}

package com.itheima.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("get....");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("post...");}
}
1.Servlet 要想被访问,必须配置其访问路径(urlPattern)
2.一个Servlet,可以配置多个 urlPattern
@WebServlet(urlPattern = {"/demo1","/demo2"})
3.urlPattern 配置规则
(1)精准匹配 (2)目录匹配 (3)扩展名匹配 (4)任意匹配

package com.itheima.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** urlPattern:一个Servlet可以配置多个访问路径*/@WebServlet(urlPatterns = {"/demo3","/demo4"})
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo3 get...");}
}
1.Servlet从3.0之后开始支持注解配置,3.0版本之前只支持xml配置文件的配置方式 了解
步骤:
(1)编写Servlet类
(2)在web.xml中配置该Servlet
ServletDemo4.java
package com.itheima.servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ServletDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo4 .. get");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
}
web.xml
Archetype Created Web Application demo4 com.itheima.servlet.ServletDemo4
demo4 /demo4