一个servlet处理多个请求,
原理:利用反射机制获取在selvlet类中的其他方法
1、前端页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试一个Servlet处理多个请求</title> </head> <body> <h1>一个Servlet处理多个请求</h1> <hr> <a href="queryEmp.do">查询员工信息</a> <br/> <br/> <a href="addEmp.do">新增员工信息</a> <br/> <br/> <a href="deleteEmp.do">删除员工信息</a> <br/> <br/> <a href="queryEmpList.do">查询所有员工信息</a> </body> </html>
2、web.xml配置
<!-- 处理多个请求 --> <servlet> <servlet-name>servlet</servlet-name> <servlet-class>com.servlet.userservlet.CustomerServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
3、servlet类
package com.servlet.userservlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; /** * 使用一个servlet处理多个请求 * @author 登风 * @date 2018年6月14日 */ public class CustomerServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取请求的URI地址信息 String url = request.getRequestURI(); // 截取其中的方法名 String methodName = url.substring(url.lastIndexOf("/")+1, url.lastIndexOf(".")); Method method = null; try { // 使用反射机制获取在本类中声明了的方法 method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class); // 执行方法 method.invoke(this, request, response); } catch (Exception e) { throw new RuntimeException("调用方法出错!"); } } private void queryEmp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行查询员工的方法..."); response.setContentType("text/html;charset=utf8"); PrintWriter pw = response.getWriter(); pw.println("<h1>查询员工的方法</h1>"); pw.flush(); pw.close(); } private void addEmp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行新增员工的方法!!!"); response.setContentType("text/html;charset=utf8"); PrintWriter pw = response.getWriter(); pw.println("<h1>执行了新增员工的方法。。。</h1>"); pw.flush(); pw.close(); } private void deleteEmp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行删除员工的方法..."); response.setContentType("text/html;charset=utf8"); PrintWriter pw = response.getWriter(); pw.println("<h1>删除员工的方法</h1>"); pw.flush(); pw.close(); } private void queryEmpList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("执行查询所有员工的方法..."); response.setContentType("text/html;charset=utf8"); PrintWriter pw = response.getWriter(); pw.println("<h1>查询所有员工的方法</h1>"); pw.flush(); pw.close(); } }
网页反参结果