首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在控制器中将相同流量的方法结合起来。

在控制器中将相同流量的方法结合起来。
EN

Stack Overflow用户
提问于 2017-08-21 09:41:12
回答 3查看 37关注 0票数 0

方法1.

代码语言:javascript
复制
@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.

代码语言:javascript
复制
@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的核心原则之一是“合并重复的问题”。所以,重点是我想把这些方法组合成一个方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-21 09:51:09

代码语言:javascript
复制
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));
}
票数 1
EN

Stack Overflow用户

发布于 2017-08-21 09:47:40

将url更改为更通用的url,如/getUser

在请求中传递一个额外的TYPE参数,类似于PROFESSOR/MEMBER。根据TYPE,您可以在控制器方法中查询两个不同的方法。

票数 1
EN

Stack Overflow用户

发布于 2017-08-21 09:52:46

同意您的意见,根据干编码原则,重复相同的代码是不建议的。可以使用带有某种查询参数的单个RequestMapping,或者将公共代码移动到不同的方法,并从两个方法调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45793914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档