SpringMVC-请求参数的绑定和常用注解

基本类型和String类型作为参数

<a href = "test/testString?userName=aa">测试字符串</a>

@Controller
@RequestMapping("/test")
public class test{
    @RequestMapping("testString")
    public String testString(String userName){
        System.out.println("执行了");
        return "success";
    }
}

POJO类型作为参数

<form action="/test/testUser" method="post">
    姓名:<input type="text" name="userName"><br>
    年龄:<input type="text" name="age"><br>
    生日:<input type="text" name="date"><br>
    <input type="submit" value="提交">
</form>

@Data
public class User{
    private String userName;
    private String age;
    private String date;
}

@Controller
@RequestMapping("/test")
public class test{
    
    @RequestMapping("/testUser")
    public String testUser(User user){
        System.out.println(user.toString());
        return "success";
    }
}

POJO类中包含集合类型参数

<form action="/test/testUserMap" method="post">
    姓名:<input type="text" name="userName"><br>
    年龄:<input type="text" name="age"><br>
    日期:<input type="text" name="date"> <br>
    账户4名称:<input type="text" name="accountMap['two'].name" ><br/>
    账户1名称:<input type="text" name="accounts[0].name" ><br/>
    <input type="submit" value="提交"/>
</form>

@Controller
@RequestMapping("/test")
public class test{
    
    @RequestMapping("/testUserMap")
    public String testUserMap(User user){
        System.out.println(user);
        return "success";
    }
}

使用ServletAPI对象作为方法参数

<a href="test/testServletAPI">测试原生Servlet</a>

@Controller
@RequestMapping("test")
public class test{

    @RequestMapping("testServletAPI")
    public String testServletAPI(HttpServletRequest request,HttpServletResponse response,HttpSession session){
        System.out.println(request);
         System.out.println(response);
        System.out.println(session);
    }
}

常用注解

@RequestParam

<a href="test/testRequestParam?name=test">测试请求参数绑定</a>


@Controller
@RequestMapping("/test")
public class test{
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value="name") String userName){
      System.out.println(userName);
        return "success";  
    }
}

@RequestBody

<form action="test/testRequestBody" method="post">
    姓名:<input type="text" name="userName"><br>
    年龄:<input type="text" name="age"><br>
    日期:<input type="text" name="date"><br>
    <input type="submit" value="提交"/>
</form>

@Controller
@RequestMapping("/test")
public class test{
    @RequestMapping("testRequestBody")
    public String testRquestBody(@RequestBody String body){
        System.out.println(body);
        return "success";
    }

}

@PathVaribale 适用于restful风格的,含义就是路径是一样的,根据入参类型不同,请求到不到接口上

<a href="/test/testPathVaribale/100">测试请求路径</a>


@Controller
@RequestMapping("test")
public class test{
    @RequestMapping("testPathVaribale/{id}")
    public String testParhVaribale(@PathVaribale("id") Integer id){
        System.out.println("id"+id);
        return "success";
    }

}

@RequestHeader

<a href="test/testRequestHeader">测试请求Header</a>

@Controller
@RequestMapping("test")
public class test{
    @RequestMapping("testRequestHeader")
    public String testRequestHeader(@RequestHeader(value="Accept-Language" String RequestHeader)){
    System.out.printlin("Accept-Language"+Accept-Language);
    return "success";
    }

}

@CookieValue

<a href="test/testCookieValue">测试cookie</a>

@Controller
@RequestMapping("test")
public class test{
    @RequestMapping("testCookieValue")
    public String testCookieValue(@CookieValue(value="JSESSIONID" String CookieValue)){
    System.out.printlin("CookieValue"+CookieValue);
    return "success";
    }

}

@ModelAttribute

@SessionAttribute   这个注解必须加载类上面

<a href="test/testSaveSession">保存到session域中</a>

@Controller
@RequestMapping("test")
@SessionAttribuate(value={"userName","age"})
public class test{

    @RequestMapping("testSaveSession")
    public String testSaveSession(Model model){
        System.our.println("像session域中保存数据");
        model.addAttribute("userName","hh");
        model.addAttribute("age","20");
         return "success";
    }
}
<a href="test/testFindSession">测试从session中获取</a>

@Controller
@RequestMapping("test")
@SessionAttribute(value={"userName","age"})
public class test{
    @RequestMapping("testFindSession")
    public String testFindSession(ModelMap modelMap){
       String userName =(String)modelMap.get("userName");
        String age =(String)modelMap.get("age");
        return "success";
    }
}
<a href="test/testDeleteSession">测试从session域中删除</a>

@Controller
@RequestMapping("test")
@SessionAttribute(value={"userName","age"})
public class test{
    @RequestMapping("testDeleteSession")
    public String testDeleteSession(SessionStatus sessionStatus){
        sessionStatus.setComplete();
        System.out.println("清除session");
    }
    
}

发布了311 篇原创文章 · 获赞 58 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_30353203/article/details/103470681