Servlet工具类----BaseServlet

功能:

1、实现一个类多个请求处理方法的简化

2、根据处理方法返回值处理请求

package com.acme.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;

/**
 * 一个类多个请求处理方法,每个请求处理方法的原型与service相同
 * 
 * 原型=返回值 + 方法名称 + 参数列表
 * 
 * @author acme.w
 *
 */
public class BaseServlet extends HttpServlet {

	private static final long serialVersionUID = -1904145359611258739L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//1、获取方法名称
		String methodName = req.getParameter("method");
		
		//2、根据方法名称和参数列表,获取方法
		Method method = null;
		try {
			method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
		} catch (Exception e) {
			throw new RuntimeException("获取(" + methodName + ")方法失败:", e);
		}
		
		//3、执行方法
		try {
			String result = (String) method.invoke(this, req, resp);
			
			if (result != null && !"".equals(result)) {
				String[] datas = result.split(":");
				//转发
				if ("f".equals(datas[0])) {
					req.getRequestDispatcher(datas[1]).forward(req, resp);
				} else 	//重定向
					if ("r".equals(datas[0])) {
					resp.sendRedirect(req.getContextPath() + datas[1]);
				}
			}
			
		} catch (Exception e) {
			throw new RuntimeException("执行(" + methodName + ")方法失败:", e);
		}
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值