Spring MVC入门学习—参数传递以及页面跳转

目录

一、参数传递:

(一)View—Controller

方式一:提交的域名称和处理方法的参数名一致

 方式二:提交的域名称和处理方法的参数名不一致

 方法三:提交的是一个对象

 (二)Controller—View

第一种 : 通过ModelAndView(不常用)

第二种 : 通过ModelMap(不常用)

第三种 : 通过Model(常用)

二、页面跳转 

1、 请求转发页面

2、转发action

3、重定向页面

4、重定向action


一、参数传递:

(一)View—Controller

方式一:提交的域名称和处理方法的参数名一致

提交数据 : http://localhost:8080/hello?name=梁三岁

处理方法 :springMVC自动获取参数名为name的参数值,并赋值给处理方法的同名参数

@Controller
public class DemoOneController {
    Logger logger= Logger.getLogger(DemoOneController.class);
    @RequestMapping("/demo1.action")
    public String demo1(String name){
        logger.info("进入demo1的参数是:"+name);
        return "login";
    }
}

 Spring MVC入门学习—参数传递以及页面跳转_第1张图片

 方式二:提交的域名称和处理方法的参数名不一致

提交数据 : http://localhost:8080/hello?username=梁三岁

处理方法 :使用注解@RequestParam(“指定请求参数名”)修饰处理方法的参数,表示获取指定名字参数赋值给他所有修饰的方法

@RequestParam表示参数,默认非空

    @RequestMapping("/demo2.action")
    public String demo2(@RequestParam String name){
        logger.info("进入demo2的参数是:"+name);
        return "login";
    }

如果在地址栏不写参数, 则会报错,如下:

Spring MVC入门学习—参数传递以及页面跳转_第2张图片

在地址栏输入参数name=梁三岁,在控制台就会输出地址栏提交的参数值 

 Spring MVC入门学习—参数传递以及页面跳转_第3张图片

 

 方法三:提交的是一个对象

要求提交的表单域和对象的属性名一致 , 参数使用对象即可,但是有一个要求就是我们需要保持参数名和对象属性名称一样,SpringMVC自动为我们重前端请求地址获取参数值,按照参数的name属性为我们对象相同属性名注入(说白了就是使用set注入)

 实体类

package com.lss.po;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : 梁三岁
 * @name :用户实体类
 * @create 2022/8/31 20:40
 */
public class User {

    private String name;

    private String pass;

    public User() {
    }

    public User(String name, String pass) {
        this.name = name;
        this.pass = pass;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
}
    @RequestMapping("/demo3.action")
    public String demo3(User user){
        logger.info("进入demo3的参数是:"+user.getName()+"\t"+user.getPass());
        return "login";
    }

 

 (二)Controller—View

第一种 : 通过ModelAndView(不常用)

    @RequestMapping("/demo5.action")
    public ModelAndView demo5(String name,String pass){
        //创建ModelAndView对象
        ModelAndView modelAndView = new ModelAndView();
        //把用户名、密码放入作用域
        modelAndView.addObject("name",name);
        modelAndView.addObject("pass",pass);
        //设置视图
        modelAndView.setViewName("userInfo");
        return modelAndView;
    }

第二种 : 通过ModelMap(不常用)

    @RequestMapping("/demo6.action")
    public String demo6(@RequestParam("name") String name,@RequestParam("pass") String pass, ModelMap model){
        model.addAttribute("name",name);
        model.addAttribute("pass",pass);
        return "userInfo";
    }

第三种 : 通过Model(常用)

    @RequestMapping("/demo7.action")
    public String demo7(@RequestParam("name") String name, @RequestParam("pass") String pass, Model model){
        model.addAttribute("name",name);
        model.addAttribute("pass",pass);
        return "userInfo";
    }

三种方式对比:

Model只有几个方法适用与存储数据

ModelMap继承与LinkedHashMap

ModelAndView 即可以存储数据,又可以设置返回视图层,控制视图跳转逻辑

一般情况下我们都是使用Model

二、页面跳转 

分为请求转发和重定向

衍生出四种是:

  • 请求转发页面,
  • 转发action,
  • 重定向页面,
  • 重定向action

1、 请求转发页面

 @RequestMapping("/one.action")
    public String one(){
        System.out.println("这是请求转发页面跳转.........");
        return "main";  //默认是请求转发,使用视图解析器拼接前缀后缀进行页面跳转
    }

2、转发action

    @RequestMapping("/two.action")
    public String two(){
        System.out.println("这是请求转发action跳转.........");
        //forward: 这组字符串可以屏蔽前缀和后缀的拼接.实现请求转发跳转
        return "forward:/other.action";  //默认是请求转发,使用视图解析器拼接前缀后缀进行页面跳转
    }

3、重定向页面

    @RequestMapping("/three.action")
    public String three(){
        System.out.println("这是重定向页面.......");
        //redirect:  这组字符串可以屏蔽前缀和后缀的拼接.实现重定向跳转
        return "redirect:/admin/main.jsp";
    }

4、重定向action

    @RequestMapping("/four.action")
    public String four(){
        System.out.println("这是重定向action.......");
        //redirect:  这组字符串可以屏蔽前缀和后缀的拼接.实现重定向跳转
        return "redirect:/other.action";
    }

你可能感兴趣的:(spring,mvc,学习)