Spring Boot學習(四)Controller接收請求參數

Spring Boot學習(四)Controller接收請求參數

一、通過實體Bean接收請求參數

通過實體Bean來接收請求參數,適用於get和post方式,Bean的屬性名稱必須與請求參數名稱相同。

項目結構如下:

1.Bean代碼如下:

package com.example.beans;

public class Student {
    private int id;
    private String name;
    private String pwd;
//省略get和set
}

2.表單頁面如下 mytest.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Controller接收請求參數</title>
</head>
<body>
<form action="/test/test1" method="post">
    姓名:<input type="text" name="name">
    <br/><br/>
    密碼:<input type="password" name="passwd">
    <br/><br/>
    <input type="submit" value="確定"/>
</form>
</body>
</html>

3.控制器代碼如下:

@Controller
public class MyTest {

    @RequestMapping(value = "/test/login")
    public String test1(){
        return "/test/mytest";
    }

    @RequestMapping(value = "/test/test1",method=RequestMethod.POST)
    public String login(Student stu, Model model){
        model.addAttribute("stu",stu);
        return "/test/result";
    }
}

4.顯示結果頁面result.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>所有學生信息</title>
</head>
<body>
<h4 th:text="${stu.getName()}"></h4>
</body>
</html>

二、通過方法的參數接收

通過處理方法的形參接收請求參數,也就是直接把表單參數寫在控制器類相應方法的形參中,即形參名稱與請求參數名稱完全相同。該接收參數方式適用於get和post提交請求方式。

@RequestMapping(value="/test/test2",method = RequestMethod.POST)
    public String login(String name, String password, Model model){
        model.addAttribute("name",name);
        return "/test/result";
    }

三、通過HttpServletRequest接收請求參數

通過HttpServletRequest接收請求參數,適用於get和post提交請求方式

@RequestMapping(value="/test/test3",method=RequestMethod.POST)
    public String login(HttpServletRequest req,Model model){
        String name=req.getParameter("name");
        model.addAttribute("name",name);
        return "/test/result";
    }

四、通過@PathVariable接收URL中的請求參數

通過 @PathVariable 可以將 URL 中佔位符參數綁定到控制器處理方法的入參中:URL 中的 {xxx} 佔位符可以通過@PathVariable("xxx") 綁定到操作方法的入參中。

http://localhost:8080/test/test4/張三丰
@RequestMapping(value = "/test/test4/{name}",method = RequestMethod.GET)
    @ResponseBody
    public String test4(@PathVariable String name){
        return name;
    }

五、通過@RequestParam接收請求參數

@RequestMapping("/test/test5")
    @ResponseBody
    public String test5(@RequestParam String name,@RequestParam String passwd){
        return name;
    }

通過@RequestParam接收請求參數與通過處理方法的形參接收請求參數的區別是:當請求參數名與接收參數名不一致時,通過處理方法的形參接收請求參數不會報404錯誤,而通過@RequestParam接收請求參數會報404錯誤。

六、通過@ModelAttribute接收請求參數

@RequestMapping("/test/test6")
    public String test6(@ModelAttribute("stu") Student stu){
        return "/test/result";
    }

@ModelAttribute註解放在處理方法的形參上時,用於將多個請求參數封裝到一個實體對象,從而簡化數據綁定流程,而且自動暴露爲模型數據,於視圖頁面展示時使用。而“通過Bean接收請求參數”只是將多個請求參數封裝到一個實體對象,並不能暴露爲模型數據(需要使用model.addAttribute語句才能暴露爲模型數據)。

視圖層代碼如下:

<h4 th:text="${stu.getName()}"></h4>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章