springMVC 学习 五 参数传递(包括restful风格)
(一)SpringMVC Controller接受参数的方式
(1) 前端传递的参数,在springMVC的controller中使用基本数据类型或者String 类型进行接受
在前端有一个form表单,需要传递姓名和年龄,在controller可以采用基本数据类型或者String进行接受,
<form action="demo" method="post">
名字:<input type="text" name="name"/><br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="提交"/><br/>
</form>
此时值需要接受参数的名称和传递的参数名称一致就行
fun01(String name,int age)
@Controller
public class DemoController { @RequestMapping("/demo")
public String fun01(String name,int age) {//字符串的返回值代表代表要跳转的页面
System.out.println(name);
System.out.println(age);
System.out.println("指定了demo");
//返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
//相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
//"demo/main.jsp"
return "/main.jsp";
}
}
(2) 前端传递的参数,在springMVC的controller中使用 类类型进行接受(走get/set方法)
此时需要 类类型的属性名称与前端传递参数的参数名称一致
@Controller
public class DemoController { @RequestMapping("/demo")
public String fun01(People peo) {//字符串的返回值代表代表要跳转的页面 System.out.println(peo.getName());
System.out.println(peo.getAge());
System.out.println("指定了demo");
//返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
//相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
//"demo/main.jsp" return "/main.jsp";
}
}
(3) 前端传递的参数,在springMVC的controller中使用HttpServletRequest进行接受
@Controller
public class DemoController { @RequestMapping("/demo")
public String fun01(HttpServletRequest req) {//字符串的返回值代表代表要跳转的页面 System.out.println("指定了demo");
//返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
//相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
//"demo/main.jsp"
System.out.println(req.getParameter("name"));
System.out.println(req.getParameter("age"));
return "/main.jsp";
}
}
(4) 前端传递的参数,在springMVC的controller中 同时使用上述三中方法进行接受
@Controller
public class DemoController { @RequestMapping("/demo")
public String fun01(People peo, String name,int age,HttpServletRequest req) {//字符串的返回值代表代表要跳转的页面
System.out.println(name);
System.out.println(age);
System.out.println(peo.getName());
System.out.println(peo.getAge());
System.out.println("指定了demo");
//返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
//相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
//"demo/main.jsp"
System.out.println(req.getParameter("name"));
System.out.println(req.getParameter("age"));
return "/main.jsp";
}
}
(二)@RequestParam()注解
(1) 如果请求参数名和方法参数名不对,使用value属性
@RequestMapping("demo")
public String demo(@RequestParam(value="name1") String name,@RequestParam(value="age1")int age)
{
System.out.println("执行 demo"+" "+name+""+age);
return "main.jsp";
}
(2)如果接受参数是基本类型,且接受参数类型与null无法进行兼容,此时可以采用包装类型或者采用默认值,使用defaultValue属性
@RequestMapping("page")
public String page(@RequestParam(defaultValue="2")int pageSize,@RequestParam(defaultValue="1") int pageNumber){
System.out.println(pageSize+" "+pageNumber);
return "main.jsp";
}
(3)如果强制要求必须有某个参数,使用required属性
@RequestMapping("demo2")
public String demo2(@RequestParam(required=true) String name){
System.out.println("name 是 SQL 的查询条件,必须要传递 name 参数"+name);
return "main.jsp";
}
(4)传递List类型的参数 使用value属性,因为在前端传递过来的list都会放入一个参数名称中,只要把这个参数名称和一个List类型变量进行绑定
@RequestMapping("demo5")
public String demo5(String name,int age,@RequestParam("hover")List<String> abc){
System.out.println(name+" "+age+" "+abc);
return "main.jsp";
}
(5)请求参数中对象.属性格式
jsp中的代码如下
<input type="text" name="peo.name"/>
<input type="text" name="peo.age"/>
此时需要创建一个类,类中要有一个属性是peo,且这个属性的类型必须是包含name,age这个两个属性的类,两个类都要有get/set方法,
Demo类型
public class Demo {
private People peo; public People getPeo() {
return peo;
} public void setPeo(People peo) {
this.peo = peo;
} @Override
public String toString() {
return "Demo [peo=" + peo + "]";
} }
People 类型
public class People {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "People [name=" + name + ", age=" + age + "]";
} }
controller 的接受参数
@RequestMapping("demo6")
public String demo6(Demo demo){
System.out.println(demo);
return "main.jsp";
}
(三) restful风格的参数
首先请求参数的格式一定的要求,老的方式是<a href="demo8?name=张三&age=23">跳转</a>,
而restful格式是:<a href="demo8/123/abc">跳转</a>
在控制器中:
在@RequestMapping 中一定要和请求格式对应
{名称} 中名称自定义名称
@PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找.
@RequestMapping("demo8/{id1}/{name}")
public String demo8(@PathVariable String name,@PathVariable("id1") int age){
System.out.println(name +" "+age);
return "/main.jsp";
}
springMVC 学习 五 参数传递(包括restful风格)的更多相关文章
- springMVC入门(七)------RESTFul风格的支持
简介 RESTful风格(Representational State Transfer),又叫表现层状态转移,是一种开发理念,也是对HTTP协议很好的诠释 主要理念是将互联网中的网页.数据.服务都视 ...
- (转)SpringMVC学习(五)——SpringMVC的参数绑定
http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...
- ElasticSearch7.3学习(二十)----采用restful风格查询详解
1.Query DSL入门 1.1 DSL DSL:Domain Specified Language,特定领域的语言.es特有的搜索语言,可在请求体中携带搜索条件,功能强大. 查询全部 GET /b ...
- springMVC学习五(转发和乱码)
摘录http://www.cnblogs.com/xdp-gacl/p/3798347.html http://www.cnblogs.com/xdp-gacl/p/3798347.html 四个很重 ...
- Restful风格API接口开发springMVC篇
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
- (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...
- restful风格接口和spring的运用
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
- [五]SpringMvc学习-Restful风格实现
1.Restful风格的资源URL 无后缀资源的访问(csdn用法) 2.SpringMvc对Rest风格的支持 2.1将 /*.do改为/ 2.2 3.@PathVariable获取Url变量 @R ...
- SpringMVC 学习笔记(五) 基于RESTful的CRUD
1.1. 概述 当提交的表单带有_method字段时,通过HiddenHttpMethodFilter 将 POST 请求转换成 DELETE.PUT请求,加上@PathVariable注解从而实现 ...
随机推荐
- 无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确
安装好后,登录后台提示 无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确 检查mysql是否启动netstat -lnpt是否有3306端口? 一 有A 检查/www/wdlinu ...
- 全国高校绿色计算大赛 预赛第二阶段(Python)第1关:统计分数的麻烦
挑战任务 “绿盟杯”比赛过后,赛事承办方的各位工作人员们就开始分头统计各个参赛队伍和同学的成绩了.赛事规模很大,有10000个队伍参加.经过工作人员认真负责的统计,本来已经统计好了这一万个队伍的分数和 ...
- @RequestMapping使用须知
----------------------siwuxie095 @RequestMapping 使用须知 使用 @RequestMapping 注解映射请求路径 即 你可以使用 @RequestMa ...
- QT信号与槽
参考: 简单例子: http://www.cnblogs.com/MuyouSome/p/3515941.html 基本了解: http://blog.csdn.net/harbinzju/artic ...
- 洛谷 P1342 请柬(SPFA)
题目描述 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被雇来分发这些请 ...
- f5 Syslog管理
1.本地log保存7天.可输出至syslog服务器 local traffic 对应ltm
- eclipse Mars4.5.2安装fatjar
试了在eclipse下添加plugins的方法,但是并没有生效 最后看了一篇博客@参考博客 原文转载: 首先声明,eclipse luna 和mars 楼主亲测可用. .安装Eclipse2.0版本的 ...
- ubuntu下sudo apt-get update Sources 404 Not Found 解决方法
刚安装了ubuntu之后的主要安装命令无非就是apt-get install了,然而很多都在这里就夭折了. 使用apt-get install ***需要先执行apt-get update 加载文件包 ...
- 26-算法训练 Torry的困惑(基本型) 素数打表
算法训练 Torry的困惑(基本型) 时间限制:1.0s 内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.To ...
- go语言中常用的文件和文件夹操作函数
package main; import ( "os" "log" "time" "fmt" ) //一些常用的文件操作 ...