网站大专,python整合网站开发技术,江阴网站网站建设,cocos游戏开发【知识要点】
前后端分离概念 前端开发不依赖与后端#xff0c;二者均可独立发展。二者责任与分工明确#xff0c;前端负责人机交互操作#xff0c;后者负责仅提供数据服务#xff0c;不再参与前端页面的跳转的控制。随着前端设备的多元化#xff0c;前后端分离开发已经成…【知识要点】
前后端分离概念 前端开发不依赖与后端二者均可独立发展。二者责任与分工明确前端负责人机交互操作后者负责仅提供数据服务不再参与前端页面的跳转的控制。随着前端设备的多元化前后端分离开发已经成为当前开发的主流模式。请求参数接收 后端对请求参数可以通过传统的HttpServletRequest对象传递的数据、session、cookie等数据的接收通过正常变量如String、Integer、实体对象进行接收、通过JSON接收数据。其中通过JSON接收数据时需要使用springmvc提供的注解符RequestBody通过JSON传递多个参数已经成为当前主流模式。注解符RequestParam 前后端参数传值时要求请求数据的变量名称和后端方法的行参名完全一致这是一种紧耦合的方式。双方名称不一致时使用这个注解符建立映射关系。restful风格的参数 在restful风格编程中要求使用路径占位传参在get请求中所传参数只有值没有名称需要使用PathVariable完成路径占位传参控制器方法的返回值 控制器方法返回值包括ModelAndView、String、Void和JSON四种类型其中ModelAndView、String涉及页面跳转不符合前后端分离的要求Void使用传统的HttpServletRespone返回数据不是主流的返回方式使用JSON返回数据是当前主流模式这种返回模式需要在方法上使用注解符ResponseBody如果整个控制器所有的方法均返回JSON格式的数据则可以简化为在控制器类上加RestController注解。
【实验目的】
掌握请求数据的接收掌握控制器方法的返回值
【实验内容】
请求参数的接收返回JSON格式数据
【实验步骤】
1. 实验环境搭建
1. 使用maven创建web工程demo4 2. 由于项目需要使用JSON格式的数据需要添加依赖包坐标如下所示
dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-core/artifactId version2.11.2/version
/dependency
dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version2.11.2/version
/dependency2. 参数绑定
1 使用HttpServletRequest对象接收参数代码如下
RequestBody
RequestMapping(verify1)
public String handle1(HttpServletRequest request){ MapString,String dataMap new HashMap(); dataMap.put(method,request.getMethod()); dataMap.put(queryString,request.getQueryString()); dataMap.put(url,request.getRequestURL().toString()); dataMap.put(params,request.getParameter(dataNo)); return dataMap
} 在request对象中还可以获取Cookie读取http请求字段等信息。
2. 使用变量接收数据请求参数名与方法中行参名一致代码如下
RequestMapping(verify2)
public void handle2(String name,Integer age) { System.out.println(参数name为name年龄为age);
} 3. 使用实体传参要求前端传递的Content-Type为application/x-www-form-urlencoded时可用实体类型接收参数要求请求中key与实体的属性名一致代码如下
RequestMapping(verify3)
public void handle2(UserVO user) { System.out.println(参数name为user.getName()年龄为user.getAge());
} 4 传递简单数据类型数组使用get方法params的参数名与方法中行参名一致代码如下
RequestMapping(verify6)
public void handle6(Integer[] ids){ String strIds[; for (Integer id:ids) { strIds strIds id.toString(),; } strIds strIds.substring(0,strIds.length()-1) ]; System.out.println(strIds);
} 5RequestParam注解符使用请求参数名与方法中的行参名不一致时这个注解符标注在参数前面建立请求参数名与方法形参的映射关系。如前端传递的参数为userName控制器方法行参名为name代码如下
RequestMapping(verify5)
public void handle5(RequestParam(userName) String name, Integer age){ System.out.println(参数name为name年龄为age);
} 6使用json传参要求前端传递的Content-Type为application/json时可用实体类型接收参数要求请求中key与实体的属性名一致此种传参数方式是传参的主流方式代码如下
RequestMapping(verify4)
public void handle4(RequestBody UserVO user) { System.out.println(参数name为user.getName()年龄为user.getAge());
} 7 路径占位传参Restful风格传递参数时使用{}占位符和PathVariable注解符。
/** 路径占位接收参数名称相同 */
GetMapping(/user/{id})
public String index(PathVariable Integer id) { System.out.println(id); return index;
} /** 路径占位接收参数名称不同 */
GetMapping(/user/{id})
public String index(PathVariable(id) Long userId) { System.out.println(userId); return index;
} 返回值
1注解符ResponseBody使用在方法上表示此方法返回json格式的数据代码如下
ResponseBody
RequestMapping(test06)
public UserVO handle6(){ UserVO user new UserVO(); user.setName(张小凡); user.setAge(18); return user;
} 2注解符RestController注解类上表示此控制器中所有的方法均返回json格式的数据方法上不再使用ResponseBody代码如下
RestController
RequestMapping(restful)
public class RestfulController { GetMapping(/user/{id}) public String index(PathVariable Integer id) { System.out.println(id); return index; }
}