如何用一个servlet处理多个请求

一个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();
    }
}

网页反参结果



 
原文地址:https://www.cnblogs.com/binghuaZhang/p/12322186.html