java - SpringMVC如何有沒有中間件之類的東西 ?
問題描述
@RequestMapping('/admin') public String index(ModelMap modelMap,HttpServletRequest req){String scheme = req.getScheme();String serverName = req.getServerName();int serverPort = req.getServerPort();String path = req.getContextPath();String basePath = scheme+'://'+serverName+':'+serverPort+path+'/';modelMap.put('basePath',basePath);modelMap.put('adminPath', basePath+'admin/');modelMap.put('staticPath', basePath+'static/admin/common');return 'admin/index'; } @RequestMapping('/admin/login') public String login(ModelMap modelMap,HttpServletRequest req){String scheme = req.getScheme();String serverName = req.getServerName();int serverPort = req.getServerPort();String path = req.getContextPath();String basePath = scheme+'://'+serverName+':'+serverPort+path+'/';modelMap.put('basePath',basePath);modelMap.put('adminPath', basePath+'admin/');modelMap.put('staticPath', basePath+'static/admin/common');return 'admin/login'; }
獲取路徑的代碼寫了兩份 ,感覺好臃腫啊,怎么讓只寫一份,然后給共用?
問題解答
回答1:1.首先中間件概念你沒弄清楚,不能亂用2.回到你的問題,就是一個方法抽取的場景,建議看一下<<代碼重構(gòu)>>這本書
回答2:寫到filter當(dāng)中,或者用動態(tài)代理
回答3:代碼隨便重構(gòu)一下就好看多了
public String index(ModelMap modelMap,HttpServletRequest req){ String basePath = getBasePath(req); modelMap.put('basePath',basePath); modelMap.put('adminPath', basePath+'admin/'); modelMap.put('staticPath', basePath+'static/admin/common'); return 'admin/index';}private String getBasePath(HttpServletRequest req) { String scheme = req.getScheme(); String serverName = req.getServerName(); int serverPort = req.getServerPort(); String path = req.getContextPath(); String basePath = scheme+'://'+serverName+':'+serverPort+path+'/'; return basePath;}
相關(guān)文章:
1. docker-machine添加一個已有的docker主機問題2. angular.js - 為什么給 Angular 指令綁定事件無法生效3. 為什么我ping不通我的docker容器呢???4. golang - 用IDE看docker源碼時的小問題5. html5 - 使用angular中,圖片上傳功能中選擇多張圖片是怎么實現(xiàn)的?有什么好的思路嗎?6. docker - 各位電腦上有多少個容器啊?容器一多,自己都搞混了,咋辦呢?7. mysql - 詳細論述聯(lián)表查詢與分步查詢的優(yōu)缺點8. mysql - 求SQL語句9. php如何獲取訪問者路由器的mac地址10. PHP注冊功能
