【SpringMVC】数据响应

一、项目配置

  • pom.xml
<!--SpringMVC依赖-->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>5.3.26</version>
</dependency>
<!--ServletAPI依赖-->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
</dependency>
<!--Lombok简化开发依赖-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.24</version>
</dependency>
  • spring-mvx.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
	<context:component-scan base-package="com.springmvc03.controller"/>

	<!--视图解析器-->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>
</beans>
  • web.xml
<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

二、页面跳转

(一)数据+页面

  • String返回基本数据类型
@Controller
@RequestMapping(value = "string")
public class UserController {
	@GetMapping(value = "getString01")
	public String getString01(HttpServletRequest request){
		request.setAttribute("userName", "张三");
		return "index01";
	}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
		<head>
			<title>Title</title>
		</head>
		<body>
			${userName}
		</body>
	</html>
  • Model返回基本数据类型
@Controller
@RequestMapping(value = "string")
public class UserController {
	@GetMapping(value = "getString02")
	public String getString02(Model model){
		model.addAttribute("userName", "张三");
		return "index01";
	}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
		<head>
			<title>Title</title>
		</head>
		<body>
			${userName}
		</body>
	</html>
  • Model返回实体对象
@Controller
@RequestMapping(value = "user")
public class UserController {
    @GetMapping(value = "getUser01")
    public String getUser01(Model model) {
        User user = new User("张三", "123456");
        model.addAttribute("user", user);
        return "user01";
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
		<head>
			<title>Title</title>
		</head>
		<body>
			${user}
		</body>
	</html>
  • Model返回集合
@Controller
@RequestMapping("list")
public class GetListController {
    @GetMapping("getList01")
    public String getMap01(Model model){
        List<User> arrayList = new ArrayList<User>();
        User zhangSan = new User("zhangSan", "123456");
        User liSi = new User("liSi", "123456");
        arrayList.add(zhangSan);
        arrayList.add(liSi);
        model.addAttribute("userList", arrayList);
        return "list01";
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
		<head>
			<title>Title</title>
		</head>
		<body>
			${userList}
		</body>
	</html>
  • 返回ModelAndView
@Controller
@RequestMapping(value = "modelAndView")
public class ReturnModelAndView {
    @GetMapping(value = "getModelAndView")
    public ModelAndView getModelAndView(){
        ModelAndView view = new ModelAndView();
        view.setViewName("model_and_view");
        view.addObject("userName", "zhangSan");
        return view;
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
		<head>
			<title>Title</title>
		</head>
		<body>
			${userName}
		</body>
	</html>

二、返回数据

(一)jackson依赖

  1. Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson 是最流行的 json 解析器之一 。 Spring MVC 的默认 json 解析器便是 Jackson。 Jackson 优点很多。 Jackson 所依赖的 jar 包较少 ,简单易用。与其他 Java 的 json 的框架 Gson 等相比, Jackson 解析大的 json 文件速度比较快;Jackson 运行时占用内存比较低,性能比较好;Jackson 有灵活的 API,可以很容易进行扩展和定制。 
  • <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-annotations</artifactId>
    	<version>2.14.2</version>
    </dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-core</artifactId>
    	<version>2.14.2</version>
    </dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-databind</artifactId>
    	<version>2.14.2</version>
    </dependency>

 (二)以流(Stream)的形式返回

  • response返回String
@Controller
@RequestMapping("stream")
public class StreamController {
    @GetMapping("getStream01")
    public void getStream01(HttpServletResponse response) throws IOException {
        response.getWriter().println("zhangSan_Stream");
    }
}
  • response返回json字符串
@Controller
@RequestMapping("stream")
public class StreamController {
    @GetMapping("getStream02")
    public void getStream02(HttpServletResponse response) throws IOException {
        String user = "{\"username\":\"zhangSan\", \"name\":\"张三\"}";
        response.getWriter().println(user);
    }
}
  • 用Jackson的ObjectMapper创建json字符串
@Controller
@RequestMapping("stream")
public class StreamController {
    @GetMapping("getStream03")
    public void getStream03(HttpServletResponse response) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        User user = new User("张三","123456");
        String value = objectMapper.writeValueAsString(user);
        response.getWriter().println(value);
    }
}
  • 利用@ResponseBody返回实体对象
  • 通过注解配置驱动返回集合
@Controller
@RequestMapping("stream")
public class StreamController {
    @GetMapping("getStream04")
    @ResponseBody
    public String getStream04() throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        User user = new User("zhangSan", "root");
        return objectMapper.writeValueAsString(user);
    }
}
  • @RestController

            @RestController:包含:@Controller和@ResponseBody
@RestController
@RequestMapping("driver")
public class AnnotationDrivenController {
    @GetMapping("getAllUsers")
    public List<User> getAllUsers() {
        List<User> users = new ArrayList<User>();
        User zhangSan = new User("zhangSan", "root");
        User liSi = new User("liSi", "123456");
        users.add(zhangSan);
        users.add(liSi);
        return users;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小韩要努力。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值