1:SpringMvc返回类型有哪些?
答:返回类型有如下几种:ModelAndView, Model, ModelMap, Map,View, String, void
2:SpringMvc返回类型中为什么用Model 而不直接用request?
答:通过Model和 request 返回数据本质上没区别,Model 最后也是通过request来绑定数据,只是这里传Model, 可以减少侵入性,更符合MVC的的设计思想,ServletRequest要和web容器耦合在一起,难以进行单元测试和复用。
3:SpringMvc需要在Controller业务控制方法之前调用一段代码如何做?
答:在Controller中定义一个方法,并加上@ModelAttribute注解即可,被@ModelAttribute注解的方法(不要加@RequestMapping)在所有handler method之前调用
4:SpringMvc重定向如何传参?
答:RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的,他有两种带参的方式。
第一种:
attr.addAttribute("param", value);
这种方式就相当于重定向之后,在url后面拼接参数,这样在重定向之后的页面或者控制器再去获取url后面的参数就可以了,但这个方式因为是在url后面添加参数的方式,所以暴露了参数,有风险,如下:
attr.addFlashAttribute("name", "123"); attr.addFlashAttribute("success", "success"); return "redirect:/index";
这样就相当于:return "redirect:/index?name=123&success=success"
第二种:
attr.addFlashAttribute("param", value);
这种方式也能达到重定向带参,而且能隐藏参数,其原理就是放到session中,session在跳到页面后马上移除对象,所以你刷新一下后这个值就会丢掉。
这种方式确实能重定向带参,但是有个问题,这个只能重定向到页面上,也就是说重定向的这个 页面视图,能用el表达式直接获取你带参的值,比如status 和message ,都能获取。 可是我重定向到另一个Controller的时候,这 个控制器里面没法获取这两个参数
5:SpringMvc如何获取配置文件中的内容?
答:通过@Value注解读取.properties配置内容,如下:
@Value("#{configProperties['jdbc.jdbcUrl']}") private String jdbcUrl; /** * 前端基础路径 */ @Value("${frontPath}") protected String frontPath;