栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC入门宝典(五)SpringMVC注解(下)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC入门宝典(五)SpringMVC注解(下)

目录

一.@ResponseBody

二.@RestController

1.@RestController

2.静态资源映射

三.@RequestBody


一.@ResponseBody

@ResponseBody、@RestController将方法返回的对象转为JSON格式。

作用:方法返回的对象转换为 JSON 格式,并将 JSON 数据直接写入到输出流中,使用此注解后不会再经过视图解析器。使用该注解可 以处理 Ajax 请求。 位置:方法上方或方法返回值前。 (1) 在webapp下创建js文件,并将jQuery文件引入到js下(学习jQuery请看我的前端系列文章), jsp 页面first3.jsp,发送 ajax 请求
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    ajax请求
    
    


姓名:
性别:
(2) 由于 jsp 页面中引入 jQuery 的 js 文件,而 SpringMVC 会拦截所有 资源,造成 jquery.js 失效,需要在 SpringMVC 核心配置文件(springmvc.xml)中放 行静态资源。

 

(3)在domain下编写结果实体类,该实体类会封装一个请求的结果
// 请求的结果对象
public class Result {  
    private boolean flag; // 请求是否成功  
    private String message; // 请求提示信息 
    // 省略getter/setter/构造方法
}
(4)编写控制器
package com.first.controller;

import com.first.domain.Result;
import com.first.domain.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/c8")
public class MyController8 {
    @GetMapping("/addStudent")
    @ResponseBody
    public Result addStudent(String name, String sex){
        // 输出接受的参数,模拟添加学生
        System.out.println(name+":"+sex);
        // 返回结果对象
        Result result = new Result(true, "添加学生成功!");
        return result;
    }

}
(5) SpringMVC 会将 Result 对象转为 JSON 格式写入输出流,而 SpringMVC 默认使用的 JSON 转换器是 jackson ,需要在 pom 中添 加 jackson 依赖。
    
    
      com.fasterxml.jackson.core
      jackson-core
      2.9.0
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.0
     
    
      com.fasterxml.jackson.core
      jackson-annotations
      2.9.0
    

访问http://localhost:8080/first3.jsp

输入姓名和性别并提交,数据会提交给相应的控制层。

控制台会输出前端输入的姓名和性别。

二.@RestController

1.@RestController 如果一个控制器类下的 所有 控制器方法 都 返回 JSON 格式数据且不进行跳转,可以使用 @RestController 代替 @Controller ,此时每个方 法上的 @ResponseBody 都可以省略。 如上节的代码可以改成下面那样
package com.first.controller;

import com.first.domain.Result;
import com.first.domain.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//@Controller
@RestController
@RequestMapping("/c8")
public class MyController8 {
    @GetMapping("/addStudent")
    //@ResponseBody
    public Result addStudent(String name, String sex){
        // 输出接受的参数,模拟添加学生
        System.out.println(name+":"+sex);
        // 返回结果对象
        Result result = new Result(true, "添加学生成功!");
        return result;
    }

}

2.静态资源映射 当在 DispatcherServlet 的 中配置拦截 “/” 时,除了 jsp 文件不会拦截以外,其他所有的请求都会经过前端控制器进行匹配。此 时静态资源例如 css 、 js 、 jpg 等就会被前端控制器拦截,导致不能访 问,出现 404 问题。想要正常映射静态资源共有三种方案: 配置静态资源筛查器(最简单的配置方法,也是上节用的方法) 在 SpringMVC 的配置文件中配置 后,会在 Spring 容器中创建一个资源检查器,它对进入 DispatcherServlet 的 URL 进行筛查,如果不是静态资源,才由 DispatcherServlet 处理。 修改 SpringMVC 核心配置文件:
配置静态资源映射器 SpringMVC 模块提供了静态资源映射器组件,通过 标签配置静态资源映射器,配置后的路径不会由 DispatcherServlet 处 理。 修改 SpringMVC 核心配置文件:



配置默认 Servlet 处理静态资源 在 web.xml 可以配置默认 Servlet 处理静态资源,该 Servlet 由 tomcat提供,它会直接访问静态资源不进行其他操作。这样就避免了使用 DispatcherServlet 对静态资源的拦截: 修改 web.xml:
  
    default
    *.jpg
  
  
    default
    *.css
  
  
    default
    *.js
  
  
    default
    *.png
  

三.@RequestBody 作用:将请求中 JSON 格式的参数转为 JAVA 对象 位置:写在方法参数前 1 (1)AJAX 请求发送 JSON 格式的参数 first4.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    ajax请求
    
    


姓名:
性别:
(2)编写控制器
package com.first.controller;

import com.first.domain.Result;
import com.first.domain.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//@Controller
@RestController
@RequestMapping("/c8")
public class MyController8 {
    @GetMapping("/addStudent")
    //@ResponseBody
    public Result addStudent(String name, String sex){
        // 输出接受的参数,模拟添加学生
        System.out.println(name+":"+sex);
        // 返回结果对象
        Result result = new Result(true, "添加学生成功!");
        return result;
    }

    @PostMapping("/addStudent2")
    //@RequestBody把传过来的json数据封装到到Student对象中
    public Result addStudent2(@RequestBody Student student){
        // 输出接受的参数,模拟添加学生
        System.out.println(student);
        // 返回结果对象
        Result result = new Result(true, "添加学生成功!");
        return result;
    }

}

访问http://localhost:8080/first4.jsp

 控制台输出:

Student{id=0, name='不一样', sex='女', address=null}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号