반응형

input_ckeditor4.jsp
0.00MB
CKEditorFileUploadController.java
0.00MB

 

 

ckEditor를 사용하면, 게시판 글쓰기 처럼 쉽게 사용할 수 있는 글쓰기 틀을 사용할 수 있다.

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script src="//cdn.ckeditor.com/4.22.1/full/ckeditor.js"></script>

<style type="text/css">
	#box{ 
	     width: 1000px;
	     height:auto; 
     } 

</style>

<script>


function send(f)
{ 
     var content = CKEDITOR.instances.content.getData();

}
</script>

</head>
<body>

<form>
<div id="box">
	<textarea  id="content" rows="10" cols="" ></textarea>
	<script>
		// Replace the <textarea id="editor1"> with a CKEditor
		// instance, using default configuration.
		CKEDITOR.replace( 'content', {
			  	versionCheck: false,	
			  	width:'100%',
			  	height:'400px',
				filebrowserUploadUrl: '${pageContext.request.contextPath}/ckeditorImageUpload.do'	
		});
			
		CKEDITOR.on('dialogDefinition', function( ev ){
	            var dialogName = ev.data.name;
	            var dialogDefinition = ev.data.definition;
	          
	            switch (dialogName) {
	                case 'image': //Image Properties dialog
			              //dialogDefinition.removeContents('info');
			              dialogDefinition.removeContents('Link');
			              dialogDefinition.removeContents('advanced');
			              break;
		    }
		 });
	</script>
</div>
</form>

</body>
</html>

 

 

 

 

Controller

 

package controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;


@Controller
public class CKEditorFileUploadController {

	
	@Autowired
	ServletContext application;
	
	
	@RequestMapping(value="/ckeditorImageUpload.do", method=RequestMethod.POST)
	@ResponseBody
	public String ckeditorImageUpload(
			HttpServletRequest request, 
			@RequestParam MultipartFile upload) throws     Exception {
			

        try{
 
            String fileName = upload.getOriginalFilename(); 
            
            //여러분들의 저장경로 설정
            String web_path = "/resources/upload/";
            
            
            String abs_path = application.getRealPath(web_path);
            //String uploadPath = "저장경로/" + fileName;//저장경로
            File f = new File(abs_path,fileName);
            //동일화일이 있는경우
            if(f.exists()){
            	 long time = System.currentTimeMillis();
            	 int index = fileName.lastIndexOf('.');
            	 String f_name = fileName.substring(0,index);
            	 String f_ext  = fileName.substring(index);
            	 
            	 fileName = String.format("%s_%d%s", f_name,time,f_ext);
            	 f = new File(abs_path,fileName);
            }
            //업로드화일 지정된 위치로 복사
            upload.transferTo(f);
 
            
            String url = request.getRequestURL().toString().replaceAll("/ckeditorImageUpload.do", "");
            //System.out.println(url);
            
            String fileUrl = url + web_path + fileName;//url경로
            
            // 서버로 파일 전송 후 이미지 정보 확인을 위해 filename, uploaded, fileUrl 정보를 
            // JSON 형식으로 응답해야함
            // {"filename": fileName , "uploaded": 1, "url" : fileUrl }
            
            JSONObject json = new JSONObject();
            json.put("filename", fileName);
            json.put("uploaded", 1);
            json.put("url", fileUrl);
            
            return json.toString();
            
            
 
        }catch(IOException e){
            e.printStackTrace();
        }
       
        return "";

	}
	

	
}

 

 

 

 

 

Spring Boot 연결

 

pom파일에 아래 항목을 복사해서 넣어주고, 위에 항목은 새로 위와 같이 jsonconverter를 생성해준다.

 

<!-- Spring 과 json과의  연동 설정 -->   
	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	    <property name="messageConverters">
	    <list>    
	        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
	            <property name="supportedMediaTypes">
	                <list>
	                    <value>text/html;charset=UTF-8</value>
	                    <value>application/json;charset=UTF-8</value>
	                </list>
	            </property>
	        </bean>            
	    </list>
	    </property>                        
	</bean>    	



<!-- JSON Converter  -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.9.2</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.9.2</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.9.2</version>
		</dependency>

 

 

 

 

Map을 JSON으로 받아주기

package controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestJSONConvertController {

	
	@RequestMapping("/map_to_json.do")
	@ResponseBody // 그대로 String으로 반환(view X)
	public Map<String, Object> map_to_json() {
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("name", "홍길동");
		map.put("age", 20);
		map.put("addr", "서울시 관악구 남부순환로 111");
		
		return map;
	}
	
}

 

 

map을 손쉽게 만들어준다.

 

 

 

VO 생성해주기

package vo;

public class PersonVo {

	String name;
	int	   age;
	String addr;
	
	public PersonVo() {
		// TODO Auto-generated constructor stub
	}
	
	public PersonVo(String name, int age, String addr) {
		super();
		this.name = name;
		this.age = age;
		this.addr = addr;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
}

 

 

 

VO 객체를 JSON으로 받아주기

Controller에 가볍게 추가

	@RequestMapping("/object_to_json.do")
	@ResponseBody // 그대로 String으로 반환(view X)
	public PersonVo object_to_json() {
	
		PersonVo p = new PersonVo("홍길동",20,"서울시 관악구 봉천동");
		
		return p;
	}

 

 

 

 

 

List를 JSON으로 받아주기

	@RequestMapping("/list_to_json.do")
	@ResponseBody // 그대로 String으로 반환(view X)
	public List<String> list_to_json() {
		
		List<String> sido_list = new ArrayList<String>();
		
		sido_list.add("서울");
		sido_list.add("경기");
		sido_list.add("인천");
		sido_list.add("강원");
		sido_list.add("제주");
		
		return sido_list;
	}

 

 

 

 

 

객체를 담은 List를 JSON으로 받아주기

	@RequestMapping("/person_list_to_json.do")
	@ResponseBody // 그대로 String으로 반환(view X)
	public List<PersonVo> person_list_to_json() {
		
		List<PersonVo> list = new ArrayList<PersonVo>();
		
		list.add(new PersonVo("일길동",21,"서울시 강남구 신사1동"));
		list.add(new PersonVo("이길동",22,"서울시 강남구 신사2동"));
		list.add(new PersonVo("삼길동",33,"서울시 강남구 신사3동"));
		list.add(new PersonVo("사길동",44,"서울시 강남구 신사4동"));
		list.add(new PersonVo("오길동",55,"서울시 강남구 신사5동"));
		
		return list;
	}

 

 

 

 

List와 배열의 크기, 검색 시간 등등 상세 정보를 여러개 Map에 담아서 JSON으로 넘겨주기

 

	@RequestMapping("/person_map_to_json.do")
	@ResponseBody // 그대로 String으로 반환(view X)
	public Map<String, Object> person_map_to_json() {
		
		List<PersonVo> list = new ArrayList<PersonVo>();
		
		list.add(new PersonVo("일길동",21,"서울시 강남구 신사1동"));
		list.add(new PersonVo("이길동",22,"서울시 강남구 신사2동"));
		list.add(new PersonVo("삼길동",33,"서울시 강남구 신사3동"));
		list.add(new PersonVo("사길동",44,"서울시 강남구 신사4동"));
		list.add(new PersonVo("오길동",55,"서울시 강남구 신사5동"));
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("size", list.size());
		map.put("search_date", new Date().toString()); // 검색한 시간
		map.put("data", list);
		
		return map;
	}

 

 

 

 

 

 

반응형