首页 > 其他 > 详细

BaseServlet

时间:2021-06-11 10:57:46      阅读:18      评论:0      收藏:0      [点我收藏+]

通过反射调用方法,以简化Servlet数量。

class BashServlet

package com.demo.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;

/* as superclass for all sub-class*/
public class BaseServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req,
                           HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        try {
            String key = req.getParameter("key");
            Class<? extends BaseServlet> clazz = this.getClass();
            // key is the method name
            Method method = clazz.getMethod(key, HttpServletRequest.class, HttpServletResponse.class);
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

XServlet

package com.demo.servlet;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/x")
public class XServlet extends BaseServlet{

    public void methodA(HttpServletRequest request,
                           HttpServletResponse response)throws  Exception{
           // some codes
    }

}

测试

you can use this url to test http message.
url path: contextname/servletname?key=methodname
此处就是:contextname/x?key=methodA。

BaseServlet

原文:https://www.cnblogs.com/1river/p/14873541.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!