SpringBoot + JSP怎么优化代码

项目使用若依框架整合JSP,即SpringBoot + JSP ,有个问题想问下

假如我有很多页面,如index主页、product产品、information信息 三个页面,

主页controller 一个方法return “index”
产品controller 一个方法return “product”
信息controller 一个方法return “information”

我的主页同时包含了 product和information 两个内容
我现在是的写法是

//主页的controller

@RestController
@RequestMapping("/index")
public class HomePageController {
    @Autowired
    private CompanyService CompanyService;

    @Autowired
    private ProService ProService;

    @RequestMapping()
    public ModelAndView getNew(HttpServletRequest request) {
        //获取公司内容
        Company company = CompanyService.getCompany();
        request.setAttribute("IndexCompany", company);
        //获取首页展示产品信息
        List Pros = ProService.selectPro();
        request.setAttribute("IndexProductInfo", Pros);

        return new ModelAndView("index");
    }
}
  product的controller

@RestController
@RequestMapping("/product")
public class HomePageController {
    @Autowired
    private CompanyService CompanyService;

    @Autowired
    private ProService ProService;

    @RequestMapping()
    public ModelAndView getNew(HttpServletRequest request) {
        //获取公司内容
        Company company = CompanyService.getCompany();
        request.setAttribute("IndexCompany", company);
        //获取首页展示产品信息
        List Pros = ProService.selectPro();
        request.setAttribute("IndexProductInfo", Pros);

        return new ModelAndView("product");
    }
}

两个controller获取内容的方法完全一致,但却因为返回不同的页面,导致每个页面写一次。如果是n个页面都需要相同的内容,就需要写n次同样的方法。

请各位帅哥美女们帮忙看下如何优化,减少重复内容。

将重复代码抽到一个函数中去,再写个基类

public class BaseController {
    @Autowired
    private CompanyService CompanyService;
    @Autowired
    private ProService ProService;
   
    public ModelAndView getData(HttpServletRequest request, String uri) {
        //获取公司内容
        Company company = CompanyService.getCompany();
        request.setAttribute("IndexCompany", company);
        //获取首页展示产品信息
        List<Pro> Pros = ProService.selectPro();
        request.setAttribute("IndexProductInfo", Pros);
        return new ModelAndView(uri);
    }
}

@RestController
@RequestMapping("/product")
public class HomePageController extends BaseController{
    @Autowired
    private CompanyService CompanyService;
    @Autowired
    private ProService ProService;
    @RequestMapping()
    public ModelAndView getNew(HttpServletRequest request) {
        //获取公司内容
        return getData(request, response, "product");
    }
}

6、你可以让前端把返回路径传给你。