之前用過servlet開發頁面,用Springmvc開發了接口,不過那時候懵懵懂懂,也沒有時間去總結。此次使用SprintBoot + thyemleaf進行頁面開發也磕磕碰碰,不過好在經過網絡查資料後,弄懂了部分,後面繼續學。 其實有時候也迷茫,我是測試,開發學好了真的有用嗎?其實平時工做中並不須要我採用SpringBoot這麼潮流的架構,惟一的好處就是白盒測試效率比對代碼只知其一;不知其二的人高。html
廢話很少說,正式進入主題。java
SpringBoot 開發接口的幾種方式:json
1. @RestController + @RequestMapping. 返回結果是json格式String。好比網絡
@RestController
public class caseAction{
@RequestMapping("/singleRun") public ArrayList<TestCase> executeSingleCase(String projectName, String caseName, String pageSize, String pageNum){ int pageSizeTemp = StringUtils.isBlank(pageSize) == true ? 10 : Integer.parseInt(pageSize); int pageNumTemp = StringUtils.isBlank(pageNum) == true ? 1 : Integer.parseInt(pageNum); Result result = new Result(); ArrayList<TestCase> caseList = caseService.executeSingleCase(projectName, caseName, pageSizeTemp, pageNumTemp ,result); FileUtils.writeLog(projectName, result); return caseList; }
}
2. @Controller + @RequestMapping + @ResponseBody架構
@Controller public class caseAction{ @RequestMapping("/singleRun") @ResponseBody public ArrayList<TestCase> executeSingleCase(String projectName, String caseName, String pageSize, String pageNum){ return caseList; } }
3. 採用@Controller+ModelAndViewmvc
@Controller public class caseAction{ @RequestMapping("/singleRun") public ModelAndView executeSingleCase(String projectName, String caseName, String pageSize, String pageNum){ ......... ModelAndView mv = new ModelAndView(); mv.addObject("caseList",caseList) return caseList; } }
這幾種方式最後經過頁面訪問(get請求),返回的都是json格式String,若是要讓其顯示在模版裏,就須要thyemleaf。例如app
@Controller public class ProjectAction { @Resource private ProjectService proService; @RequestMapping("/") public String index(RedirectAttributes attributes) { return "redirect:/project/listProject"; } @RequestMapping("/project/listProject") public String queryAll(HttpServletRequest request){ Result result = new Result(); ArrayList<Project> projectList = proService.queryAll(result); FileUtils.writeLog("wali-autoTestPlat",result); request.setAttribute("projectList",projectList); return "project"; } }
因爲沒有用@RestController,也沒有用@ResponseBody,因此index方法不會轉化爲json格式。 這時候就會按照redirect:/project/listProject 跳轉到路徑爲/project/listProject的方法(也就是queryAll)方法,若是返回結果轉了json,那redirect不會生效,也就是不會跳轉其餘方法。若是返回"project",那麼就會去默認的模版目錄下(resources/templates)找project.html文件,若是沒找到就會報錯。 若是不返回值,那就會拿路徑(/project/listProject)去默認的模板目錄下找。本篇暫時到這,下一篇正式講到thyemleaf