servlet中底层如何调用doGet和doPost

本文介绍了在Servlet中,请求处理的实际流程。即使不直接调用doGet和doPost,底层的service方法会根据请求方法(GET或POST)来决定调用哪个方法。当重写service方法时,如果不手动调用doGet和doPost,将不会执行相应的业务逻辑。因此,建议在开发中直接覆盖doGet和doPost以实现特定的请求处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package day03;

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 RequestDemo02 extends HttpServlet {

	private static final long serialVersionUID = -8885728678471757078L;


	/**
	 * @author 半步疯子
	 * 
	 * 这个service方法是servlet的核心的服务方法。我们的业务逻辑都是在这个方法开始被触发的。
	 * 这是一个入口:调用其它方法之前,都会调用service方法。
	 * 
	 * 在新的testMethod中进行调用的时候发现,进行数据提交的时候,
	 * 不管是使用doGet提交的,还是调用doPost进行提交的;
	 * 最后都是只调用的service进行的,并没有调用doGet和doPost。
	 * 
	 * 
	 * 证明service才是最基本的入口。
	 * 
	 * 但是当我们没有重写service的时候,为什么还是调用的是
	 * doPost和doGet呢?(源码剖析)
	 * 
	 * service中通过request的不同的do方法,在内部调用不同的方法
	 * doGet、doPost、doPut... ...
	 * 
	 * 因为进入之后,必须调用service方法,如果我们在重写的service方法
	 * 中没有调用其中的doGet和doPost方法的话,进入service之后就不会进
	 * 行其它的操作。
	 * 
	 * 
	 * 代码逻辑就在service这个方法中被调用到。
	 * 
	 * 
	 * 所以在开发中不建议覆盖service方法;
	 * 建议覆盖doXXX方法。
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("调用了service方法");
		
		// 源码中的样式:
		// 源码中用:GET代表doGet、POST代表doPost。
		String method = request.getMethod();
		System.out.println(method);
		if("GET".equals(method)){
			doGet(request, response);
		} else if("POST".equals(method)) {
			doPost(request, response);
		} else {
			System.out.println("do nothing!");
		}
		
		
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("调用了doGet方法");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("调用了doPost方法");
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值