方法1.
@RequestMapping(value="/getProfessor")
public @ResponseBody List<Object> getMember(HttpServletRequest request){
HttpSession session = request.getSession();
HashMap user = (HashMap)session.getAttribute("USER_INFO");
Map<String, Object> param = new HashMap<String, Object>();
param.put("phone", (String)user.get("PHONE");
ReportManager manager = new ReportManager();
List<Object> list = manager.getProfessor(param);
}方法2.
@RequestMapping(value="/getMember")
public @ResponseBody List<Object> getMember(HttpServletRequest request){
HttpSession session = request.getSession();
HashMap user = (HashMap)session.getAttribute("USER_INFO");
Map<String, Object> param = new HashMap<String, Object>();
param.put("phone", (String)user.get("PHONE");
ReportManager manager = new ReportManager();
List<Object> list = manager.getMember(param);
}上面的代码简要描述了我是如何得到成员和教授名单的。除了URL和最底层的方法之外,这两种方法的代码流完全相同。如您所知,OOP的核心原则之一是“合并重复的问题”。所以,重点是我想把这些方法组合成一个方法。
发布于 2017-08-21 09:51:09
public Map<String, Object> getParams(HttpServletRequest request){
HttpSession session = request.getSession();
HashMap user = (HashMap)session.getAttribute("USER_INFO");
Map<String, Object> param = new HashMap<String, Object>();
param.put("phone", (String)user.get("PHONE");
}
@RequestMapping(value="/getProfessor")
public @ResponseBody List<Object> getMember(HttpServletRequest request){
ReportManager manager = new ReportManager();
List<Object> list = manager.getProfessor(this.getParams(request));
}
@RequestMapping(value="/getProfessor")
public @ResponseBody List<Object> getMember(HttpServletRequest request){
ReportManager manager = new ReportManager();
List<Object> list = manager.getProfessor(this.getParams(request));
}发布于 2017-08-21 09:47:40
将url更改为更通用的url,如/getUser。
在请求中传递一个额外的TYPE参数,类似于PROFESSOR/MEMBER。根据TYPE,您可以在控制器方法中查询两个不同的方法。
发布于 2017-08-21 09:52:46
同意您的意见,根据干编码原则,重复相同的代码是不建议的。可以使用带有某种查询参数的单个RequestMapping,或者将公共代码移动到不同的方法,并从两个方法调用它。
https://stackoverflow.com/questions/45793914
复制相似问题