【SpringMVC从看懂到看开】4 - 结果跳转和处理参数

7 结果跳转

7.1 转发

Spring MVC视图处理器默认是转发

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>

7.2 重定向

重定向只需要添加redirect

@Controller
@RequestMapping("/TTForwardController")
public class TTForwardController {
    @RequestMapping("/t1")
    public String test(Model model){
        return "redirect:/TTForwardController/red";
    }

    @RequestMapping("/red")
    public String test1(Model model){
        model.addAttribute("msg","hello");
        return "hello";
    }
}

在视图名称中添加前缀redirect可以执行重定向。UrlBasedViewResolver(和他的子类)会将它视为一个需要去重定向的指令,去掉redirect后剩余的视图名称就是一个重定向的URL。
控制器会按照视图名称的逻辑去处理,一个视图名称(例如redirect:/myapp/some/resource)会相对于当前Servlet上下文去重定向,与此同时,一个像redirect:https://myhost.com/some/arbitrary/path会被当成一个绝对URL去重定向。

8 从前端获取参数

8.1 参数名一致

前端传入的参数名和方法参数名一样时,可以直接通过方法参数名获取

@Controller
@RequestMapping("/gpc")
public class GetParameterControllerTester {
    @GetMapping("/c1")
    public String getParameterTester1(String name, Model model){
        model.addAttribute("msg","Hello, "+name);
        return "gpc";
    }
}

gpc.jsp


<html>
<head>
    <title>Title</title>
</head>
<body>

<h1>${msg}</h1>

</body>
</html>

在这里插入图片描述

8.2 参数名不一致

参数名不一致的情况下,需要使用@RequestParam注解

@Controller
@RequestMapping("/gpc")
public class GetParameterControllerTester {
    @GetMapping("/c1")
    public String getParameterTester1(@RequestParam("username") String name, Model model){
        model.addAttribute("msg","Hello, "+name);
        return "gpc";
    }
}

在这里插入图片描述

8.3 接受一个对象

创建一个实体类User

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
}

编写控制器GetParameterControllerTester

@Controller
@RequestMapping("/gpc")
public class GetParameterControllerTester {

    @GetMapping("/c2")
    public String getParameterTester2(User user,Model model){
        model.addAttribute("user",user);
        return "gpc2";
    }
}

编写视图gpc2.jsp

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

</body>
</html>

运行结果可得:
在这里插入图片描述SpringMVC会帮我们自动去匹配对象中的字段名和前端传入的参数名是否一样,一样的我们就匹配到该对象中去,没有的话就不匹配。
例如,我们传入URL为http://localhost:8080/gpc/c2?iid=1&nname=cap&aage=18&name=cap&age=20
在这里插入图片描述

9 传递参数到前端

9.1 使用Model

前面一直在使用,这里不再赘述

    @GetMapping("/c2")
    public String getParameterTester2(User user,Model model){
        model.addAttribute("user",user);
        return "gpc2";
    }

9.2 使用ModelMap

ModelMap和Model差不多

    @GetMapping("/c3")
    public String getParameterTester2(ModelMap modelMap){
        modelMap.addAttribute("msg", "Hello ModelMap");
        return "gpc3";
    }

9.3 使用ModelAndView

ModelAndView是用在继承Controller上的,由于我们常用注解开发,这里我们不展开讲解

猜你喜欢

转载自blog.csdn.net/Cap220590/article/details/107381480