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">
相关文章推荐
- 解决Eclipse安装或更新插件非常缓慢的问题
- XML DOM 节点
- Java-并发和并行的区别
- SpringMVC学习(一)
- JAVAFX开发出现的小bug
- Win7 64位系统上配置使用32位的Eclipse
- Java RandomAccessFile随机读取文件
- Java中的装箱和拆箱深入理解
- java正则表达式 校验邮箱 身份证号 手机号等
- java 线程池
- Spring Web利用切面统一处理参数校验异常的方法
- 关于Spring中加载xsd文件出现故障的文章总结
- 61. mybatic insert异常:BindingException: Parameter 'name' not found【从零开始学Spring B】
- Java服务器与客户端的通信中对象流的使用
- 用mybatis实现模糊查询
- Java之详解坦克大战游戏(三)
- Java-JVM优化
- 更改jdk的路径
- org.springframework.beans.factory.BeanCreationException
- Java中八种基本数据类型的默认值