一、关于springmvc后端接收前端的业务参数方式以及后端返回前端的方式总结

springboot 专栏收录该内容
27 篇文章 0 订阅

一 、背景

1.其实之前对这一块也是比较含糊不清晰的,之前也总结了一下,但是忘了,现在联系着后端返回前端的方式一块总结了吧,每一种情况我都会列举出一个小例子供大家参考学习,同时也希望能帮到大家进一步理解,同时也希望大家能批评指正我的错误,共勉!!!

二、后端接收前端的方式

1.通过@RequestParam注解接收请求参数;

1.1.测试类

@RestController
public class test01 {
    @RequestMapping(value = "/testRequestParam")
    public String testRequestParams(@RequestParam(value = "userName") String userName){
        System.out.println("userName is " + userName);
        return "success";
    }
}

1.2.测试结果


2.通过Bean封装,接收多个请求参数

2.1.实体类

public class Person {
    private Integer id;
    private String name;

    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;
    }

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

2.2.测试类

@RestController
public class test01 {
    @RequestMapping(value = "/testRequestParam")
    public String testRequestParams(Person person){
        JSONObject json = new JSONObject();
        return json.toJSONString(person);
    }
}

2.3.测试结果


3.通过@ModelAttribute绑定接收前端表单数据

3.1.测试类

@RestController
public class test01 {
    @RequestMapping(value = "/testRequestParam")
    public String testRequestParams(@ModelAttribute("person") Person person){
        JSONObject json = new JSONObject();
        return json.toJSONString(person);
    }
}

3.2.测试结果

4.通过@PathVariable获取URL中某段可变值;

4.1.测试类

@RestController
public class test01 {
    @RequestMapping(value="/testRequestParam/{userName}",method = RequestMethod.GET)
    public String getProduct(@PathVariable("userName") String userName){
        System.out.println("userName : " + userName);
        return userName;
    }
}

4.2.测试结果

5.通过@RequestBody接收请求体中的数据

5.1.测试类

@RestController
public class test01 {
    @RequestMapping(value="/testRequestParam")
    public String getProduct(@RequestBody Person person){
        return person.toString();
    }
}

5.2.测试结果

6.通过@RequestHeader获取请求头中的数据

6.1.页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/testRequestHeader">test RequestHeader</a>
</body>
</html>

6.2.测试类

@RestController
public class test02 {
    @RequestMapping(value = "/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value = "Accept-Language") String contentLanguage){
        System.out.println("Content Language is " + contentLanguage);
        return "success";
    }
}

6.3.测试结果

后台打印结果:

7.通过MultipartFile接收前端上传的文件

这个暂时还没接触过,就不整理了,后期如果接触了,就再去进行整理了。
8.还可以通过原生的HttpServletRequest取值

8.1.测试类

@RestController
public class test02 {
    @RequestMapping(value = "/testRequestHeader")
    public String testRequestHeader(HttpServletRequest request){
        HttpSession session = request.getSession();
        session.setAttribute("111","cmx");
        System.out.println(request.getSession().getAttribute("111"));
        System.out.println(request.getHeader("Accept-Language"));
        return "success";
    }
}

8.2.测试结果

三、后端返回前端的方式

1.采用HttpServletRequest:
1.1.测试(我采用的是springboot+web.xml的方式进行测试的),文章的最后我会把代码贴出来供大家学习。

@Controller
public class test02 {
    @RequestMapping("/testRequestHeader")
    public String index(HttpServletRequest request){
        request.setAttribute("name", "张三");
        return "index";
    }
}

1.2.jsp页面(后面几个测试我都用这个进行测试了)

<%@ page language="java" import="java.util.*" contentType="text/html;charset=utf-8"%>
<html>
<head>
    <title></title>
</head>
<body>
<h1>添加用户信息4</h1>
<form action="/testRequestHeader" method="post">
    <input type="submit" value="提交">
</form>
${name}
</body>
</html>

1.3.测试结果(访问localhost:8090 出现页面此时还没有张三,然后点击提交,结果张三出来了)

2.采用ModelAndView方式:
采用这种的时候具体方法的返回值要为ModelAndView。
2.1.测试类

@Controller
public class test02 {
    @RequestMapping("/testRequestHeader")
        public ModelAndView add(){
            ModelAndView mav = new ModelAndView("index");
            mav.addObject("name","cmx");
            return mav;
        }
}

2.2.测试结果(同上访问)

3.采用Model方式:
3.1.测试类

@Controller
public class test02 {
    @RequestMapping("/testRequestHeader")
        public String add(Model model){
        model.addAttribute("name", "cmx");
            return "index";
        }
}

3.2.测试结果

4.采用Map的方式:

4.1.测试类

@Controller
public class test02 {
    @RequestMapping("/testRequestHeader")
        public String add(Map map){
        map.put("name", "cmx");
            return "index";
        }
}

4.2.测试结果


5.采用ModelMap的方式:
5.1.测试类

@Controller
public class test02 {
    @RequestMapping("/testRequestHeader")
        public String add(ModelMap modelmap){
        modelmap.put("name", "cmx");
            return "index"; 
    }
}

5.2.测试结果

四、下面说下springboot与jsp的整合(默认是不支持的)

1.项目目录结构

2.web.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

3.application.properties(端口号你么可以指定,也可以不用指定默认8080,我的电脑不知道哪一个程序起端口冲突了,所以我写的是8090端口)

server.port=8090
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

4.pom.xml

<!-- servlet 依赖 -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
</dependency>
<!-- tomcat 的支持.-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

5.index.jsp(jsp目录下的)

<%@ page language="java" import="java.util.*" contentType="text/html;charset=utf-8"%>
<html>
<head>
    <title></title>
</head>
<body>
<h1>添加用户信息4</h1>
<form action="/testRequestHeader" method="post">
    <input type="submit" value="提交">
</form>
${name}
</body>
</html>

5.然后你就可以开心的测试了

五、结束

终于搞定了,希望能帮助到你们,欢迎批评指正我的错误。谢谢。共勉

Always keep the faith!!!

 

 

  • 4
    点赞
  • 0
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值