
本文共 7811 字,大约阅读时间需要 26 分钟。
一.获取请求参数
客户端获取参数格式: name=xx&age=xxx
服务端获取参数:有时候需要进行封装,而spring mvc 可以接收的参数为
1.基本数据类型
2.pojo类型参数
3.数组类型参数
4.集合类型参数
二.获取参数案例
2.1 获取基本参数
1.controller代码
/** * @author controller中业务方法的参数名要和请求参数的名称一致,参数值灰自动映射匹配 * @description * @date 2021/1/10 22:09 * @param * * @return void */ @RequestMapping("/bike") @ResponseBody public String bike(String name,int age){ System.out.println("获取的参数name:"+name+" age:"+age); String result=name+">>"+age; return result; }
2.页面访问
2.2 获取pojo的参数
注意:jQuery中,$.ajax()默认发送的参数类型及编码为:application/x-www-form-urlcoded
,而@RequestBody
处理的参数类型及编码为:aplication/json;
在前端提交的数据类型:contentType设置为aplication/json;则controller的通过javabean的属性,则无法获取参数的值。
1.controllerdiam
/** * @author liujianfu * @description controller中业务方法的pojo参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike2") @ResponseBody public String bike2(User user){ System.out.println("获取的参数name:"+user.getUserName()+" age:"+user.getAge()); String result=user.getUserName()+">>"+user.getAge(); return result; }
2.userbean:
package com.ljf.spring.mvc.demo.bean;/** * @ClassName: User * @Description: TODO * @Author: liujianfu * @Date: 2021/01/10 17:26:08 * @Version: V1.0 **/public class User { private String userName; private int age; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
3.页面访问
2.3 获取数组的参数
1.controller
/** * @author liujianfu * @description controller中业务方法的pojo参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike3") @ResponseBody public String bike3(String [] strArray){ System.out.println("获取的参数name:"+strArray[0]+" age:"+strArray[1]); String result=strArray[0]+">>"+strArray[1]; return result; }
2.页面访问
2.4 获取结合的参数
1.controller
@RequestMapping("/bike4") public String bike4(){ return "bike"; }
/** * @author liujianfu * @description controller中业务方法的集合参数获取,要将集合参数封装到一个pojo中才可以 * 参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike5") @ResponseBody public String bike5(Vo v){ System.out.println("v:"+v); List<User> userList= v.getUserList(); for(User u:userList){ System.out.println("user:"+u.getUserName()); } return "ok"; }
2.vobean
package com.ljf.spring.mvc.demo.bean;import java.util.List;/** * @ClassName: Vo * @Description: TODO * @Author: liujianfu * @Date: 2021/01/10 22:55:01 * @Version: V1.0 **/public class Vo { private List<User> userList; public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } @Override public String toString() { return "Vo{" + "userList=" + userList + '}'; }}
3.jsp页面
<%-- Created by IntelliJ IDEA. User: jurfl Date: 2021/1/10 Time: 22:57 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body><form action="${pageContext.request.contextPath}/bike5" method="post"> <input type="text" name="userList[0].userName"/><br> <input type="text" name="userList[0].age"/><br> <input type="text" name="userList[1].userName"/><br> <input type="text" name="userList[1].age"/><br> <input type="submit" value="提交"></form></body></html>
4.页面访问
2.5 使用@RequestBody获取ajax的json串
当使用ajax时,可以指定contentType为json时,那么方法参数位置使用@RequestBody 可以直接接收集合数据而无需要 使用pojo进行包装。
1.controller层
/** * @author liujianfu * @description controller中业务方法的集合参数获取,要将集合参数封装到一个pojo中才可以 * 参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike6") public String bike6(){ System.out.println("controller6:"); return "ajax"; } /** * @author liujianfu * @description controller中业务方法的集合参数获取,要将集合参数封装到一个pojo中才可以 * 参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike7") @ResponseBody public String bike7(@RequestBody List<User> userList){ for(User u:userList){ System.out.println("user:"+u.getUserName()); } return "ok"; }
2.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title> <script src="${pageContext.request.contextPath}/js/jquery.min.js"></script> <script> var userList=new Array(); userList.push({userName:"beijing",age:34}); userList.push({userName:"shanghai",age:89}); $.ajax({ type:"post", url:"${pageContext.request.contextPath}/bike7", data:JSON.stringify(userList), contentType:"application/json;charset=utf-8", success:function(result){ alert(result); } }) </script></head><body></body></html>
3.配置静态资源的释放器
在spring-mvc.xml文件中配置
<mvc:resources mapping="/js/**" location="/js/"></mvc:resources> <mvc:resources mapping="/images/**" location="/images/"></mvc:resources> <mvc:resources mapping="/css/**" location="/css/"></mvc:resources>
4.启动服务进行访问
可以看到,控制台打印输出controller层中输出的ajax页面提交的json数据
2.6 使用@RequestParam 注解获取参数
参数绑定注解@requestParam* value :与请求参数名称* required: 此在制定的请求参数是否必须包括,默认true,提交参数如果没有则报错* defaultvalue 当没有制定请求参数时,则使用制定的默认值赋值。
1.controller层代码
/** * @author liujianfu * @description 参数绑定注解@requestParam * value :与请求参数名称 * required: 此在制定的请求参数是否必须包括,默认true,提交参数如果没有则报错 * defaultvalue 当没有制定请求参数时,则使用制定的默认值赋值。 * 参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike8") @ResponseBody public String bike8(@RequestParam(value="name",required = false,defaultValue = "ljf") String username){ System.out.println("username:"+username); return "ok"; }
2.重启服务,访问
2.7 使用Restful的风格获取参数
restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件,用户客户端月服务端交互,更加简洁,易于实现缓存机制。
Restful风格的请求是使用“url+请求方式”,表示一次请求目的,http的4个表示方式:
1get :获取资源 如 /user/1 GET: 得到id=1的user
2.post: 新建资源 如 /user/ 新增user
3.put :用户更新资源 如: /user/1 更新id=1 的user
4.delete :用于删除资源 如: /user/1 删除id=1的user
在springMvc中可以使用站位符,进行参数绑定,地址/user/1可以写成/user/{id},占位符{id}对应的就是1的值,在业务方法中可以使用@PathVariable注解进行占位符的匹配获取工作。
1.controller代码
/** * @author liujianfu * @description 参数绑定注解@requestParam * value :与请求参数名称 * required: 此在制定的请求参数是否必须包括,默认true,提交参数如果没有则报错 * defaultvalue 当没有制定请求参数时,则使用制定的默认值赋值。 * 参数属性名与请求参数名称一致,参数值会自动映射匹配 * @date 2021/1/10 22:14 * @param * @return */ @RequestMapping("/bike9/{pname}") @ResponseBody public String bike9(@PathVariable(value="pname",required = false) String username){ System.out.println("username:"+username); return "ok"; }
2.页面访问
2.8 使用原始HttpservletReuest,reponse,session对象获取参数
1.controller
/** * @param * @return */ @RequestMapping("/bike11") @ResponseBody public String bike11(HttpServletRequest request, HttpServletResponse response, HttpSession session){ System.out.println("request:"+request); System.out.println("reponse:"+response); System.out.println("session:"+session); String s=request+" "+response+" "+session; return s; }
2.页面访问
发表评论
最新留言
关于作者
