Spring MVC数据处理

Spring MVC怎么提交数据和怎么将数据显示到UI层


数据提交


1 .提交的域名称和处理方法的参数名称一致即可

http://localhost:8080/data/hello.do?name=zhangsan


@RequestMapping("/hello")
    public String hello(String name){
        System.out.println(name);
        return "index.jsp";//注意是没有视图解析器的时候

    }

这种方式和Struts2相比爽很多,因为是作为方法的参数进行传递的,是一个局部变量,用过以后就被回收了,而Struts2是一个全局的变量,用了以后还在(但是对Struts2来说没有关系,因为Struts2默认是多例的,每次都会重新new一个),对Spring MVC来说是单例的(基于方法的设计)。


如何测试是否是单例:
在类上加一个构造方法(方法里写输出),测试发现无论请求几次构造方法里面的内容都只运行一次,在控制台中间部分会看到。(类会先解析,再根据请求方法处理)

public HelloController() {
        System.out.println("Hello  Constructor");
    }

2 . 如果不一致,方法参数里面用@RequestParam注解

http://localhost:8080/data/hello.do?uname=zhangsan
(必须uname,name不可以了)

@RequestMapping("/hello")
    //  uname是提交域的名字
    public String hello(@RequestParam("uname")String name){

        System.out.println(name);
        return "index.jsp";//注意是没有视图解析器的时候

    }

3 . 提交的是一个对象
(Struts2是将对象声明为属性,然后在URL输入的是对象的名称.属性)
http://localhost:8080/data/user.do?name=zhangsan&pwd=111
(要求提交的表单域名和对象的属性一致,参数使用对象即可)

    @RequestMapping("/user")
    public String user(User user){

        System.out.println(user);
        return "index.jsp";
    }   
public class User {
    private int id;
    private String name;
    private String pwd;
    //省略set/get方法,右键source快捷键

数据显示到UI层


1 . 通过ModelAndView——需要视图解析器

//相当于request.setAttribute("msg", "hello spring mvc");
    mv.addObject("msg", "hello spring mvc");
//      设置视图名
        mv.setViewName("hello");

2 .通过ModelMap(必须在方法参数里)来实现——不需要视图解析器
http://localhost:8080/data/hello2.do?name=zhangsan

@RequestMapping("/hello2")
    public String hello2(String name,ModelMap model){
        model.addAttribute("name", name);
        System.out.println(name);
        return "index.jsp";//注意是没有视图解析器的时候

    }

总结:
ModelAndView和ModelMap的区别:

  1. 相同点:两者都可以将数据封装到表示层中
  2. 不同点:ModelAndView可以指定跳转的视图名称,ModelMap不可以。ModelAndView需要配置视图解析器,ModelMap不需要
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值