Servlet 中的 doGet 方法、doPost 方法、service 方法
Servlet 需要提供对应的 doGet() 与 doPost() 方法。
doGet()
当浏览器使用 GET
方式提交数据的时候,Servlet 需要提供 doGet()
方法
form
默认的提交方式- 如果通过一个超链访问某个地址
- 如果在地址栏直接输入某个地址
ajax
指定使用get
方式的时候
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// ...
}
}
doPost()
当浏览器使用 POST
方式提交数据的时候,Servlet 需要提供 doPost()
方法。
- 在
form
上显示设置method="post"
ajax
指定post
方式的时候
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// ...
}
}
service()
LoginServlet
继承了 HttpServlet
,同时也继承了一个方法 service(HttpServletRequest req, HttpServletResponse resp)
实际上,在执行 doGet()
或者 doPost()
之前,都会先执行 service()
。由 service()
方法进行判断,调用 doGet()
还是 doPost()
。
service()
、doGet()
和 doPost()
三种方式的参数列表都是一样的。所以,有时候也会直接重写 service()
方法,在其中提供相应的服务,就不用区分 get
和 post
。
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// ...
}
}