为了减少servlet数量,将共有方法提取,归纳为一个servlet项目
在注解("/项目名/*")并且继承创建的Basesevlet;
在basesevlet方法中
获取请求路径
url=request。getRequstUIL();【/虚拟路径、/项目名、/方法
获取方法名称
methodname=uil.substring(url.LastIndexof("/"+1))【/方法
获取执行方法对象
method=this.getClass().getMehod(methdname,HttpServletRequest.class,httpServletResponse.class)
method.invoke(this,req,resp)
BaseServlet 同样会继承HttpServlet,覆盖重写其中的方法:
----------------------不同的关键-------------------------
BaseServlet会如同一个Servlet的工具类,在抽取共用方法时,简化以前的书写方式:
//获取请求路径
String uri = request.getResquestURI()// /虚拟路径/项目/方法
//获取方法名【不是执行方法】
String methdoName=uri.subString(uri.lastIndexof('/')+1);
//方法获取,
//找到调用方法类的class文件,然后调用getMethod执行方法
method=this.getClass().getMethod(methodName,
HttpServletRequest.class, HttpServletResponse.class)
//执行方法,以后的方法前缀为public
method.invoke(this,requset,responcs)
================整理公用方法============================
//将对象序列化为json对象,并写回客户端
void writeValue(obj,responce)
mapper = new ObjectMapper();
response.setContentType("application/json;charset=utf-8")
mapper.writeValue(response,getOutputStream(),obj)
//将序列化对象json,返回
String writeValueAsString(Object obj)
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(obj);
|
|