您的位置:首页 > 编程语言 > Java开发

SpringMVC静态资源,页面映射,attribute范围,ModelAttribute

2016-07-22 11:31 399 查看


  1.图片路径,映射静态资源(css js)。

<span style="font-size:18px;"><!-- 映射静态资源 -->
<mvc:resources location="/WEB-INF/views/images/" mapping="images/**"></mvc:resources>
<mvc:resources location="/WEB-INF/views/css/" mapping="css/**"></mvc:resources>
<mvc:annotation-driven/></span>


 2.通过view-controller 映射页面,不需要在controller类里面写方法做映射。
<span style="font-size:18px;"><!-- 把test01 页面直接映射,不需要使用controller方法映射 -->
<mvc:view-controller path="test01"/></span>

  
 3.ModelMap model 使用传参的时候,可以在controller类的上面加上注释将request范围加到session范围里面。
<span style="font-size:18px;">@Controller
@SessionAttributes(names={"num"})
public class TestController {
//把当前model内部的key为num 变量加入到session
//@SessionAttributes(names={"num"})

@RequestMapping("/test")
public String testView(ModelMap model){
Integer num=1000;
model.addAttribute("num", num);
return "test";
}
}</span>


 4.controller方法里面其实每次返回的都是modelAndview,有参数则传,无参数则传值为null。

 5.修改数据的时候,如果把一项隐藏掉,这样会导致隐藏的属性为null。采用3种方法:
1>.在执行@RequestMappring之前会执行@ModelAttribute。所以在controller类里面加入方法,返回值为空
<span style="font-size:18px;">@ModelAttribute
public void loadBook(@RequestParam(name="bookId",required=false) Integer bookId,ModelMap model){
if(bookId!=null){
Book book= bookService.loadById(bookId);
model.addAttribu
4000
te("book", book);
}
}</span>


所以执行loadById(int bookId)方法和update(int bookId)方法时候先调用上面的方法,获得attribute(book),这样loadById就直接跳转页面就可以,直接可以使用获得到的attribute(book)。当执行update(int bookId)的时候就会调用attribute(book),与之做对比,这样就保证不能修改的参数为null的问题。

加载修改页面和提交修改内容(此处为测试,暂时提交到index,使用控制台查看修改返回对象)

@RequestMapping("/loadUpdate")
public String loadById(){
return "update";
}

@RequestMapping("/updateHander")
public String update(@ModelAttribute("book")Book book){
System.out.println(book);
return "index";
}
2>.在执行@RequestMappring之前会执行@ModelAttribute。所以在controller类里面加入方法,返回值为对象
<span style="white-space:pre">	</span>@ModelAttribute
public Book loadBook(@RequestParam(name="bookId",required=false) Integer bookId){
if(bookId!=null){
return bookService.loadById(bookId);
}else{
return new Book();
}
}
加载修改页面和提交修改内容
<span style="white-space:pre">	</span>@RequestMapping("/loadUpdate")
public String loadById(int bookId,ModelMap model){
Book b=bookService.loadById(bookId);
model.addAttribute("loadUpdate", b);
return "update";
}

@RequestMapping("/updateHander")
public String update(Book book){
System.out.println(book);
return "index";
}

3>.使用rest风格 url(保护key值)
获得bookId的时候,使用rest风格@PathVariable
第三种方式使用rest风格 url
@ModelAttribute
public void loadBook(@RequestParam(name="bookId",required=false) Integer bookId,ModelMap model){
if(bookId!=null){
Book book= bookService.loadById(bookId);
model.addAttribute("book", book);
}
}
//rest风格 url
@RequestMapping(value={"/loadUpdate/{bookId}"})
public String loadUpdate(@PathVariable("bookId") int bookId,ModelMap model){
Book book=bookService.loadById(bookId);
model.addAttribute("loadUpdate", book);
return "update";
}
@RequestMapping("/updateHander")
public String update(Book book){
System.out.println(book);
return "index";
}

修改提交路径
<td><a href="loadUpdate/${b.bookId}">修改</a>

提交表单的时候action需要适应绝对路径
<form action="${pageContext.request.contextPath}/updateHander">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: