前言:
最近在用jsp+sevlet+Mysql知识写一个简单的博客系统,刚开始写的时侯没有了解到反射机制,所以便使用一个servlet处理一个请求的方式,这种方式无疑是不行的当你有成千上万个请求的时候难道要写成千上万个servlet嘛?
后来了解到反射机制可以实现一个servlet处理多个请求,有两种方法可以实现。
实现原理
不同的请求通过不同的方法来响应,反射起的作用是把执行方法名动态化,同过获取不同的请求传递来的方法名,执行不同的方法。
所以只需要在一个servlet里写多个方法来处理请求,而不需要写多个servlet来处理请求。反射所实现的功能便是在每次请求时,执行相应的方法。
实现步骤
方式一:利用请求名获取方法名
Servlet编写
@WebServlet(value = "*.do")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
//通过请求路径来获取执行方法名
String servletPath = request.getServletPath();
String methodName = servletPath.substring(servletPath.lastIndexOf("/")+1,servletPath.indexOf("."));
try {
//利用反射获取方法
Method method = getClass().getDeclaredMethod(methodName,HttpServletRequest.class