本篇文章内容非常简单,主要说下传值问题。

之前两个blog都是最最基本的操作过程,本篇以及以后的所有博客都是基于前面的项目框架进行修改的,有不是很清楚的的,可以参考之前的内容。

【SpringMVC-001】idea创建SpringMVC项目傻瓜教程

【SpringMVC-002】idea创建SpringMVC项目傻瓜教程-升级版(注解版)

下面的图片是【002】blog中TestController的内容,现在的函数test默认是不含参数的,如果想要获取参数,应该怎么写呢?

【SpringMVC-003】idea创建SpringMVC项目傻瓜教程-URL传值

【1】很简单,只需要稍加修改。

public class TestController {

    //RequestMapping表示使用哪个URL来对应
    @RequestMapping({"/test","/"})
    public String test(String username){
        System.out.println("I Love China!");
        System.out.println(username);
        return "test";//test对应WEB-INF/jsp
    }
}

【2】这样就可以传递参数了,在浏览器输入:http://localhost:8080/test?username=Tom,在浏览器中输出的内容依然是test.jsp的内容,但是在idea的output窗口会打印出我们传递的username的值为Tom。

【SpringMVC-003】idea创建SpringMVC项目傻瓜教程-URL传值

【SpringMVC-003】idea创建SpringMVC项目傻瓜教程-URL传值

【3】这样一个简单的传值就结束了,但是如果我们在浏览器中输入http://localhost:8080/test,程序依然能执行,只不过在output中显示为null,其实在实际开发中,要时候是必须要传值的,这个时候 ,我们可以借助@RequestParam("username")来完成,这个函数的意思就是强制传值,如果在URL中没有传递值,那么会报错error:400.

public class TestController {

    //RequestMapping表示使用哪个URL来对应
    @RequestMapping({"/test","/"})
    public String test(@RequestParam("username") String username){
        System.out.println("I Love China!");
        System.out.println(username);
        return "test";//test对应WEB-INF/jsp
    }
【4】好了,如果现在想要把参数传递到视图呢?也非常的简单。还是稍加修改test函数就可以了(这里暂时去掉强制传值@RequestParam),先使用Map<String,Object>集合,稍后再修改成Model。

public class TestController {

    //RequestMapping表示使用哪个URL来对应
    @RequestMapping({"/test", "/"})
    public String test(String username, Map<String, Object> context) {
        System.out.println("I Love China!");
        context.put("username", username);
        System.out.println(username);
        return "test";//test对应WEB-INF/jsp
    }
}
【5】之后再修改test.jsp文件

<h1>我爱中国!!,传递的参数为:${username}</h1>
【6】浏览器输入:http://localhost:8080/test?username=data,便可以看到效果了。

【SpringMVC-003】idea创建SpringMVC项目傻瓜教程-URL传值

【附加】另外还有一种传值的方式比map常用,就是使用model。线面贴出代码,自己运行下看看。

【1】修改TestController的代码:

//RequestMapping表示使用哪个URL来对应
@RequestMapping({"/test", "/"})
public String test(String username, Model model) {
    System.out.println("I Love China!");
    //往前台视图传参数
    model.addAttribute("username",username);
    //context.put("username", username);
    System.out.println(username);
    return "test";//test对应WEB-INF/jsp
}

【2】其他文件不需要修改,在浏览器运行:http://localhost:8080/test?username=北京。显示如下:

【SpringMVC-003】idea创建SpringMVC项目傻瓜教程-URL传值

这样传值的问题就基本解决了,那么问题来了,如果传递值有10个、20个或者更多呢?

这种方法肯定就不行了,怎么解决呢?随着后续深入,我们会解决这个问题。


----------------------------------------------------【我是分界线】-------------------------------------------------------

【注意】

除了之前两个博客介绍的中外,下面,介绍另外一种比较常用的方法。

还是在原有基础上修改。在src/com/test/controller下,重新创建一个class文件,名子为:HelloController。

同样在WEB-INF/jsp下创建jsp文件,名字叫hello.jsp。

【1】HelloController.java代码为:

package com.test.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * Created by: zs
 * Date-Time: 2017/8/10 9:34
 */
@Controller
public class HelloController {

    @RequestMapping(value = "/hello")
    public ModelAndView hello(){
        //创建准备返回的ModelAndView对象,该对象通常包含了视图名、模型名称以及模型对象
        ModelAndView mv = new ModelAndView();
       //添加模型数据,可以是任意的POJO对象
       mv.addObject("msg","你好战狼2!");
       //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
        mv.setViewName("hello");
        ///返回ModelAndView
        return mv;
    }
}

【2】hello.jsp代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${requestScope.msg}
</body>
</html>
【3】浏览器输入:http://localhost:8080/hello

【SpringMVC-003】idea创建SpringMVC项目傻瓜教程-URL传值

随着后面学习的深入,我们会不断的完善项目代码。

休在浮沙筑高台!!!学习是不断深入,慢慢消化的过程,不要小瞧了基础的东西!

相关文章:

  • 2021-10-21
  • 2022-01-05
  • 2021-05-02
  • 2022-12-23
  • 2021-09-17
  • 2021-08-01
  • 2021-12-29
猜你喜欢
  • 2021-09-25
  • 2021-12-01
  • 2021-05-23
  • 2022-01-15
  • 2021-10-17
  • 2021-12-18
  • 2021-06-07
相关资源
相似解决方案