반응형
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;
}
반응형
'SpringBoot↗' 카테고리의 다른 글
Spring)AOP (0) | 2024.08.06 |
---|---|
Spring)Rest API로 CRUD 정보 처리하기 (0) | 2024.08.05 |
★(@Scheduled) 실시간으로 거래 시간이 마감되었는지 check 해주는 로직 (실시간 데이터 갱신) (0) | 2024.08.02 |
게시판4(게시글 번호 정리/ 댓글 Paging 기능 / 댓글 삭제 기능) (1) | 2024.07.25 |
Dao에서 SqlSession 받아오기 (Setter 수동, Constructor 수동, Auto 완전자동) (0) | 2024.07.24 |