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

来源:互联网 发布:淘宝头像设计制作 编辑:程序博客网 时间:2024/06/15 22:09

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

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

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

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

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


【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。



【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,便可以看到效果了。


【附加】另外还有一种传值的方式比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=北京。显示如下:


这样传值的问题就基本解决了,那么问题来了,如果传递值有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 */@Controllerpublic 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


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

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

原创粉丝点击