Java---学习(5)
来源:互联网 发布:php namespace use 编辑:程序博客网 时间:2024/04/30 11:33
web中都有对接受页面请求参数和把后台信息显示的前台页面,也就是向前台页面传递参数,这一节我们看看spring MVC中怎样通过页面来传递参数,传递参数有哪些控制以及属性设置等。可以通过RequestParam,RequestMapping,URL模板对进行灵活设置
1.常规参数属性设置
常规参数接受我们只需要在Action中定义接受的参数变量名称,就可以获取URL中参数传递的值,也可以使用HttpServletRequest,从中获取参数值
- @RequestMapping(value=“Detail”)
- public String Detail(int id)
- {
- // id必须传值,而且必须是数字,负责会报异常 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail?id=2
- System.out.print(id);
- return “Detail”;
- }
- @RequestMapping(value=“Detail3”)
- public String Detail3(HttpServletRequest request)
- {
- // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail3?id=2
- System.out.print(request.getParameter(“id”));
- return “Detail3”;
- }
@RequestMapping(value="Detail") public String Detail(int id) { // id必须传值,而且必须是数字,负责会报异常 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail?id=2 System.out.print(id); return "Detail"; } @RequestMapping(value="Detail3") public String Detail3(HttpServletRequest request) { // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail3?id=2 System.out.print(request.getParameter("id")); return "Detail3"; }如果想把后台的数据显示到前台页面,我们可以使用Model ,和Map集合,就可以把后台值显示到前台页面
- @RequestMapping(value=“Detail2”)
- public String Detail2(int id,Model model)
- {
- // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail2?id=2
- System.out.print(id);
- model.addAttribute(”code”, “001”); //在后台通过Model属性赋值
- model.addAttribute(”name”, “可口可乐”);
- return “Detail2”;
- }
- @RequestMapping(value=“Detail4”)
- public String Detail4(int id,Map<String,String> map)
- {
- // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail4?id=2
- map.put(”code”, “123”);
- map.put(”name”, “可口可乐”);
- return “Detail4”;
- }
@RequestMapping(value="Detail2") public String Detail2(int id,Model model) { // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail2?id=2 System.out.print(id); model.addAttribute("code", "001"); //在后台通过Model属性赋值 model.addAttribute("name", "可口可乐"); return "Detail2"; } @RequestMapping(value="Detail4") public String Detail4(int id,Map<String,String> map) { // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail4?id=2 map.put("code", "123"); map.put("name", "可口可乐"); return "Detail4"; }前台页面获取
- <%@ 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>
- 编码 {code} </span></li><li class="alt"><span> 编码 {name}
- </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>编码 ${code} 编码 ${name}</body></html>以上代码中的接受参数为id,必须保证url中传值的参数名称为id,类型为整型,否则会报异常。如果想省略,怎么办,我们使用RequestParam进行控制
2.@RequestParam
使用RequestParam我们可以对url参数进行别名控制,属性设置,默认值设置等,还是上面的例子,代码我们改成如下
- @RequestMapping(value=“Detail”)
- public String Detail(@RequestParam(“skuid”) int id)
- {
- // 这样页面中的参数可以改为 skuid, 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail?skuid=2
- System.out.print(id);
- return “Detail”;
- }
- @RequestMapping(value=“Detail2”)
- public String Detail2(@RequestParam(value =“skuid”,required =false,defaultValue=“1”) int id,Model model)
- {
- //可以设置是URL中是否必须带参数,默认值,别名等
- // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail2?skuid=2
- System.out.print(id);
- model.addAttribute(”code”, “001”); //在后台通过Model属性赋值
- model.addAttribute(”name”, “可口可乐”);
- return “Detail2”;
- }
@RequestMapping(value="Detail") public String Detail(@RequestParam("skuid") int id) { // 这样页面中的参数可以改为 skuid, 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail?skuid=2 System.out.print(id); return "Detail"; } @RequestMapping(value="Detail2") public String Detail2(@RequestParam(value ="skuid",required =false,defaultValue="1") int id,Model model) { //可以设置是URL中是否必须带参数,默认值,别名等 // 页面URL格式如下,从URL中获取id, http://localhost:8092/springmvcfirst/Product/Detail2?skuid=2 System.out.print(id); model.addAttribute("code", "001"); //在后台通过Model属性赋值 model.addAttribute("name", "可口可乐"); return "Detail2"; }
3.@RequestMapping
@RequestMapping也可以直接设置参数,包括参数名称,值,请求方式等
- @RequestMapping(value=“ProductIndex”,params={“id=1”,“code”,“!name”},method={RequestMethod.GET})
- public String ProductIndex()
- {
- //页面url http://localhost:8092/springmvcfirst/Product/ProductIndex?id=1&code=001
- return “ProductIndex”;
- }
@RequestMapping(value="ProductIndex",params={"id=1","code","!name"},method={RequestMethod.GET}) public String ProductIndex() { //页面url http://localhost:8092/springmvcfirst/Product/ProductIndex?id=1&code=001 return "ProductIndex"; }
上面的action通过RequestMapping指定了请求方式必须为get,,, 参数id必须存在而且值为1,参数code必须存在,参数name必须不存在
RequestMapping的重载方法很多,可以去查资料,比如我们可以通过headers属性来控制请求头信息等
4.@PathVariable
通过@PathVariable我们可以动态设置URL请求模板的参数格式,对URL的格式做一些限制等。比如我们可以通过正则和通配符最URL做更深一步的控制。
- @Controller
- @RequestMapping(“/Product/{variable1}”)
- public class ProductController {
- @RequestMapping(value=“ViewDetailOne/{variable2}”)
- public String ViewDetailOne(@PathVariable String variable1, @PathVariable ( “variable2” ) int variable2)
- {
- //url格式 http://localhost:8092/springmvcfirst/Product/aa/ViewDetailOne/3
- System.out.print(variable1);
- System.out.print(variable2);
- return “ViewDetailOne”;
- }
- }
@Controller@RequestMapping("/Product/{variable1}")public class ProductController { @RequestMapping(value="ViewDetailOne/{variable2}") public String ViewDetailOne(@PathVariable String variable1, @PathVariable ( "variable2" ) int variable2) { //url格式 http://localhost:8092/springmvcfirst/Product/aa/ViewDetailOne/3 System.out.print(variable1); System.out.print(variable2); return "ViewDetailOne"; } }
- java学习(5)
- Java---学习(5)
- java学习笔记(5)
- java学习笔记(5)
- 【java】java学习(一)
- 【java】java学习(二)
- java学习-基础(5)(待学习)
- 学习Java的笔记(5)
- 学习Java的笔记(5)
- Java学习笔记18天---(5)
- Effective Java 学习笔记(5)
- Effective Java 学习笔记(5)
- Java IO学习笔记(JDK1.5)
- Java NIO学习5(通道Channel)
- Java学习笔记(5):图形程序设计
- 我的java学习日记(5)
- 黑马程序员 -- Java基础学习(5)
- 黑马程序员--java学习总结(5)
- redis安装
- Java---学习(4)
- Vue数组操作
- 南京霞浦厦门杭州旅游后记
- JAVA进阶----ThreadPoolExecutor机制
- Java---学习(5)
- 1009. 说反话 (20)
- Mongo数据格式及数据类型
- opencv环境配置
- 【刷题日记】向NOIP2017冲刺!
- HDU--1710--Binary Tree Traversals(二叉树遍历)
- Java---学习(6)
- 51nod 1086 背包问题V2 (巧妙dp,二进制)
- 538. Convert BST to Greater Tree