RequestParam注解以及将ServletAPI作为入参

一. RequestParam注解

我们之前在使用Servlet的时候,会传递多个参数,使用request.getParameter(参数名)的方式在Servlet中接收请求参数,那么SpringMVC有这么麻烦吗?肯定是没有的,SpringMVC为参数的获取进行了封装,使得获得请求参数非常简便。

/**
	 * 	在请求处理器的目标方法中,通过入参就可以获取请求参数的信息
	 * 		- 约定:目标方法入参参数名和 请求参数名称一致,就会自动匹配
	 * 		- 指定方式:使用@ReuqestParam注解指定匹配的请求参数名称
	 * 				此种情况下,如果没有对应的指定的请求参数,则会报错,
	 * 					- 我们可以使用required=false属性表示参数非必须,如果获取不到非必须的参数,会设置为null
	 * 					- defaultValue 表示设置默认值
	 * 	在required=false 情况下,如果参数没有传递,会赋值为null 但是基本数据类型不能为null,所以在开发中,我们一般使用对应的包装类来接收参数,比如Integer 可以为 null 而 int 不能为null
	 *	大家也可以发现,我们的SpringMVC会将请求参数自动的进行类型转换:
	 *		String --- > Integer 
	 *	这是因为SpringMVC已经定义好了很多的类型转换器,能够对常见的类型进行转换。	
	 *		
	 * @param name
	 * @param age
	 * @return 
	 */
	@RequestMapping("testParam")
	public String testParam(@RequestParam(value="name",required=false) String username,@RequestParam(value="age",required=false) Integer userage) {
		System.out.println("name:" + username + ",age:" + userage);
		System.out.println("testParam...");
		return SUCCESS;
	}
二. RequestHeader注解

@RequestHeader注解用来获取请求头信息

/**
	 * 	和 @RequestParam 获取请求参数一样,使用@RequestHeader可以获取请求头信息
	 * @param connection
	 * @return
	 */
	@RequestMapping("testRequestHeader")
	public String testRequestHeader(@RequestHeader(value="Connection") String connection) {
		System.out.println("testRequestHeader..."+connection);
		return SUCCESS;
	}
三. CookieValue注解

使用@CookieValue可以获取Cookie信息

/**
	 * 	@CookieValue 用来获取cookie 的值
	 * 		- value = "cookie名称"
	 *	Object value 对应的Cookie名称的值赋值的变量作为处理器目标方法的入参
	 * @param value
	 * @return
	 */
	@RequestMapping("testCookie")
	public String testCookie(@CookieValue("JSESSIONID") Object value) {
		System.out.println(value.toString());
		return SUCCESS;
	}
四. 使用实体类对象作为参数
/**
	 * 	对于新增或修改时,表单传递的参数很多,实际上都能够对应到实体类的属性,对于接收表单参数
	 * 		- request.getParameter() : 原生开发使用
	 * 		- @RequestParam注解 : 之前讲解的SpringMVC接收参数
	 * 		以上两种做法在表单提交的参数数量较多的情况下,不适用,最终的解决方案
	 * 		- 使用实体类作为处理器目标方法的入参:SpringMVC会将对应实体类JavaBean风格属性名的参数自动的封装到实体类的属性上
	 * 		
	 * @param stuName
	 * @param stuGender
	 * @param stuAge
	 * @return
	 */
	@RequestMapping("testRequestPOJO")
	public String testRequestPOJO(Student student) {
		System.out.println(student);
		return SUCCESS;
	}
五. 将ServeltAPI作为入参

ServletAPI在SpringMVC开发中,使用较少,当然也有特殊情况会使用到,比如在Handler中域对象信息。

	/**

  * 获取ServletAPI 只需要在处理器的目标方法入参直接声明所需要获取的对象即可
    * @param request
     * @param response
     * @param session
     * @return
       */
       @RequestMapping("/testServletAPI")
       public String testServletAPI(HttpServletRequest request,HttpServletResponse response,HttpSession session) {
	System.out.println(session.getId());
	
	return SUCCESS;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值