Spring MVC 前后台传值情况汇总
来源:互联网 发布:java 项目中使用log4j 编辑:程序博客网 时间:2024/06/08 07:36
一、前台通过$.ajax的GET请求传值
1.前端参数写在url中:
前台代码:
$.ajax({ type: 'GET', url: '/user/login?username=admin&password=admin', dataType: 'JSON', success: function (res) { $('#result').text(res); }, error: function () { $('#result').text('error!'); } });
后台代码:
@Controller@RequestMapping("/user")public class UserController { private static final Logger LOG = LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; @RequestMapping(value = "/login", method = {RequestMethod.GET}) @ResponseBody public boolean login(UserForm userForm) { LOG.info("username: " + userForm.getUsername() + ";password: " + userForm.getPassword()); Map<String, String> param = new HashMap<String, String>(); param.put("username", userForm.getUsername()); param.put("password", userForm.getPassword()); return userService.checkUserExists(param); }}
2.前台data参数使用$.param()函数对JS对象进行转化
$.ajax({ type: 'GET', url: '/user/login', dataType: 'JSON', data: $.param({ username: 'admin', password: 'admin' }), success: function (res) { $('#result').text(res); }, error: function () { $('#result').text('error!'); } });
后台同上,不过也可以使用如下
@RequestMapping(value = "/login", method = {RequestMethod.GET}) @ResponseBody public boolean login(String username, String password) { LOG.info("username: " + username + ";password: " + password); Map<String, String> param = new HashMap<String, String>(); param.put("username", username); param.put("password", password); return userService.checkUserExists(param); }
- 前台data参数直接传JS对象
$.ajax({ type: 'GET', url: '/user/login', dataType: 'JSON', data: { username: 'admin', password: 'admin' }, success: function (res) { $('#result').text(res); }, error: function () { $('#result').text('error!'); } });
后台同上,不过也可以使用如下:
@RequestMapping(value = "/login", method = {RequestMethod.GET}) @ResponseBody public boolean login(@RequestParam("username") String name, @RequestParam("password") String pass) { LOG.info("username: " + name + ";password: " + pass); Map<String, String> param = new HashMap<String, String>(); param.put("username", name); param.put("password", pass); return userService.checkUserExists(param); }
注意:经验证$.ajax使用GET请求时
1.前台data参数不能为JSON串,否则后台无法接收,报415错误;
2.后台如果使用封装的Entity接收参数,不可以加@RequestBody注解,否则接收的参数都为NULL;
一、前台通过$.ajax的POST请求传值
- 前台使用JS对象时
前端代码:
$.ajax({ type: 'POST', url: '/user/login', dataType: 'JSON', data: { username: 'admin', password: 'admin' }, success: function (res) { $('#result').text(res); }, error: function () { $('#result').text('error!'); } });
后端同一中的三种接收方式。
至此已经感觉够用了,但是考虑后端接收参数能否直接使用Map接收,那么可不必再转化为Map即可调用后台的mybatis,这就用到了用到了@RequestBody
2. 修改前台代码,后台用@RequestBody 转为Map接收
前台代码:
$.ajax({ type: 'POST', url: '/user/login', contentType: 'application/json', dataType: 'JSON', data: JSON.stringify({ username: 'admin', password: 'admin' }), success: function (res) { $('#result').text(res); }, error: function () { $('#result').text('error!'); } });
后台代码:
@RequestMapping(value = "/login", method = {RequestMethod.POST}) @ResponseBody public boolean login(@RequestBody Map<String, String> param) { return userService.checkUserExists(param); }
当然也可以这样了:
@RequestMapping(value = "/login", method = {RequestMethod.POST}) @ResponseBody public boolean login(@RequestBody UserForm userForm) { LOG.info("username: " + userForm.getUsername() + ";password: " + userForm.getPassword()); Map<String, String> param = new HashMap<String, String>(); param.put("username", userForm.getUsername()); param.put("password", userForm.getPassword()); return userService.checkUserExists(param); }
目前想到的就是这么多的方式,尤其要注意$.ajax的POST请求时,如果后台使用@RequestBody接收,前台需要添加contentType: ‘application/json’,并且data要发送的是JSON串,JS对象会报错误
0 0
- Spring MVC 前后台传值情况汇总
- Spring MVC 前后台传值
- Spring MVC之——前后台传值
- mvc前后台传值
- spring mvc知识点汇总
- Spring MVC注解汇总
- Spring MVC 知识汇总
- Spring MVC注解汇总
- Spring MVC 前后台数据交互
- Spring MVC 前后台数据交互
- Spring mvc Ajax前后台交互
- spring MVC 前后台 映射关系
- Spring MVC前后台传递JSON
- spring mvc 前后台json交互问题
- spring mvc 常见问题解决方案汇总。
- Spring MVC关于ztree插件进行前后台交互
- 关于Spring MVC前后台框架的设计
- Spring MVC通过JSON实现前后台数据交互
- 分类讨论
- LightOJ 1138(求末尾零个数)
- SDUTACM 数据结构实验之排序七:选课名单
- myeclipse集成maven
- leetcode 168 Excel Sheet Column Title C++
- Spring MVC 前后台传值情况汇总
- 杭电-1498 50 years, 50 colors(二分匹配)
- 状态不好
- CmFree
- 暑期dp46道(42)--HDOJ 1789 Doing Homework again 贪心
- 4.2KNN算法实例2--python机器学习
- 使用GSON抛出com.google.gson.stream.MalformedJsonException异常
- HDU1867:A + B for you again【kmp】
- UVA 11722 Joining with Friend