SpringMvc零碎小计

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; 

猜你喜欢

转载自ruoli.iteye.com/blog/2288916