码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC之数据传递一

时间:2018-04-07 22:49:05      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:gpo   post   private   ide   mode   简单的   splay   获取   one   

之前的博客中也说了,mvc中数据传递是最主要的一部分,从url到Controller、从view到Controller、Controller到view以及Controller之间的数据传递。今天主要学习数据传递到Controller的几种方式.

一、从url传递

1.@RequestParam的使用

常见的url中会是?name=XXX&pwd=XXX的这种,如果想获取name,pwd,可以使用.@RequestParam。假如参数是可选参数,可以设置required=false,默认是true,value也要与url的对应。

    @RequestMapping(value="/index.do")
    public ModelAndView login(HttpServletRequest request,HttpServletResponse response,@RequestParam("name")String name,@RequestParam(value="pwd",required=false) String pwd){
        ModelAndView modelAndView = new ModelAndView("Index");
        System.out.println("name:"+name+" pwd:"+pwd);
        return modelAndView;
        }

技术分享图片

2.@PathVariable的使用

有的url的格式是url/param1/param2这种,这种获取值可以使用.@PathVariable。

    @RequestMapping(value="/login/{name}/{pwd}",method=RequestMethod.GET)
    public ModelAndView login1(HttpServletRequest request,HttpServletResponse response,@PathVariable("name") String name,@PathVariable("pwd") String pwd){
        ModelAndView modelAndView = new ModelAndView("Index"); 
        System.out.println("name:"+name+" pwd:"+pwd);
        return modelAndView;
        }

 技术分享图片

上面两种传递值得方式也打印出了日志.第一个打印出了name,密码为null,第二种方式打印了name和pwd.

技术分享图片

二、从view传递

这里主要用form表单演示。

技术分享图片
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>

<form id="form1" name="myform" method="post" action="../../login.do" >
      用户:<input type="text" name="name"/>
      密码:<input type="password" name="pwd"/>
      <input type="submit"/>
 </form>
</body>
</html>
View Code

1.直接将请求参数名作为Controller中方法的形参

这里在Controller中设置参数是页面form表单控件的name属性。

    @RequestMapping(value="/login.do",method=RequestMethod.POST)
    public ModelAndView login2(HttpServletRequest request,HttpServletResponse response,String name,String pwd){
        ModelAndView modelAndView = new ModelAndView("Index"); 
        System.out.println("name:"+name+" pwd:"+pwd);
        return modelAndView;
        }

2.使用Pojo对象(就是封装的类,类中封装的字段作为参数)绑定请求参数值,原理是利用Set的页面反射机制找到User对象中的属性

这个使用pojo有点类似之前学的,我们可以定义一个User类,然后Controller的参数类型是User.form表单的action这里要注意下要设置成action="../../login3.do".

技术分享图片
package com.cyw.web.model;

public class User {
    private String name;
    private String pwd;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }


}
View Code
    @RequestMapping(value="/login3.do")
    public ModelAndView login3(HttpServletRequest request,HttpServletResponse response,User user){
        ModelAndView modelAndView = new ModelAndView("Index"); 
        System.out.println("name:"+user.getName()+" pwd:"+user.getPwd());
        return modelAndView;
        }

3.使用原生的Servlet API 作为Controller 方法的参数

不仅是通过view传到Controller,url传参数到Controller也一样.既然有HttpServletRequest,我们可以通过request对象获取相关参数。

        String username=request.getParameter("name");
        System.out.println("username:"+username);

三、小结

今天主要介绍了往Controller传参数的几种方法,而且参数类型都是简单的数据类型,在以后的博客中会介绍传递其他数据类型的参数以及Controller向view传递数据等内容。

SpringMVC之数据传递一

标签:gpo   post   private   ide   mode   简单的   splay   获取   one   

原文地址:https://www.cnblogs.com/5ishare/p/8734825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!