在SpringMVC中响应的几种返回值类型
基础上进行修改。
forward转发
controller方法在提供了String类型的返回值之后,默认就是请求转发。
redirect重定向
contrller 方法提供了一个 String 类型返回值之后,它需要在返回值里使用:redirect:。
示例:
response.jsp
<%--
Created by IntelliJ IDEA.
User: Think
Date: 2020/5/1
Time: 9:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="user/testString">testString</a><br/>
<a href="user/testVoid">testVoid</a><br/>
<a href="user/testModelAndView">testModelAndView</a><br/>
<a href="user/testForwardOrRedirect">testForwardOrRedirect</a>
</body>
</html>
UserController类:
package com.qublog.controller;
import com.qublog.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/user")
public class UserController {
//返回值是String
@RequestMapping("/testString")
public String testString(Model model) {
System.out.println("testString执行了");
//模拟从数据库中查询出User对象
User user = new User();
user.setUsername("hehe");
user.setPassword("1234");
user.setAge(18);
//model对象
model.addAttribute("user",user);
return "success";
}
//返回值是void
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("testVoid执行了");
//请求转发
//request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
//重定向
//response.sendRedirect(request.getContextPath()+"/index.jsp");
//设置中文乱码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//直接进行响应
response.getWriter().print("你好");
return;
}
//返回值是ModelAndView
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
//创建ModelAndView对象
ModelAndView mv = new ModelAndView();
System.out.println("testModelAndView执行了");
User user = new User();
user.setUsername("hehe");
user.setPassword("1234");
user.setAge(18);
//把user对象存储到mv对象中,也会把user对象存储到request对象中。
mv.addObject("user",user);
//跳转到哪个页面
mv.setViewName("success");
return mv;
}
//使用关键字的方式进行转发或者重定向
@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect() {
System.out.println("testForwardOrRedirect执行了");
//请求的转发,不能使用视图解析器
//return "forward:/WEB-INF/pages/success.jsp";
//重定向
return "redirect:/index.jsp";
}
}