SpringMVC-使用POJO作为参数&使用Servlet原生API作为参数

SpringMVC

RequestParam 注解 请求值

  • 在这里插入图片描述

  • 新建一个testRequestParam方法

    • /**
      	 * @RequestParam 来映射请求参数. 
      	 * value 值即请求参数的参数名 
      	 * required 该参数是否必须. 默认为 true
      	 * defaultValue 请求参数的默认值
      	 */
      	@RequestMapping(value="/testRequestParam")
      	public String testRequestParam(@RequestParam(value="username") String un,
      			@RequestParam(value="age",required = false,defaultValue = "0") int age) {
      		System.out.println("testRequestParam, username: "+un+", age: "+age);
      		return SUCCESS;
      	}
      
  • 在index.jsp中新建一个超链接

    • <a href="springmvc/testRequestParam?username=atguigu&age=11">Test RequestParam</a>
      	<br><br>
      
  • 当查询http://localhost:8080/springmvc-1/springmvc/testRequestParam?username=atguigu

    时控制台输出默认值

    testRequestParam, username: atguigu, age: 0

    当查询http://localhost:8080/springmvc-1/springmvc/testRequestParam?username=atguigu&age=10

    时控制台输出testRequestParam, username: atguigu, age: 10


RequestHeader 注解 请求头

  • 新建一个testRequestHeader方法

  • /**
    	 * 了解: 映射请求头信息 用法同 @RequestParam
    	 */
    	@RequestMapping("/testRequestHeader")
    	public String testRequestHeader(@RequestHeader(value="Accept-Language") String al) {
    		System.out.println("testRequestHeader,Accept-Language:"+al);
    		return SUCCESS;
    	}
    
  • 新建一个超链接

    • <a href="springmvc/testRequestHeader">Test RequestHeader</a>
      	<br><br>
      
  • 点击超链接 出现success Page页面 控制台打印 testRequestHeader,Accept-Language:zh-CN


CookieValue 注解

  • 在这里插入图片描述

  • 新建一个testCookieValue方法

    • /**
      	 * 了解:
      	 * 
      	 * @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam
      	 */
      	@RequestMapping("/testCookieValue")
      	public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
      		System.out.println("testCookieValue:sessionId:"+sessionId);
      		return SUCCESS;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testCookieValue">Test CookieValue</a>
      	<br><br>
      
  • 页面转到success Page 控制台打印 2FBB0E0D12F98FC56083FA4153FEB218


使用POJO作为参数

  • 在这里插入图片描述

  • 新建一个com.atguigu.springmvc.entities包 包里面有Address和User两个类

    Address中有私有属性 province和city 并填上get和set方法 重写toString方法

    User中有私有属性username,password,email,age,address 填上get和set方法 并重写toString方法

  • 新加一个testPojo方法

    • /**
      	 * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。
      	 * 如:dept.deptId、dept.address.tel 等
      	 */
      	@RequestMapping("/testPojo")
      	public String testPojo(User user) {
      		System.out.println("testPojo: " + user);
      		return SUCCESS;
      	}
      
  • 新加一个表单

    • <form action="springmvc/testPojo" method="post">
      		username: <input type="text" name="username"/>
      		<br>
      		password: <input type="password" name="password"/>
      		<br>
      		email: <input type="text" name="email"/>
      		<br>
      		age: <input type="text" name="age"/>
      		<br>
      		city: <input type="text" name="address.city"/>
      		<br>
      		province: <input type="text" name="address.province"/>
      		<br>
      		<input type="submit" value="Submit"/>
      	</form>
      	<br><br>
      
  • 在表单上填上如图所示的值

    • 在这里插入图片描述

    控制台返回

    testPojo: User [username=xuefeng, password=1234, email=a@AAA, age=12, address=Address [province=sss, city=aaa]]


使用Servlet原生API作为参数

  • 在这里插入图片描述

  • 新建一个testServletAPI方法

    • /**
      	 * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型
      	 * 
      	 * HttpServletRequest 
      	 * HttpServletResponse 
      	 * HttpSession
      	 * java.security.Principal 
      	 * Locale InputStream 
      	 * OutputStream 
      	 * Reader 
      	 * Writer
      	 * @throws IOException 
      	 */
      	@RequestMapping("/testServletAPI")
      	public String testServletAPI(HttpServletRequest request,
      				HttpServletResponse response) {
      		System.out.println("testServletAPI ,"+request +","+response);
      		return SUCCESS;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testServletAPI">Test ServletAPI</a>
      	<br><br>
      
  • 点击超链接 控制台出现

    testServletAPI ,org.apache.catalina.connector.RequestFacade@9b71fb0,org.apache.catalina.connector.ResponseFacade@4718bb84

  • 改进testServletAPI方法

    • @RequestMapping("/testServletAPI")
      	public void testServletAPI(HttpServletRequest request,
      				HttpServletResponse response,Writer out) throws IOException {
      		System.out.println("testServletAPI ,"+request +","+response);
      		out.write("hello springmvc");
      //		return SUCCESS;
      	}
      
  • 点击超链接 页面打印hello springmvc


处理模型数据之ModelAndView

  • 在这里插入图片描述

  • 新建一个testModelAndView方法

    • /**
      	 * 目标方法的返回值可以是 ModelAndView 类型。 
      	 * 其中可以包含视图和模型信息
      	 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 request 域对象中. 
      	 * @return
      	 */
      	@RequestMapping("/testModelAndView")
      	public ModelAndView testModelAndView() {
      		String 	viewName=SUCCESS;
      		ModelAndView modelAndView=new ModelAndView(viewName);
      		//添加模型数据到ModelAndView中
      		modelAndView.addObject("time",new Date());
      		return modelAndView;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testModelAndView">Test ModelAndView</a>
      	<br><br>
      
  • 向success.jsp中添加time: ${requestScope.time}

  • 点击超链接 出现此页面

    在这里插入图片描述


处理模型数据之Map

  • 在这里插入图片描述

  • 新建一个testMap方法

    • /**
      	 * 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数. 
      	 * @param map
      	 * @return
      	 */
      	@RequestMapping("/testMap")
      	public String testMap(Map<String,Object> map) {
      		System.out.println(map.getClass().getName());
      		map.put("names", Arrays.asList("Tom","Jerry","Mike"));
      		return SUCCESS;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testMap">Test Map</a>
      	<br><br>
      
  • 在success.jsp中加入 names:${requestScope.names}

  • 控制台打印org.springframework.validation.support.BindingAwareModelMap

    出现此页面

    在这里插入图片描述


处理模型数据之 SessionAttributes 注解

  • 在这里插入图片描述

  • 新建一个testSessionAttributes方法

    • /**
      	 * @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使用的是 value 属性值),
      	 * 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使用的是 types 属性值)
      	 * 
      	 * 注意: 该注解只能放在类的上面. 而不能修饰放方法. 
      	 */
      	@RequestMapping("/testSessionAttributes")
      	public String testSessionAttributes(Map<String,Object> map) {
      		User user=new User("xuefeng","1234","a@xuefeng.com",12);
      		map.put("user", user);
      		return SUCCESS;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testSessionAttributes">Test SessionAttributes</a>
      	<br><br>
      
  • 在success.jsp中添加

    request user:${requestScope.user}

    session user:${sessionScope.user}

  • 点击超链接 只有请求域显示了 session域没有显示

    在这里插入图片描述

    明显session user没有显示

  • 为了让session user显示 在public class SpringMVCTest{}上加上注解

    @SessionAttributes(value={“user”}, types={String.class})

    • testSessionAttributes方法 新加入一段代码

      @RequestMapping("/testSessionAttributes")
      	public String testSessionAttributes(Map<String,Object> map) {
      		User user=new User("xuefeng","1234","a@xuefeng.com",12);
      		map.put("user", user);
      		map.put("JianDuiCollection","TianJinFeng");
      		return SUCCESS;
      	}
      
      
    • success.jsp中添加

      	request JianDuiCollection:${requestScope.JianDuiCollection}
      	<br><br>
      	
      	session JianDuiCollection:${sessionScope.JianDuiCollection}
      	<br><br>
      
    • 显示页面

    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值