@RequestMapping注解获取浏览器参数的方法与@RequestParam、@RequestHeader、@CookieValue的使用方法笔记

package com.atguigu.Controller;

import com.atguigu.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.*;
import java.io.UnsupportedEncodingException;

/*
获取请求参数的方式:
1.通过ServletAPI获取
只需要在控制器方法的形参位置设置HttpServletRequest类型的形参,
就可以在控制器方法中使用request对象获取请求参数
2.通过控制器方法的形参获取
只需要在控制器方法的形参位置,设置一个形参,形参的名字和请求参数的名字需要一致
3.@RequestParam:将请求参数和控制器方法的形参绑定
@RequestParam注解的三个属性:value,required,defaultvalue
value:设置和形参绑定的请求参数的名字
required:设置是否必须传输value所对应的请求参数,
          默认值为true,表示value所对应的请求参数必须传输,否则页面报错:
          400 - Required String parameter 'xxx' is not present
          若设置false,则表示value所对应的请求参数不是必须传输,若不传输,则形参值为null
defaultvalue:设置没有传输value所对应的请求参数时,为形参设置的默认值,此时和required属性值无关
4.@RequestHeader:将请求头信息和控制器方法的形参绑定
5.@CookieValue:将Cookie数据和控制器方法的形参绑定
6.通过控制器方法的实体类类型的形参获取请求参数
需要在控制器方法的形参位置设置实体类类型的形参,要保证实体类中的属性名和请求参数的名字一致
可以通过实体类的类型的形参获取请求参数

 */
@Controller
public class TestParmContriller{

//    1.第一种获取浏览器参数方法
@RequestMapping("/param/servletAPI")
    public String getParamByServletAPI(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse){
    String username = httpServletRequest.getParameter("username");
    String password = httpServletRequest.getParameter("password");
    System.out.println("username="+username+",password="+password);
    HttpSession session = httpServletRequest.getSession();
    return "success";
}
//  2.第二种获取浏览器参数方法
//@RequestMapping("/param")
//    public String getParam(HttpServletRequest request, String username, Integer password) throws UnsupportedEncodingException {
//    request.setCharacterEncoding("UTF-8");
//    System.out.println("username="+username+",password="+password);
//    return "success";
//}
//
//3.第三种获取浏览器参数方法
    @RequestMapping("/param")
    public String getParam( @RequestParam(value = "userName",required = true,defaultValue = "root") String username,
                            Integer password
                            ,@RequestHeader("referer") String referer
                            ,@CookieValue("JSESSIONID") String jsessionId
    ) {
        System.out.println("jsessionId="+jsessionId);
        System.out.println("referer="+referer);
        System.out.println("username="+username+",password="+password);
        return "success";
    }

//4.
    @RequestMapping("/param/pojo")
    public String getParamByPojo(User user){

        System.out.println("User="+user);
    return "success";
    }
}

/*
获取请求参数的方式:
1.通过ServletAPI获取
只需要在控制器方法的形参位置设置HttpServletRequest类型的形参,
就可以在控制器方法中使用request对象获取请求参数
2.通过控制器方法的形参获取
只需要在控制器方法的形参位置,设置一个形参,形参的名字和请求参数的名字需要一致
3.@RequestParam:将请求参数和控制器方法的形参绑定
@RequestParam注解的三个属性:value,required,defaultvalue
value:设置和形参绑定的请求参数的名字
required:设置是否必须传输value所对应的请求参数,
          默认值为true,表示value所对应的请求参数必须传输,否则页面报错:
          400 - Required String parameter 'xxx' is not present
          若设置false,则表示value所对应的请求参数不是必须传输,若不传输,则形参值为null
defaultvalue:设置没有传输value所对应的请求参数时,为形参设置的默认值,此时和required属性值无关
4.@RequestHeader:将请求头信息和控制器方法的形参绑定,其中的属性与@RequestParam注解的三个属性使用方法一样。
5.@CookieValue:将Cookie数据和控制器方法的形参绑定,其中的属性与@RequestParam注解的三个属性使用方法一样。
6.通过控制器方法的实体类类型的形参获取请求参数
需要在控制器方法的形参位置设置实体类类型的形参,要保证实体类中的属性名和请求参数的名字一致
可以通过实体类的类型的形参获取请求参数

 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值