可以观察到,当实现 Servlet 接口时,里面提供了一个 service() 方法,但是当从客户端对服务器进行访问的时候,无论是采用 GET 方式还是 POST 方式,都会执行这一个里面的代码。
如果我们需要对不同的请求作出不同的处理,这时就需要进行分发处理。
Servlet 示例:
1 public class HelloServlet implements Servlet { 2 /** 3 * service 方法是专门用来处理请求和响应的 4 * @param servletRequest 5 * @param servletResponse 6 * @throws ServletException 7 * @throws IOException 8 */ 9 @Override 10 public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception{ 11 System.out.println("Hello Servlet 被访问了"); 13 } 14}
在 service() 方法中可以获取 servletRequest,然后把它强转成 HttpServletRequest 对象,就可以获取对应的请求方式,然后再处理。
Demo:
1 public class HelloServlet implements Servlet { 2 /** 3 * service 方法是专门用来处理请求和响应的 4 * 5 * @param servletRequest 6 * @param servletResponse 7 * @throws ServletException 8 * @throws IOException 9 */ 10 @Override 11 public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws 12 ServletException, IOException { 13 System.out.println("3 service === Hello Servlet 被访问了"); 14 // 类型转换(因为它有 getMethod()方法) 15 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; 16 // 获取请求的方式 17 String method = httpServletRequest.getMethod(); 18 if ("GET".equals(method)) { 19 doGet(); 20 } else if ("POST".equals(method)) { 21 doPost(); 22 } 23 } 24 25 /** 26 * 做 get 请求的操作 27 */ 28 public void doGet() { 29 System.out.println("get 请求"); 30 System.out.println("get 请求"); 31 } 32 33 /** 34 * 做 post 请求的操作 35 */ 36 public void doPost() { 37 System.out.println("post 请求"); 38 System.out.println("post 请求"); 39 } 40 }