springmvc 路径映射规则、数据绑定
来源:互联网 发布:淘宝卖电子资料处罚 编辑:程序博客网 时间:2024/06/05 11:57
一、路径映射
1. 一个action配置多个URL映射@RequestMapping(value={“/index”, “/hello”}, method = {RequestMethod.GET})
2. URL请求参数映射
@RequestMapping(value="/detail/{id}", method = {RequestMethod.GET})
public ModelAndView getDetail(@PathVariable(value="id") Integer id){ ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("id", id); modelAndView.setViewName("detail"); return modelAndView; }
3. URL通配符映射“?”表示1个字符,“*”表示匹配多个字符,“**”表示匹配0个或多个路径SpringMVC会按照最长匹配优先原则(即映射配置中哪个匹配的最多)来匹配。4. URL正则表达式映射Spring MVC还支持正则表达式方式的映射配置@RequestMapping(value="/reg/{name:\\w+}-{age:\\d+}", method = {RequestMethod.GET}) public ModelAndView regUrlTest(@PathVariable(value="name") String name, @PathVariable(value="age") Integer age){ ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name", name); modelAndView.addObject("age", age); modelAndView.setViewName("regurltest"); return modelAndView; }
二、数据绑定
1.@RequestParam,绑定单个请求数据,可以是URL中的数据,表单提交的数据或上传的文件;
2.@PathVariable,绑定URL模板变量值;
3.@CookieValue,绑定Cookie数据;
4.@RequestHeader,绑定请求头数据;
5.@ModelAttribute,绑定数据到Model;
6.@SessionAttributes,绑定数据到Session;
7.@RequestBody,用来处理Content-Type不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;
8.@RequestPart,绑定“multipart/data”数据,并可以根据数据类型进项对象转换;
@RequestParam 示例步骤
验证文件绑定
1.添加commons-fileupload-1.3.1.jar和commons-io-2.2.jar 2.配置spring-servlet.xml文件支持文件上传
<!-- 支持上传文件 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置上传文件的最大尺寸为1MB --> <property name="maxUploadSize"> <value>1048576</value> </property> <property name="defaultEncoding"> <value>UTF-8</value> </property> </bean>
3.controller file@Controller @RequestMapping(value = "/databind") public class DataBindController { @RequestMapping(value="/parambind", method = {RequestMethod.GET}) public ModelAndView paramBind(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("parambind"); return modelAndView; } @RequestMapping(value="/parambind", method = {RequestMethod.POST}) public ModelAndView paramBind(HttpServletRequest request, @RequestParam("urlParam") String urlParam, @RequestParam("formParam") String formParam, @RequestParam("formFile") MultipartFile formFile){ //如果不用注解自动绑定,我们还可以像下面一样手动获取数据 String urlParam1 = ServletRequestUtils.getStringParameter(request, "urlParam", null); String formParam1 = ServletRequestUtils.getStringParameter(request, "formParam", null); MultipartFile formFile1 = ((MultipartHttpServletRequest) request).getFile("formFile"); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("urlParam", urlParam); modelAndView.addObject("formParam", formParam); modelAndView.addObject("formFileName", formFile.getOriginalFilename()); modelAndView.addObject("urlParam1", urlParam1); modelAndView.addObject("formParam1", formParam1); modelAndView.addObject("formFileName1", formFile1.getOriginalFilename()); modelAndView.setViewName("parambindresult"); return modelAndView; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="parambind?urlParam=AAA" method="post" enctype="multipart/form-data"> <input type="text" name="formParam" /><br/> <input type="file" name="formFile" /><br/> <input type="submit" value="Submit" /> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 自动绑定数据:<br/><br/> ${urlParam}<br/> ${formParam}<br/> ${formFileName}<br/><br/><br/><br/> 手动获取数据:<br/><br/> ${urlParam1}<br/> ${formParam1}<br/> ${formFileName1}<br/> </body> </html>
上面如何把数据绑定到单个变量,但在实际应用中我们通常需要获取的是model对象,
不需要把数据绑定到一个个变量然后在对model赋值,只需要把model加入相应的action参数(这里不需要指定绑定数据的注解)
SpringMVC会自动进行数据转换并绑定到model对象上。
1. Account类
public class AccountModel { private String username; private String password;
... setter getter
}
2. controller
@RequestMapping(value="/modelautobind", method = {RequestMethod.GET})
public String modelAutoBind(HttpServletRequest request, Model model){ model.addAttribute("accountmodel", new AccountModel()); return "modelautobind"; } @RequestMapping(value="/modelautobind", method = {RequestMethod.POST}) public String modelAutoBind(HttpServletRequest request, Model model, AccountModel accountModel){ model.addAttribute("accountmodel", accountModel); return "modelautobindresult"; }
3.modelautobind.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form:form modelAttribute="accountmodel" method="post"> 用户名:<form:input path="username"/><br/> 密 码:<form:password path="password"/><br/> <input type="submit" value="Submit" /> </form:form> </body> </html>
4. modelautobindresult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 用户名:${accountmodel.username}<br/> 密 码:${accountmodel.password} </body> </html>
5.summary
@RequestParam的完整写法
@RequestParam(value=”username”, required=true, defaultValue=”AAA”)。
value表示要绑定请求中参数的名字;
required表示请求中是否必须有这个参数,默认为true这是如果请求中没有要绑定的参数则返回404;
defaultValue表示如果请求中指定的参数值为空时的默认值;
要绑定的参数如果是值类型必须要有值否则抛异常,如果是引用类型则默认为null(Boolean除外,默认为false);
在刚才添加的2个action中可以看到返回类型和以前的不一样了由ModelAndView变成了String,
这是由于Spring MVC 提供Model、ModelMap、Map让我们可以直接添加渲染视图需要的模型数据,在返回时直接指定对应视图名称就可以了。
同时Map是继承于ModelMap的,而Model和ModelMap是继承于ExtendedModelMap的。
- springmvc 路径映射规则、数据绑定
- springmvc form多对象映射 数据绑定 多对象绑定
- springmvc form多对象映射 数据绑定 多对象绑定
- springMVC映射规则详解
- springMVC路径匹配规则
- springmvc url 路径映射
- springmvc 路径映射mapping
- SpringMVC中的请求映射规则
- SpringMVC路径匹配规则AntPathMatcher
- 浅谈 SpringMVC 数据绑定
- 浅谈 SpringMVC 数据绑定
- SpringMVC 表单数据绑定
- SpringMVC数据绑定使用指南
- 浅谈 SpringMVC 数据绑定
- SpringMVC数据绑定
- 浅谈 SpringMVC 数据绑定
- SpringMVC数据绑定
- springmvc数据绑定
- 实例说明optimize table在优化mysql时很重要
- VC++6.0中添加批量注释和取消批量注释快捷键
- Data structure of the experimental order of a: a row of fast row(learning quick sorting).
- 面试一:Context 的理解
- android实现计算器(慕课网视频教学)
- springmvc 路径映射规则、数据绑定
- python pip install 异常问题
- 【java】Collection常用操作
- appium+python+夜神模拟器+jenkins进行android端自动化测试(2)
- HDU-2476-String painter
- Scratch2.0编程-游戏制作-满屏飞的巫婆
- ORACLE SEQUENCE
- dwg与dxf文件格式的互换
- java读取配置文件 转载