zoukankan      html  css  js  c++  java
  • 如何用一个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();
        }
    }

    网页反参结果

    
    
    
     
  • 相关阅读:
    (原创)c#学习笔记10--定义类成员01--成员定义06--自动属性
    (原创)c#学习笔记10--定义类成员01--成员定义03--定义属性
    (原创)c#学习笔记10--定义类成员01--成员定义02--建立方法
    【BZOJ3110】K大数查询(ZJOI2013)-整体二分+线段树
    【BZOJ3110】K大数查询(ZJOI2013)-整体二分+线段树
    【HDU5412】CRB and Queries-整体二分:带修改区间第K小
    【HDU5412】CRB and Queries-整体二分:带修改区间第K小
    【NOI2007T2】货币兑换-DP斜率优化+CDQ分治
    【NOI2007T2】货币兑换-DP斜率优化+CDQ分治
    【BZOJ3295】动态逆序对(CQOI2011)-CDQ分治:三维偏序
  • 原文地址:https://www.cnblogs.com/binghuaZhang/p/12322186.html
Copyright © 2011-2022 走看看