SpringMVC响应数据和结果视图

本文介绍了SpringMVC中处理响应数据和结果视图的方式。当Controller方法返回字符串时,该字符串作为逻辑视图名称,由视图解析器转化为物理视图地址。若返回值为void,程序可能报404异常,需通过请求转发或重定向指定页面。而返回ModelAndView对象则允许更灵活地控制JSP视图。
摘要由CSDN通过智能技术生成
  1. 返回值分类
    1. 返回字符串
      1. Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。
      @RequestMapping(value="/hello")
      public String sayHello() {
      	System.out.println("Hello SpringMVC!!");
      	// 跳转到XX页面
      	return "success";
      }
      
      1. 具体的应用场景
      @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> 
      
    2. 返回值是void
      1. 如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到。
        1. 默认会跳转到@RequestMapping(value="/initUpdate") initUpdate的页面。
        2. 可以使用请求转发或者重定向跳转到指定的页面
        @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;
        }
        
    3. 返回值是ModelAndView对象
      1. ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图
      2. 具体的代码如下
      /**
      * 返回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>
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值