doGet()和doPost()的使用
在页面用post传参时,后台应该用dopost(), 当用doget()传参时,会出现下面的结果:
源码:
index.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录
<%-- 这里表单表示的意思,以post方式提交表单,提交到我们的login请求 --%>
后端代码:
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username=req.getParameter("username");
String password=req.getParameter("password");
String[] hobbys=req.getParameterValues("hobbys");
System.out.println("------------------------");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobbys));
System.out.println("-----------------------");
//通过请求转发
req.getRequestDispatcher("/success.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
修改后:
index.jsp还是保持post传参
后端变更为dopost()
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username=req.getParameter("username");
String password=req.getParameter("password");
String[] hobbys=req.getParameterValues("hobbys");
System.out.println("------------------------");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobbys));
System.out.println("-----------------------");
//System.out.println(req.getContextPath());
//通过请求转发
req.getRequestDispatcher("/success.jsp").forward(req,resp);
}
测试结果为:
*************************************************************************************************************************************************************************************************************
从名字上来看可以很容易的有一个直观感觉,do即“处理”,所以doGet()用于处理Get请求,而doPost()用于处理Post请求,查看API(http://tomcat.apache.org/tomcat-5.5-doc/servletapi/)可以看到servlet接口中有5个方法:init()、destroy()、getServletConfig()、getServletInfo()和service(),根据API可知其中的方法service()的作用是:“Called by the servlet container to allow the servlet to respond to a request”,也就是说“由servlet容器调用,并允许servlet对请求作出响应”,因此service() 方法会检查 HTTP 请求类型Get、Post等,并在适当的时候调用 doGet()、doPost()等方法,而我们不需要对 service() 方法做任何动作,只重写 doGet() 或 doPost() 即可。
如何使用:当新建一个servlet时,IDEA默认会给出如下形式:
@WebServlet(name = "ServletXXX")
public class ServletXXX extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
此时,只需要根据servlet请求的类型,重写相应的方法即可,如果是Get请求,就让doGet()方法去处理,如果是Post请求,就让doPost()方法去处理,但是通常doPost()方法更强大一些,所以如果是Post请求,就直接重写doPost()方法就好了,而如果是Get请求,也可以把方法体写在doPost()中,在doGet()中通过doPost(request,response);调用一下即可。————————————————版权声明:本文为CSDN博主「潇潇的潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/gxx_csdn/article/details/78862377