多个请求对应一个Servlet的方法

原创 2018年04月15日 14:19:43
*多个请求对应一个Servlet的方法:
1.一种方便添加新方法的方式:
1).JSP代码:
<a href="addCustomer.do">Add</a><br><br>
<a href="query.do">Query</a><br><br>
2).Servlet映射地址:
@WebServlet("*.do")
3).doGet和doPost方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			doPost(request, response);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		//1.获取ServletPath:/update.do或addCustomer.do 
		String servletPath=req.getServletPath();
		//2.去除/ 和.do ,得到类似于update 或addCustomer 这样的字符串
		String methodName=servletPath.substring(1);
		methodName=methodName.substring(0, methodName.length()-3);
		
		/*
		 * 方便添加新方法,直接获取请求的映射地址对应的方法执行。
		
		 */
		try {   
			//3.利用反射获取methodName 对应的方法
			Method method=getClass().getDeclaredMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
		
			//4.利用反射调用对应的方法。
			method.invoke(this,req, resp);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			
			//5.遇到错误可以直接返回错误提示页面
			resp.sendRedirect("error.jsp");
		} 
	}
2.另一种方法:(麻烦) 容易泄露信息

 1).JSP:
 
 <a href="customerServlet?method=add">Add</a>
2).Servlet映射地址:
@WebServlet("/customerServlet")
3).
doPost:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String method=request.getParameter("method");
		switch (method) {
		case "add":
			add(request,response);
			break;
		case "query":
			query(request,response);
			break;
		case "delete":
			delete(request,response);
			break;
		case "update":
			update(request,response);
			break;
		default:
			break;
		}	
	}
对应的方法:
private void update(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException  {
		System.out.println("update");	
	}
	private void delete(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException  {
		System.out.println("delete");
	}
	private void query(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException  {
		System.out.println("query");		
	}
	private void addCustomer(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException  {
		System.out.println("add");		
	}

在一个Servlet中处理多个请求方法

1. 在一个Servlet中可以有多个请求处理方法! 2. 客户端发送请求时,必须多给出一个参数,用来说明要调用的方法   请求处理方法的签名必须与service相同,即返回值和参数,以及声明的异...
  • fandoudou123
  • fandoudou123
  • 2016-02-13 11:02:53
  • 560

多个请求访问同一个servlet

在我们刚开始编写java web程序时,可能会一个jsp页面功能对应一个服务器的servlet。例如对我们的客户表(Customer)实行增删改查时,每个操作对一个servlet。这样的话,不仅使得代...
  • congmingPIG_htt
  • congmingPIG_htt
  • 2016-01-10 15:24:19
  • 1340

Servlet如何处理多个请求访问?

Servlet如何处理多个请求访问? JSP存在的多线程问题? 如何开发线程安全的Servlet?...
  • Luckydog_li
  • Luckydog_li
  • 2017-12-05 14:29:02
  • 434

一个servlet处理来自多个不同页面的请求!

例如有一个用户表,我们要处理 添加,删除 用户以及登录功能 对应的有add.jsp del.jsp login.jsp等 body> login.jsp --> form...
  • u012289441
  • u012289441
  • 2015-05-11 10:00:18
  • 1282

Servlet是如何处理多个请求同时访问呢?

1.Servlet是如何处理多个请求同时访问呢? 回答:servlet是默认采用单实例,多线程的方式进行。只要webapp被发布到web容器中的时候,servlet只会在发布的时候实例化一次,s...
  • suntimv
  • suntimv
  • 2016-11-26 19:47:47
  • 3881

spring mvc 一个controlller对应多个请求 其中包含 不同请求对应不同目录下的不同视图

spring mvc 一个controlller对应多个请求 其中包含 不同请求对应不同目录下的不同视图...
  • responsecool
  • responsecool
  • 2014-08-27 19:20:26
  • 2198

不推荐重写service

不推荐重写HttpServlet类的service,原因是HttpServlet的service方法里面有一串神奇的代码:与浏览器有一个约定!而这个约定的作用  就是可以让网页刷新时不必重新请求一些...
  • qq_36326947
  • qq_36326947
  • 2017-04-23 18:17:34
  • 2012

javaWeb 复习系列(四)---- 多个请求映射到同一个 Servlet

多个请求映射到同一个 Servlet
  • creatorYC
  • creatorYC
  • 2015-12-08 13:01:53
  • 486

BaseServlet,让一个Servlet可以同时处理多个请求

普通的Servlet一个Servlet只能处理一个请求,可以仿Struts1中的DispatchAction让一个Servlet处理多个请求。 做法是: 让普通处理请求的Servlet继承父类的Bas...
  • xuzengqiang2
  • xuzengqiang2
  • 2014-02-20 14:11:31
  • 7739

一个servlet处理多个请求

在实际应用过程中,经常遇到一次请求就要对应一个servlet,比如做一个简单的登录注册,那么登录对应一个servlet,注册也需要一个servlet,登录成功后,还需要添加,删除,编辑等等,对需要一个...
  • qq_18468413
  • qq_18468413
  • 2015-11-28 18:51:04
  • 975
收藏助手
不良信息举报
您举报文章:多个请求对应一个Servlet的方法
举报原因:
原因补充:

(最多只允许输入30个字)