JSON
별도의 전방 및 후방 단부
백엔드 백엔드 배포, 인터페이스를 제공하는이 : 인터페이스를 제공
JSON
독립 배포 프런트 엔드, 백엔드 데이터의 렌더링을 :
이 JSON (JavaScript 객체 표기법, JS 객체 태그) 가벼운 데이터 교환 포맷 인
프로그래밍 언어의 완전히 독립적으로 사용하여 JSON 텍스트가 저장되고 데이터가 나타내는
간단하고 명확한 계층 메이크업 JSON 이상적인의 데이터 교환 언어
쉬운 읽기 및 쓰기, 또한 쉽게 기계가 분석하고 생성 할 수 있습니다. 그리고 효과적으로 네트워크 전송 효율을 향상
자바 스크립트 언어에서 모든 객체입니다. 따라서, 지원 자바 스크립트의 모든 유형이 같은 문자열, 숫자, 객체, 배열 등과 같이 JSON으로 표현 될 수있다.
- 목적은 쉼표로 구분 키 - 값 쌍 데이터이면
- 저장 개체 중괄호
- 저장 배열 광장 브래킷
JSON 키 - 값 쌍의 표현은 하나의 자바 스크립트 객체를 저장하는 방법, 또한 "자바 스크립트 객체, 키 / 값 쌍 조합 사설 키와 큰 따옴표 유사한"패키지, 콜론 : 파티션 한 후 다음 값 :
{"name": "Qinjiang"}
{"age": "3"}
{"sex": "男"}
JSON과 자바 스크립트 객체 사이의 관계
- JS 객체를 사용하여 문자 정보를 나타내는 JSON 자바 스크립트 객체의 문자열 표현은 본질적 문자열
var obj = {a: 'hello', b: 'world'}; //对象
var json = '{"a" : "Hello", "b": "world"}'; //JSON字符串
JSON과 자바 스크립트 객체 시스템 전환
- JSON.parse () 메소드를 사용하여 자바 스크립트 객체로 JSON 문자열을 달성하기 위해 :
var obj = JSON.parse('{"a": "hello, "b": "world"}'); //结果为 " "
- JSON.stringify () 메소드를 사용하여 자바 스크립트 객체 JSON 문자열에서 변환을 달성하기 위해 :
var json = JSON.stringify({a: 'hello', b: 'world'}); //结果为 ' '
테스트
<script type="text/javascript">
//编写一个JavaScript对象
var user = {
name : "张磊",
age : 3,
sex: "男"
};
//将js对象转换为JSON对象
var json = JSON.stringify(user);
console.log(json);
console.log("================");
//将JSON对象转换为JavaScript对象
var obj = JSON.parse(json);
console.log(obj)
</script>
컨트롤러는 JSON 데이터를 반환
- 잭슨은 이제 JSON에 대한 더 나은 분석 도구이어야한다
- 물론,이 같은 더 많은 도구보다 알리바바도 fastjson 등
- 우리는 또한 항아리 패키지를 사용하여 가져와야합니다, 여기에 잭슨을 사용
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
해결 왜곡 :
<!-- JSON乱码-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
@Controller
public class UserController {
@RequestMapping("/j1")
@ResponseBody //不会走视图解析器,直接返回一个字符串
public String json1() throws JsonProcessingException {
//jackson, ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//创建一个对象
User user = new User("张磊",22,"男");
String s = mapper.writeValueAsString(user);
return s;
}
}
빠른 JSON
fastjson.jar 알리가 자바 개발 패키지의 개발에 전념하고, 쉽게 자바 빈즈는 JSON의 문자열로 객체 변환 자바 빈즈를 달성하기 위해 개체를 변환 JSON의 목적을 달성 할 수 있으며, 문자열로 JSON 목적을 달성 JSON. 대부분의 전환을 달성하기 JSON 방법은 최종 결과의 실현은 동일하다.
의지
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
System.out.println("*******Java对象 转 JSON字符串*******");
String str1 = JSON.toJSONString(list);
System.out.println("JSON.toJSONString(list)==>"+str1);
String str2 = JSON.toJSONString(user1);
System.out.println("JSON.toJSONString(user1)==>"+str2);
System.out.println("\n****** JSON字符串 转 Java对象*******");
User jp_user1=JSON.parseObject(str2,User.class);
System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);
System.out.println("\n****** Java对象 转 JSON对象 ******");
JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);
System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));
System.out.println("\n****** JSON对象 转 Java对象 ******");
User to_java_user = JSON.toJavaObject(jsonObject1, User.class);
System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);
파일 업로드
준비
파일 업로드 프로젝트 개발은 springMVC 좋은 지원 파일 업로드 할 수 있습니다, 가장 일반적인 기능 중 하나이지만, 파일 업로드가 기본적으로 작동 처리 할 수 있도록 SpringMVC의 기본 컨텍스트는 MultipartResolver가 장착되어 있지 않습니다. 당신이 봄의 파일 업로드 기능을 사용하려면 맥락에서 MultipartResolver를 구성해야합니다.
원위 양식이 필요합니다 파일을 업로드하기 위해, 양식은 POST 방식으로 설정해야하며, 다중 / 폼 데이터에 enctype. 단이 경우, 브라우저는 이진 데이터로 서버에 파일을 선택하도록 사용자에게 보낼 것입니다;
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!--servlet-api导入高版本的-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!-- 文件上传-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"/>
<property name="maxUploadSize" value="10485760"/>
<property name="maxInMemorySize" value="40968"/>
</bean>
@RequestMapping("/upload")
public String fileUpload(@RequestParam("file") CommonsMultipartFile file , HttpServletRequest request) throws IOException {
//获取文件名 : file.getOriginalFilename();
String uploadFileName = file.getOriginalFilename();
//如果文件名为空,直接回到首页!
if ("".equals(uploadFileName)){
return "redirect:/index.jsp";
}
System.out.println("上传文件名 : "+uploadFileName);
//上传路径保存设置
String path = request.getServletContext().getRealPath("/upload");
//如果路径不存在,创建一个
File realPath = new File(path);
if (!realPath.exists()){
realPath.mkdir();
}
System.out.println("上传文件保存地址:"+realPath);
InputStream is = file.getInputStream(); //文件输入流
OutputStream os = new FileOutputStream(new File(realPath,uploadFileName)); //文件输出流
//读取写出
int len=0;
byte[] buffer = new byte[1024];
while ((len=is.read(buffer))!=-1){
os.write(buffer,0,len);
os.flush();
}
os.close();
is.close();
return "redirect:/index.jsp";
}
/*
* 采用file.Transto 来保存上传的文件
*/
@RequestMapping("/upload2")
public String fileUpload2(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException {
//上传路径保存设置
String path = request.getServletContext().getRealPath("/upload");
File realPath = new File(path);
if (!realPath.exists()){
realPath.mkdir();
}
//上传文件地址
System.out.println("上传文件保存地址:"+realPath);
//通过CommonsMultipartFile的方法直接写文件(注意这个时候)
file.transferTo(new File(realPath +"/"+ file.getOriginalFilename()));
return "redirect:/index.jsp";
}