Controller向View传参

101 阅读2分钟

一、ModelAndView对象:

1、其中既包含了控制层要发送到视图的数据模型Model,也包含了要跳转到的视图信息;

2、相对月整合了Servlet开发中的以下两步:

request.setAttribte("键","值");

request.getRequestDispatcher("URL").forward(request,response);

3、所以:mv对象默认使用转发的形式跳转,并且默认将数据存储在目标页面的request域中;

4、常用方法:

ModelAndView(String viewName)

ModelAndView(String viewName, Map<String, ?>

ModelAndView(String viewName, String modelName, Object modelObject)

ModelAndView addObject(Object attributeValue)

ModelAndView addAllObjects(Map<String, ?> modelMap)

二、Model接口:

Model:SpringMVC在调用方法之前,会创建一个隐含对象,即:隐含模型;

model.addAttribute("键名","数据");

如果没有指定键名,默认使用此数据的数据类型的小写形式作为键名;

比如:String==》string User==》user ArrayList==》arraylist

@RequestMapping("/del")

public String handle3(@RequestParam("nm") String userName, Model model){

model.addAttribute("name",userName);

model.addAttribute(userName);//如果不指名数据的键名,默认是它的数据类型的小写形式

User u = new User(1, userName, "123");

model.addAttribute(u);

return "index";

}

三、Map集合:

ModelAndView和Mode存储数据本质都是Map集合,所有也可使用Map集合;

@RequestMapping("/modify")

public String handle4(String name,Map<String,User> map){

map.put("a",new User(1,name,"123"));

map.put("b",new User(2,name,"456"));

map.put("c",new User(3,name,"789"));

return "index";

}

四、Base 标签的作用

  base标签是一个单标签,位于head标签内,Title标签下面,一个页面最多只能使用一个base元素,用来提供一个指定的默认目标,也算是一种表达路径和连接网址的标记。

通俗的说,base 标签可以让相对路径不再参考相对位置,只和base中的基准地址拼接,然后进行跳转。(注意:标签仅对相对地址有效,对于绝对地址无效的)

常见的 url 路径形式分别有相对路径与绝对路径,如果 base 标签指定了目标,浏览器将通过这个目标来解析当前文档中的所有相对路径,包括的标签有(a、img、link、form)。也就是说,浏览器解析时会在路径前加上base给的目标,而页面中的相对路径也都转换成了绝对路径。

格式:

<base href="http://localhost:8080/项目路径/ ">

<base href="/项目路径/" >

注意:base 后面的最后一个 /(斜杠) 不能省略,因为它表示一个目录,如果省略了,就代表一个资源。

补充:base标签还有一个target属性:

target属性是网页窗口的打开方式,在base标签中设置该属性,那么页面中所有的链接都将遵循这个方式来打开网页,分别有如下几种选择:

_blank:在新窗口打开链接页面。

_parent:在上一级窗口中打开链接。

_self: 在当前窗口打开链接,此为默认值,可以省略。

_top: 在浏览器的整个窗口打开链接,忽略任何框架。