SpringMVC处理请求数据,请求参数 cookie信息 请求头信息 ModelAndView Model…..

请求处理方法签名:
1) Spring MVC 通过分析处理方法的签名(方法名+ 参数列表),HTTP请 求信息绑定到处理方法的相应形参中。
2) Spring MVC 对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。
3) 必要时可以对方法及方法入参标注相应的注解( @PathVariable 、@RequestParam、@RequestHeader 等)、
4) Spring MVC 框架会将 HTTP 请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。

在SpringMVC 获取客户端传递的数据的方式:

1、在处理请求的方法中,加入相对应的形参,保证形参参数名和传递的数据的参数名保持一致,就可以自动赋值。
2、通过@RequestParam

package com.blh.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.blh.bean.User;

@Controller
public class ParamController {
	/*
	 * 在SpringMVC 获取客户端传递的数据的方式:
	 * 1、在处理请求的方法中,加入相对应的形参,保证形参参数名和传递的数据的参数名保持一致,就可以自动赋值
	 * @RequestParam:
	 * 			value:设置参数的别名,当不满足赋值条件时,可以使用此属性来指定映射关系
	 * 			required:设置形参是否必须被赋值,默认为true必须赋值,若设置为false则会默认赋值为null。
	 * 			defaultValue:当形参的值为null时,则给其设置一个默认值(分页和模糊查询中可用到)
	 * 
	 * @RequestHeader:在处理请求的方法上,获取请求头的信息,用法同上
	 * 
	 * @CookieValue:在处理请求的方法上,获取cookie的信息,用法同上
	 */
	
//	@RequestMapping(value = "/param",method = RequestMethod.POST)
//	public String param(@RequestHeader("Accept-Language")String AcceptLanguage,String username,@RequestParam(value="pwd",required = false,defaultValue = "admin")String password,String age) {
//		System.out.println("AcceptLanguage="+AcceptLanguage+"username:"+username+",password:"+password+",age:"+age);
//		return "success";
//	}
	
	
	/*
	 * @RequestMapping(value = "/param",method = RequestMethod.POST) public String
	 * param1(@CookieValue("JSESSIONID")String JSESSIONID) {
	 * System.out.println("JSESSIONID:"+JSESSIONID); return "success"; }
	 */
	
	/*
	 * 可以使用pojo获取客户端数据,要求实体类对象中的属性名一定要与页面表单元素的name属性值一致,而且支持级联关系(也就是可以通过类.属性名)
	 * 
	 * 可以通过设置形参的方式来获取servletAPI
	 */
	
	/*
	 @RequestMapping(value = "/param",method = RequestMethod.POST)
	public String param(User user,HttpServletRequest request,HttpServletResponse response) {
		String username = request.getParameter("username");
		System.out.println("User:"+user);
		System.out.println(username);
		return "success";
	}
	 */
	
	/*
	 * SspringMVC处理请求过程中,往作用域中放值有以下三种方式
	 * 总结:根据ModelAndView的源码调试,不管使用哪种方式,最终都会把Model数据和View数据封装到一个ModelAndView中
	 */
	
	//第一种方式使用ModelAndView给作用域赋值(标准方式)
	/*
	 @RequestMapping(value = "/param",method = RequestMethod.POST)
	public ModelAndView param() {
		ModelAndView mav = new ModelAndView();
		mav.addObject("username","root");//往request作用域中放值
		mav.setViewName("success");//设置视图名称,实现页面跳转
		return mav;
	}
	 */
	
	//第二种赋值方式(底层也是跟ModelAndView的实现一样)
	/*
	 @RequestMapping(value = "/param",method = RequestMethod.POST)
	public String param(Map<String, Object> map) {
		map.put("username", "admin");//向作用域中放值
		return "success";//放回视图名称
	}
	 */
	
	
	//第三种方式(底层也是封装成一个ModelAndView)
	@RequestMapping(value = "/param",method = RequestMethod.POST)
	public String param(Model model) {
		model.addAttribute("username", "bsq");//向作用域中放值
		return "success";//放回视图名称
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值