1. 程式人生 > >SprintBoot + thyemleaf頁面開發之一

SprintBoot + thyemleaf頁面開發之一

 

  以前用過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