# 返回值为 void

返回值为void的应用场景:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

1:通过原始的servlet来进行跳转

2:用于ajax响应

# 创建一个“通过原始的servlet来进行跳转”

1:创建一个普通的类

package com.doaoao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
public class ReturnVoidController {

    @RequestMapping("/returnVoid.do")
    public void welcome(HttpServletRequest request, HttpServletResponse response, Student student) throws Exception {
        request.setAttribute("student", student);
        request.getRequestDispatcher("/jsp/welcome.jsp").forward(request, response);
    }
}

2:创建welcome.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${student.name}<br>
${student.age}
</body>
</html>

3:在浏览器中访问:

http://localhost:8080/firstspringmvc_war_exploded/returnVoid.do?name=henry&age=18

 # 创建一个"用于ajax响应"

1:创建一个文件夹,用于引入 jquery文件

2:创建ajaxResponse.jsp 文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="/js/jquery-3.2.1.js"></script>
</head>
<body>
<button id="ajaxRequest">提交</button>
</body>
<script>
    $(function () {
        $("#ajaxRequest").click(function () {
            $.ajax({
                method:"post",
                url:"/ajaxResponse.do",
                data:{name:"henry",age:18},
                dataType:"json",
                success:function (result) {
                    alert(result.name + "," + result.age);
                }
            });
        });
    });

</script>
</html>

3:创建用于处理的类

package com.doaoao.controller;

import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

@Controller
public class ReturnVoidController {


    @RequestMapping("/ajaxResponse.do")
    public void ajaxResponse(HttpServletRequest request, HttpServletResponse response,Student student) throws Exception{
        PrintWriter out = response.getWriter();
        String jsonString = JSON.toJSONString(student);
        out.write(jsonString);

    }
}

 

 ...

# 返回值的类型为Object

## 创建一个返回值为String的

1:在pom.xml文件中添加如下的内容,用于添加 jsckjson的jar包,在springMvc中使用 jackson来进行json数格式转换

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.4</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.4</version>
</dependency>

2:在配置 springmvc.xml 文件中注解驱动

<mvc:annotation-driven/>

3:添加一个用于处理的类

(该需要添加一个注解,之前在Controller方法中返回字符串,springMvc会根据该字符串跳转到相应的jsp中,这里返回的字符串会添加到响应体中传递到jsop页面中,所以需要添加注解 @ResponseBody)

package com.doaoao.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 方法返回Object类型
 */
@Controller
public class ReturnObjectController01 {

    @RequestMapping(value = "/returnString.do")
    @ResponseBody
    public Object returnString() throws Exception{

        return "henry";
    }
}

 4:创建一个jsp文件,用于发送请求

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Title</title>
    <script src="/js/jquery-3.3.1.js"></script>
</head>
<body>
    <button id="ajaxRequest">提交</button>
</body>
<script>
    $(function () {
       $("#ajaxRequest").click(function () {
           $.ajax({
               method:"post",
               url:"/returnString.do",
               success:function (result) {
                   alert(result);
               }
           });
       });
    });

</script>
</html>

 5:当第3步中的返回值存在中文时,会出现乱码

(需要在@RequestMapping中添加属性 produces)

@Controller
public class ReturnObjectController01 {

    @RequestMapping(value = "/returnString.do", produces = "text/html;charset=utf-8")
    @ResponseBody
    public Object returnString() throws Exception{
        return "你好世界";
    }
}

 

## 创建一个返回值为map的

1:创建一个类

@Controller
public class ReturnObjectController {

    @RequestMapping(value = "/returnMap.do")
    @ResponseBody
    public Object returnString() throws Exception{

        Map<String, String> testMap = new HashMap<>();
        testMap.put("hello", "你好");
        testMap.put("world", "世界");
        return testMap;
    }
}

2:jsp中添加 ajax

$(function () {
   $("#ajaxRequest").click(function () {
       $.ajax({
           method:"post",
           url:"/returnString.do",
           success:function (result) {
               alert(result.hello);
           }
       });
   });
});

 

 ...

...

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄