SpringMVC重定向和转发以及接收参数和数据回显

536 阅读1分钟

重定向和转发

redirect(重定向,url改变)

重定向在浏览器上进行,因为浏览器不能访问WEB-INF目录下的东西,所以使用重定向时,不能重定向到该目录下,也定向不到。使用return "redirect:*";时,视图解析器失效

forward(转发,url不变)

  • SpringMVC默认使用forward,可以转发到WEB-INF目录下的文件。
  • 当有视图解析器时,使用return "forward:*";时,视图解析器失效

样例

  • 视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="resourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
</bean>
  • controller
@Controller
public class RedirectForward {
    @GetMapping( "/add")
    public String test(Model model){
        model.addAttribute("msg","redirect");
        return "redirect:/f/h.html";
    }
    @GetMapping( "/t/add")
    public String test1(Model model){
        model.addAttribute("msg","redirect");
        return "redirect";
    }
    @GetMapping( "/t1/add")
    public String test2(Model model){
        model.addAttribute("msg","redirect");
        return "forward:/WEB-INF/jsp/redirect.jsp";
    }
}

image.png

接收参数和数据回显

样例

直接用

image.png

使用@RequestParam

image.png

如何传对象

  • 假设传递的是一个对象,匹配对象中的字段名;如果名字一致则OK,否则,匹配不到,没传到的则为null

image.png

几种Model的区别

  • Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
  • ModelMap继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承LinkedMap的方法和特性;
  • ModelAndview 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。

@RequestParam@PathVariable的区别

看看大佬,通俗易懂的讲解