一、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: 在浏览器的整个窗口打开链接,忽略任何框架。