SSM 통합 학습

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";
}

추천

출처www.cnblogs.com/yfyyy/p/12433612.html