SSM框架之ControllerToView三种传值方式

SSM 框架学习 (Spring MVC篇)

前面已经介绍了如何搭建一个简单的Spring MVC框架,下面就来看看这三个模块Model-View-Controller之间是怎么实现数据交互的吧。
先我将介绍三种Controller->View数据传输方式,只介绍主要代码,不介绍整个项目搭建过程,如不懂Spring MVC是如何搭建的请参考上一篇文章SSM框架之Spring MVC的搭建。

1、Map方式

新建一个Controller类:MapController 其内容如下:

package com.lsl.ssm.controller;

import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MapController {

    /** * 映射路径:/map * * 这里username是从View传到Controller,可写可不写。 */
    @RequestMapping("/map")
    public String index(String username, Map map) {
        System.out.println("Hello Spring MVC map " + username);
        map.put("name", username + "六的一批");
        return "index";
    }
}

前端接收很简单,新建一个index.jsp,这里index命名要对应上面return "index",这样控制器才能找到页面.

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<html>
  <head>    
    <title>Controller向View传值title>
  head>

  <body>
    <h1>hello SpringMVC!!!h1>
    <h1>Map传参h1>
    <h2>username(key:name)-->${name }h2>

  body>
html>

效果如下: 注意:pageEncoding设为UTF-8否则中文乱码
SSM框架之ControllerToView三种传值方式_第1张图片

2、ModelAndView方式

新建控制器ModelAndViewController

package com.lsl.ssm.controller;

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

@Controller
public class ModelAndViewController {


    @RequestMapping("/mav")
    public ModelAndView index(String username) {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("username", username);
        modelAndView.setViewName("index1");
        return modelAndView;
    }
}

新建一个index1.jsp文件,与上面setViewName("index1")index1对应

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<html>
  <head>    
    <title>Controller向View传值title>
  head>

  <body>
    <h1>hello SpringMVC!!!h1>
    <h1>ModelAndView传参h1>
    <h2>username(key:username)-->${username }h2>

  body>
html>

部署运行:
SSM框架之ControllerToView三种传值方式_第2张图片

3、Model方式

这回我们要传个对象到前端,所以我们要新建一个实体类User如下:

package com.lsl.ssm.pojo;


public class User {
    private String userName; // 用户名称
    private String userPassword; // 用户密码


    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }
}

新建控制器ModelController

package com.lsl.ssm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.ui.Model;

import com.lsl.ssm.pojo.User;

@Controller
public class ModelController {
    /** * 入参为Model类型 推荐使用 * @param username * @param model * @return */
    @RequestMapping("/model")
    public String index(String username, Model model) {
        // 这里key为"username",value为username里的值,前端通过"username"找到这个值
        model.addAttribute("username", username); 

        // 默认使用对象的类型作为key
// model.addAttribute("string", username);
// model.addAttribute("user", new User());

        model.addAttribute(username); // 等价于("string", username)
        User user = new User();
        user.setUserPassword("admin");
        user.setUserName(username + "咯咯咯咯");
        model.addAttribute("currentUser", user);
        model.addAttribute(user); // 等价于("user", user)
        return "index2";
    }
}

同理,新建一个index2.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<html>
  <head>    
    <title>Controller向View传值title>
  head>

  <body>
    <h1>hello SpringMVC!!!h1>
    <h1>Model传参h1>
    <h2>username(key:string)-->(value:${string })h2>
    <h2>username(key:username)-->(value:${username })h2>
    <h2>username(key:currentUser)-->(value:${currentUser.userName })h2>
    <h2>username(key:currentUser)-->(value:${currentUser.userPassword })h2>
    <h2>username(key:user)-->(value:${user.userName })h2>

  body>
html>

注意:Model方式中,若不指定key值,则默认使用该对象的类型作为key

部署运行:
SSM框架之ControllerToView三种传值方式_第3张图片

@Author 瞌睡虫
@mybatis-3.2.2
@Database: mysql 5.7.15
@Tool: MyEclipse

你可能感兴趣的:(java,SSM框架学习)