建个基础 servlet 类继承 HttpServlet,其中除了可以反射方法外也可以写些常用的方法 :

public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 重写 service 方法 完成方法分发
/* 获取请求路径
* 获取方法名称
* 获取方法对象
* 执行反射 */
String requestURI = req.getRequestURI(); // 获取 uri
String methodName = requestURI.substring(requestURI.indexOf("/") + 1);
//substring 获取方法名
try {Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
method.invoke(this,req,resp);
// 此处的 this 指入口的 class,非此 class
} catch (NoSuchMethodException e) {e.printStackTrace();
} catch (IllegalAccessException e) {e.printStackTrace();
} catch (InvocationTargetException e) {e.printStackTrace();
}
}
/**
* 直接将传入对象序列化为 json
* 并传给浏览器
* @param obj
* @param response
* @throws IOException
*/
public void writeValue(Object obj,HttpServletResponse response) throws IOException {ObjectMapper mapper = new ObjectMapper();
response.setContentType("application/json;charset=utf-8");
// 设置编码 注意两个设置字段中间用分号隔开
mapper.writeValue(response.getOutputStream(),obj);
}
public String writeValueAsString(Object obj) throws JsonProcessingException {ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(obj);
// 将传入对象序列化为 json 并返回字符
}
}
相关 servlet 均继承 baseservlet
@WebServlet("/user/*")
public class UserServlet extends BaseServlet {
/* 原本新建的 get post 方法改成你需要的方法
protected 修饰改成 public 否则需要在 baseServlet 中暴力反射
不建议使用暴力反射
申明 UserService 业务对象 方便使用
声明业务或 dao 对象一般先建接口 然后再实现 */
UserService service = new UserServiceImpl();
// 访问 域名 /user/regist 即可以访问下列方法
public void regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}