import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.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.io.PrintWriter;
import java.lang.reflect.Method;
/**
* 没有访问地址,是其它所有Servlet的父类
*/
public class BaseServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取action的参数
String action = request.getParameter("action");
//如果知道一个方法的字符串名字,可以通过反射来调用这个方法
//对象是this, Servlet对象由tomcat创建
//获取类对象
Class<? extends Servlet> clazz = this.getClass();
try {
//获取类中方法
Method method = clazz.getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
//暴力反射
method.setAccessible(true);
System.out.println("调用了" + this + "中方法:" + method.getName());
//调用方法
method.invoke(this, request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将对象转成JSON,打印到浏览器端
* @param response 响应对象
* @param object 要转换的对象
*/
protected void printJsonString(HttpServletResponse response, Object object) throws IOException {
//获取打印流
response.setContentType("application/json;charset=utf-8");
PrintWriter out = response.getWriter();
//将对象转成JSON字符串
String json = new ObjectMapper().writeValueAsString(object);
out.print(json);
}
}