方法一

可以通过在请求的时候加上参数,然后在servlet中获取请求的参数,再去调用对应的方法。达到一个servlet处理多个请求的目的

test.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
</head>
<body>
<!--
请求的时候加上对应的请求参数
-->
<a href="customerServlet?method=add"> Add</a>
<br>
<br>
<a href="customerServlet?method=query"> Query</a>
<br>
<br>
<a href="customerServlet?method=delete"> Delete</a>
</body>
</html>

CustomerServlet.Java:

package com.aaa.mvcapp.servlet;

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 CustomerServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取对应的请求参数
String method = request.getParameter("method");
//根据请求参数去调用对应的方法。
if ("add".equals(method)) {
add(request, response); } else if ("query".equals(method)) {
query(request, response);
} else if ("delete".equals(method)) {
delete(request, response);
}
} private void delete(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("delete"); } private void query(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("query");
} private void add(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("add"); }
}

方法二

1.在servlet的mapping中配置为 *.do来响应多个请求 
2. 在servlet中获取servletPath。(例如/=add.do) 
3. 去除/ 和.do,利用反射再去调用对应的方法。

web.xml(servlet配置):

  <servlet>
<servlet-name>CustomerServlet</servlet-name>
<servlet-class>com.aaa.mvcapp.servlet.CustomerServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>CustomerServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

test.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
</head>
<body>
<a href="add.do"> Add</a>
<br>
<br>
<a href="query.do"> Query</a>
<br>
<br>
<a href="delete.do"> Delete</a>
</body>
</html>

CustomerServlet.java:

package com.aaa.mvcapp.servlet;

import java.io.IOException;
import java.lang.reflect.Method; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class CustomerServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { // 获取方法名字
String servletPath = request.getServletPath();// /xxxxxx.do
// 去掉斜杠和.do
String methodName = servletPath.substring(1, servletPath.length() - 3);// xxxxxx try {
// 利用反射获取方法
Method method = getClass().getDeclaredMethod(methodName,
HttpServletRequest.class, HttpServletResponse.class);
// 执行相应的方法
method.invoke(this, request, response);
} catch (Exception e) {
// TODO: handle exception
}
} private void delete(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("delete"); } private void query(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("query");
} private void add(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("add"); }
}

这样一来不同的请求可以会用同一个servlet来处理,在servlet内部为不同的请求分别有不同的方法去处理。

一个servlet处理多个请求(使用Method的反射机制)的更多相关文章

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

    一个servlet处理多个请求,原理:利用反射机制获取在selvlet类中的其他方法1.前端页面<%@ page language="java" contentType=&q ...

  2. Servlet(五):一个Servlet处理多个请求

    一.为什么要使用一个Servlet来处理多个请求? 当浏览器发送了一次请求到服务器时,servlet容器会根据请求的url-pattern找到对应的Servlet类,执行对应的doPost或doGet ...

  3. 【WEB小工具】BaseServlet—一个Servlet处理多个请求

    package cn.itcast.test.web.servlet; import java.io.IOException; import java.io.PrintWriter; import j ...

  4. BaseServlet,让一个servlet处理多个请求

    BaseServlet 第一次学习servlet的时候是跟着传智播客免费的教学视频,其中崔希凡讲的是我学过自认讲的最好的一位,BaseServlet也是跟着他写过一次,当时很多东西不能理解,后来慢慢发 ...

  5. 怎么在一个servlet中实现多个功能 ?如何使一个Servlet处理多个请求?

    自学javaweb一直不知道一个servelt可以有多个功能!看了别人代码才知道这个可以有! 平时你建立servelt时候你会吧doget和dopost这两个勾上,要想实现多个功能,你不必要勾选dog ...

  6. 一个servlet如何处理多个请求

    页面1:表单的action=login?method=login 页面2:表单的action=login?method=insert ..... 然后通过method的值采用不同方法进行处理. 如下 ...

  7. 一个servlet处理多个请求或者叫方法

    http://blog.csdn.net/qq_25201665/article/details/52037607

  8. Tomcat是一个Servlet容器?

    "Tomcat是一个Servlet容器",这句话对于2019年的程序员应该是耳熟能详的. 单纯的思考一下这句话,我们可以抽象出来这么一段代码: class Tomcat { Lis ...

  9. (二)第一个Servlet

    一.预备知识 一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个 ...

随机推荐

  1. DataWarehouse- 从面试定位自己的水平

    1.讲一下什么是维度表和事实表.用户资料表算是什么类型表. 2. 维度建模属于第几范式,让你对维度建模改进,有什么思路吗. 3. 了解数据血缘分析吗,让你实现的话有什么技术方案,感觉难点在哪. 4. ...

  2. 搭建svn服务器小结

    最开始是用VisualSVN-Server来搭建服务器的,某一天安装了eset杀毒软件后,发现不能用了,每次打开配置页时报错.Visualsvn server 0x80070005 百度搜索,找到相同 ...

  3. python reload(sys)找不到,name 'reload' is not defined

    在操作数据库的时候遇到这个问题,为什么会出现这种原因?查询如下: python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDeco ...

  4. hdoj-2141-Can you find it?(二分查找)

    题目链接 /* Name:HDU-2141-Can you find it? Copyright: Author: Date: 2018/4/12 17:15:46 Description: 暴力,复 ...

  5. mysql字段设计坑

    对varchar, char类型的字段进行排序 把价格设计成decimal的时候,要注意 "有效位数", "小数位数", 不然会发现,插入的时候最多达到上限

  6. AtCoder Petrozavodsk Contest 001 B - Two Arrays

    Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement You are given two inte ...

  7. jsp有哪些内置对象?作用分别是什么?

    JSP共有以下9种基本内置组件 1.request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应. 2.response对象 响应客户请求的有关信 ...

  8. C/C++变量命名规则,个人习惯总结【转载】

    C_C++变量命名规则 原文地址:http://blog.sina.com.cn/s/blog_8a7012cf01017h9p.html 变量命名规则是为了增强代码的可读性和容易维护性.以下为C++ ...

  9. zabbix上的宏(macro)介绍

    宏:macro,预设的文本替换模式: 宏是一种抽象概念(Abstraction),它根据一些列预定义的规则替换一定的文本模式,而解释或编译器在遇到宏时会自动进行这一模式替换.类似地,zabbix基于宏 ...

  10. Poj 2387 Til the Cows Come Home(Dijkstra 最短路径)

    题目:从节点N到节点1的求最短路径. 分析:这道题陷阱比较多,首先是输入的数据,第一个是表示路径条数,第二个是表示节点数量,在 这里WA了四次.再有就是多重边,要取最小值.最后就是路径的长度的最大值不 ...