servlet 반사, struts의 액션 제어 점프 시뮬레이션

보통 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 {
	}
}

좋은 웹페이지 즐겨찾기