一、前提
可以观察到,当实现 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 12 System.out.println("Hello Servlet 被访问了");
13 }
14 }
二、分发处理
在 service() 方法中可以获取 servletRequest,然后把它强转成 HttpServletRequest 对象,就可以获取对应的请求方式,然后再处理。
Demo:
1 import javax.servlet.*;
2 import javax.servlet.http.HttpServletRequest;
3 import java.io.IOException;
4
5 public class HelloServlet implements Servlet {
6
7 /**
8 * service方法是专门用来处理请求和响应的
9 * @param servletRequest
10 * @param servletResponse
11 * @throws ServletException
12 * @throws IOException
13 */
14 @Override
15 public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
16 System.out.println("service === Hello Servlet 被访问了");
17 // 类型转换(因为它有getMethod()方法)
18 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
19 // 获取请求的方式
20 String method = httpServletRequest.getMethod();
21
22 if ("GET".equals(method)) {
23 doGet();
24 } else if ("POST".equals(method)) {
25 doPost();
26 }
27
28 }
29
30 /**
31 * 做get请求的操作
32 */
33 public void doGet(){
34 System.out.println("get请求");
35 System.out.println("get请求");
36 }
37 /**
38 * 做post请求的操作
39 */
40 public void doPost(){
41 System.out.println("post请求");
42 System.out.println("post请求");
43 }
44
45 }