SpringMVC

目录

一、SpringMVC介绍

二、SpringMVC入门案例

1.创建项目springdemo_mvc1

 2.关于tomcat端口号说明

3.关于tomcat服务器操作

4. 框架之间的关系图

5. 编辑UserController

三、SpringMVC参数接收

1.简单参数传递

2.对象方式传参

-1.编辑User的POJO

-2.编辑UserController

-3.响应结果 

 3.同名提交问题

-1.案例说明

 -2.编辑UserController

四、 restFul风格

1.传统get方式提交

2.restFul风格说明

3.编辑后端Controller 

4. 测试效果

五、 JSON

1. JSON介绍

2.JSON格式-对象格式

3.JSON格式-数组格式

4.JSON格式-嵌套格式

六、SpringMVC 前后端交互-@ResponseBody

1.业务说明

-1.案例测试

-2.测试结果

 2.@RestController注解


一、SpringMVC介绍

SpringMVC框架主要功能: 实现前后端的交互.
交互:
1. 前端通过http请求可以携带参数访问后端服务器. 请求
2. 后端服务器可以将结果通过响应交还给前端. 响应

二、SpringMVC入门案例

1.创建项目springdemo_mvc1

 2.关于tomcat端口号说明

SpringMVC框架使用需要借助tomcat服务器. 默认端口号8080. 可以随意修改.

	# 应用名称
	spring.application.name=springmvc_demo1
	# 应用服务 WEB 访问端口
	server.port=8080

3.关于tomcat服务器操作

4. 框架之间的关系图

5. 编辑UserController

package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller //将类交给SpringMVC管理,SpringMVC交给Spring容器管理
@ResponseBody   //将数据转化为"特殊字符串"返回
public class UserController {
    /**
     * URL地址: http://localhost:8080/hello  get请求
     *         http://localhost:8080/dog    get请求
     *         http://localhost:8080/cat    get请求
     * 参数:  无
     * 返回值:  "你好,SpringMVC"的字符串
     */
    @RequestMapping("/hello")
    public String hello(){

        return "你好,SpringMVC";
    }
}

三、SpringMVC参数接收

1.简单参数传递

需求: 查询后端数据 参数2个数据 name=tomcat,age=18岁
URL: http://localhost:8080/findUserByNA?name=tomcat&age=18

/**
     * 需求: 接收参数 name=xxx age=xxx
     * URL: http://localhost:8080/findUserByNA?name=tomcat&age=18
     * 返回值: "数据正确:name:age"
     * 知识点:
     *      1.通过url中的key获取数据.
     */
    @RequestMapping("/findUserByNA")
    public String findUserByNA(String name,int age){

        return "数据正确:"+name+":"+age;
    }

2.对象方式传参

-1.编辑User的POJO

说明:
1. 属性类型 必须为包装类型
2. POJO 必须添加get/set方法
3. POJO类型必须实现序列号接口

package com.jt.pojo;

import java.io.Serializable;

public class User implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    /*必须添加set/get方法/toString*/

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

-2.编辑UserController

 /**
     * 需求: 接收参数 name=xxx age=xxx
     * URL: http://localhost:8080/findUserByNA2?name=tomcat&age=18
     * 返回值: user.toString 字符串
     * 知识点:
     *      1.通过url中的key获取数据.
     *      2.如果参数众多,则可以使用对象的方式接收,要求必须有set方法
     */
    @RequestMapping("/findUserByNA2")
    public String findUserByNA2(User user){

        return user.toString();
    }

-3.响应结果 

 3.同名提交问题

-1.案例说明

说明: 如果遇到同名提交问题,数据一般采用,号的方式连接. 如图所示:

 -2.编辑UserController

/**
     * URL:http://localhost:8080/hobby?hobby=敲代码,睡觉,打游戏,熬夜
     * 参数: hobby=敲代码,睡觉,打游戏,熬夜
     * 返回值: 获取的参数返回即可
     * 知识点: 如果遇到同名提交问题.则SpringMVC可以采用数组接收.内部自动完成分割
     * 底层实现: hobby.split(",");
     */
    @RequestMapping("/hobby")
    public String hobby(String[] hobby){
       /* String[] array = hobby.split(",");
        System.out.println(array[0]);*/
        //数组转化为字符串
        return Arrays.toString(hobby);
    }

四、 restFul风格

1.传统get方式提交

传统方式:
url1: http://localhost:8080/findUser?name=tomcat&age=18

简化写法:
url2: http://localhost:8080/findUser/tomcat/18/男

2.restFul风格说明

要求:
1. restFul的风格数据的位置一旦确定,不能修改.
2. 参数与参数之间使用"/"的方式分割.
3. restFul的风格适用于 get/post/put/delete 请求类型

请求类型种类: (8种)


 

3.编辑后端Controller 

  /**
     * URL地址:
     *  http://localhost:8080/findUser/tomcat/18/男  get类型
     * 参数: name/age/sex
     * 返回值: 返回值获取的数据
     * restFul语法:
     *     1. 参数与参数之间使用/分割
     *     2. 需要接收的参数使用{}包裹
     *     3. 参数接收时采用@PathVariable取值
     */
    @RequestMapping("/findUser/{name}/{age}/{sex}")
    public String findUser(@PathVariable String name,
                           @PathVariable int age,
                           @PathVariable String sex){

        return name+":"+age+":"+sex;
    }

4. 测试效果

五、 JSON

1. JSON介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,可以理解为一个字符串

2.JSON格式-对象格式

对象(object) 是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。`

{"id": "100","name": "tomcat", "age": "18"}

3.JSON格式-数组格式

数组(array) 是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

在这里插入图片描述

[100,"张三",true]

4.JSON格式-嵌套格式

值(value) 可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

在这里插入图片描述

 [100,true,["a","b",{"name":"张三","hobbys": ["吃饭","睡觉"]}]]

六、SpringMVC 前后端交互-@ResponseBody

1.业务说明

问题说明1: 前端访问后端服务器,一般采用Ajax方式进行数据传递. 后端服务器返回给前端页面 通常采用JSON格式数据
问题说明2: 后端服务器怎么接收前端的参数的. servlet机制

-1.案例测试

/*
    * url:http://localhost:8080/findJSON?name=tomcat&age=18  get
    * 参数:name=tomcat&age=18
    * 返回值:User对象的JSON
    * 知识点:
    *   1.返回值为对象,则@ResponseBody将返回值转化为JSON串
    *   2.如果返回String类型,则@ResponseBody将字符串本身返回给前端
    * */
    @RequestMapping("/findJSON")
    //@ResponseBody  //将返回值转化为JSON串
    public User findJSON(User user){
        //在业务层扩展数据
        user.setId(101);
        user.setSex("男");
        return user;
    }

-2.测试结果

 2.@RestController注解

package com.jt.controller;

import com.jt.pojo.User;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

//@Controller //将类交给SpringMVC管理
//@ResponseBody //当前类中的所有方法 都返回JSON串
@RestController // = @Controller + @ResponseBody
@RequestMapping("/rest") 
public class RestUserController {

    /**
     * 注意事项:
     *      1.springMVC中的请求路径不能重复!!!!
     *      2.可以@RequestMapping("/业务名称")自定义前缀
     * @return
     */
    @RequestMapping("/findJSON")
    public User findUser(User user){
        user.setId(105);
        user.setSex("男");
        return user;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值