SpringMVC返回值分类

第1章:响应数据和结果视图

1.1 返回值分类

#####1.1.1 返回字符串

Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。

@RequestMapping(value="/hello")
public String sayHello() {
	System.out.println("Hello SpringMVC!!");
	// 跳转到XX页面
	return "success";
}

具体的应用场景

@Controller
@RequestMapping("/user")
public class UserController {
	
	/**
	 * 请求参数的绑定
	 */
	@RequestMapping(value="/initUpdate")
	public String initUpdate(Model model) {
		// 模拟从数据库中查询的数据
		User user = new User();
		user.setUsername("张三");
		user.setPassword("123");
		user.setMoney(100d);
		user.setBirthday(new Date());
		model.addAttribute("user", user);
		return "update";
	}
	
}

<h3>修改用户</h3>
${ requestScope }
<form action="user/update" method="post">
	姓名:<input type="text" name="username" value="${ user.username }"><br>
	密码:<input type="text" name="password" value="${ user.password }"><br>
	金额:<input type="text" name="money" value="${ user.money }"><br>
	<input type="submit" value="提交">
</form>

#####1.1.2 返回值是void

如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到。

  1. 默认会跳转到@RequestMapping(value="/initUpdate") initUpdate的页面。

可以使用请求转发或者重定向跳转到指定的页面

@RequestMapping(value="/initAdd")
public void initAdd(HttpServletRequest request,HttpServletResponse response) throws Exception {
	System.out.println("请求转发或者重定向");
	// 请求转发
	// request.getRequestDispatcher("/WEB-INF/pages/add.jsp").forward(request, response);
	// 重定向
	// response.sendRedirect(request.getContextPath()+"/add2.jsp");
	
	response.setCharacterEncoding("UTF-8");
	response.setContentType("text/html;charset=UTF-8");
	
	// 直接响应数据
	response.getWriter().print("你好");
	return;
}

#####1.1.3 返回值是ModelAndView对象

ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图。

一会案例中我们将使用JSTL输出,所以需要引入jstl依赖包

在工程中引入jstl依赖
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

具体的代码如下

/**
 * 返回ModelAndView对象
 * 可以传入视图的名称(即跳转的页面),还可以传入对象。
 * @return
 * @throws Exception
 */
@RequestMapping(value="/findAll")
public ModelAndView findAll() throws Exception {
	ModelAndView mv = new ModelAndView();
	// 跳转到list.jsp的页面
	mv.setViewName("list");
	
	// 模拟从数据库中查询所有的用户信息
	List<User> users = new ArrayList<>();
	User user1 = new User();
	user1.setUsername("张三");
	user1.setPassword("123");
	
	User user2 = new User();
	user2.setUsername("赵四");
	user2.setPassword("456");
	
	users.add(user1);
	users.add(user2);
	// 添加对象
	mv.addObject("users", users);
	
	return mv;
}

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>查询所有的数据</h3>
<c:forEach items="${ users }" var="user">
	${ user.username }
</c:forEach>
</body>
</html>
发布了30 篇原创文章 · 获赞 0 · 访问量 2467

猜你喜欢

转载自blog.csdn.net/duanduan339/article/details/103369011