servlet反射,模拟struts的action控制跳转

使用BaseServlet实现请求分发
本文介绍如何通过BaseServlet实现请求的灵活分发,解决单一servlet处理多个请求的问题,提升系统开发效率。

通常我们一个servlet控制一个请求,这个是常规操作。一般初学者基本都是这么做的,而实际开发中,我们似乎是不能这样操作,实际开发中我们会有很多请求过来,那是不是应该定义很多个servlet呢?这样对于系统的开发是很不利的,那么我们有没有其他的操作方式呢,答案是肯定的。

首先定义一个BaseServlet

package com.enson.base;

import java.io.IOException;
import java.io.PrintWriter;
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 BaseServlet extends HttpServlet {

	public BaseServlet() {
		super();
	}

	public void destroy() {
		super.destroy(); 
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			request.setCharacterEncoding("utf-8");
			process(request, response);
		} catch (Exception ex) {
			throw new ServletException(ex);
		}
	}

	@SuppressWarnings("unchecked")
	public void process(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		<span style="color:#FF0000;">String action = request.getParameter("flag");</span>//此时servlet的方法执行交给了前端请求控制,根据flag的值,确定需要执行的方法
		try {
			<strong><span style="color:#FF0000;">Class clz = this.getClass();//执行反射即可
			Method method = clz.getDeclaredMethod(action,
					HttpServletRequest.class, HttpServletResponse.class);
			method.invoke(this, request, response);</span></strong>
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void init() throws ServletException {
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr-稻帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值