SprintBoot + thyemleaf頁面開發之一
阿新 • • 發佈:2018-11-19
以前用過servlet開發頁面,用Springmvc開發了介面,不過那時候懵懵懂懂,也沒有時間去總結。這次使用SprintBoot + thyemleaf進行頁面開發也磕磕碰碰,不過好在通過網路查資料後,弄懂了部分,後面繼續學。 其實有時候也迷茫,我是測試,開發學好了真的有用嗎?其實平時工作中並不需要我採用SpringBoot這麼潮流的架構,唯一的好處就是白盒測試效率比對程式碼一知半解的人高。
廢話不多說,正式進入主題。
SpringBoot 開發介面的幾種方式:
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+ModelAndView
@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。例如
@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